From 20b04db767c1e033e348302a192bfac524668617 Mon Sep 17 00:00:00 2001
From: Antoine Nguyen
Date: Wed, 29 Oct 2014 20:17:22 +0100
Subject: [PATCH] Allow per-domain learning.
see #622
---
modoboa/extensions/amavis/app_settings.py | 35 +-
modoboa/extensions/amavis/forms.py | 40 +-
modoboa/extensions/amavis/lib.py | 101 +++-
modoboa/extensions/amavis/sql_connector.py | 14 +-
.../amavis/static/amavis/js/quarantine.js | 111 +++-
.../amavis/templates/amavis/index.html | 6 +-
.../amavis/templatetags/amavis_tags.py | 12 +-
modoboa/extensions/amavis/urls.py | 1 +
modoboa/extensions/amavis/views.py | 79 ++-
modoboa/lib/templatetags/lib_tags.py | 4 +-
modoboa/locale/cs_CZ/LC_MESSAGES/django.po | 297 +++++----
modoboa/locale/de/LC_MESSAGES/django.po | 562 ++++++++++++------
modoboa/locale/en/LC_MESSAGES/django.po | 290 +++++----
modoboa/locale/es/LC_MESSAGES/django.po | 296 +++++----
modoboa/locale/fr/LC_MESSAGES/django.po | 298 ++++++----
modoboa/locale/it/LC_MESSAGES/django.po | 294 +++++----
modoboa/locale/nl_NL/LC_MESSAGES/django.po | 556 +++++++++++------
modoboa/locale/pt_PT/LC_MESSAGES/django.po | 294 +++++----
modoboa/locale/ru/LC_MESSAGES/django.po | 295 +++++----
modoboa/locale/sv/LC_MESSAGES/django.po | 296 +++++----
20 files changed, 2628 insertions(+), 1253 deletions(-)
diff --git a/modoboa/extensions/amavis/app_settings.py b/modoboa/extensions/amavis/app_settings.py
index bb0874caa..20d57542c 100644
--- a/modoboa/extensions/amavis/app_settings.py
+++ b/modoboa/extensions/amavis/app_settings.py
@@ -6,6 +6,9 @@ from modoboa.lib.formutils import SeparatorField, YesNoField, InlineRadioSelect
class ParametersForm(AdminParametersForm):
+
+ """Extension settings."""
+
app = "amavis"
qsettings_sep = SeparatorField(label=_("Quarantine settings"))
@@ -21,7 +24,8 @@ class ParametersForm(AdminParametersForm):
released_msgs_cleanup = YesNoField(
label=_("Remove released messages"),
initial="no",
- help_text=_("Remove messages marked as released while cleaning up the database")
+ help_text=_("Remove messages marked as released while cleaning up "
+ "the database")
)
am_pdp_mode = forms.ChoiceField(
@@ -80,7 +84,7 @@ class ParametersForm(AdminParametersForm):
label=_("Enable manual learning"),
initial="yes",
help_text=_(
- "Allow users to manually train Spamassassin about spam and non-spam"
+ "Allow super administrators to manually train Spamassassin"
)
)
@@ -88,7 +92,7 @@ class ParametersForm(AdminParametersForm):
label=_("Is Spamassassin local?"),
initial="yes",
help_text=_(
- "Tell if spamassassin is running on the same server than modoboa"
+ "Tell if Spamassassin is running on the same server than modoboa"
)
)
@@ -96,7 +100,7 @@ class ParametersForm(AdminParametersForm):
label=_("Default user"),
initial="amavis",
help_text=_(
- "Name of the user used to store default bayesian filter data"
+ "Name of the user owning the default bayesian database"
)
)
@@ -112,11 +116,22 @@ class ParametersForm(AdminParametersForm):
help_text=_("The TCP port spamd is listening on")
)
- user_manual_learning = YesNoField(
+ domain_level_learning = YesNoField(
+ label=_("Enable per-domain manual learning"),
+ initial="no",
+ help_text=_(
+ "Allow domain administrators to train Spamassassin "
+ "(within dedicated per-domain databases)"
+ )
+ )
+
+ user_level_learning = YesNoField(
label=_("Enable per-user manual learning"),
initial="no",
- help_text=_("Allow users to personally tell Spamassassin about "
- "spam and non-spam")
+ help_text=_(
+ "Allow simple users to personally train Spamassassin "
+ "(within a dedicated database)"
+ )
)
visibility_rules = {
@@ -128,11 +143,15 @@ class ParametersForm(AdminParametersForm):
"default_user": "manual_learning=yes",
"spamd_address": "sa_is_local=no",
"spamd_port": "sa_is_local=no",
- "user_manual_learning": "manual_learning=yes"
+ "domain_level_learning": "manual_learning=yes",
+ "user_level_learning": "manual_learning=yes"
}
class UserSettings(UserParametersForm):
+
+ """Per-user settings."""
+
app = "amavis"
dsep = SeparatorField(label=_("Display"))
diff --git a/modoboa/extensions/amavis/forms.py b/modoboa/extensions/amavis/forms.py
index 1f9a270ad..f0fa975a6 100644
--- a/modoboa/extensions/amavis/forms.py
+++ b/modoboa/extensions/amavis/forms.py
@@ -1,7 +1,14 @@
# coding: utf-8
+"""
+Amavis forms.
+"""
+
from django import forms
+from django.utils.translation import ugettext as _
+
+from modoboa.lib import parameters
from modoboa.lib.formutils import InlineRadioSelect
-from modoboa.extensions.amavis.models import Policy, Users
+from .models import Policy, Users
class DomainPolicyForm(forms.ModelForm):
@@ -52,3 +59,34 @@ class DomainPolicyForm(forms.ModelForm):
u.policy = policy
policy.save()
return policy
+
+
+class LearningRecipientForm(forms.Form):
+
+ """A form to select the recipient of a learning request."""
+
+ recipient = forms.ChoiceField(
+ label=None, choices=[]
+ )
+ ltype = forms.ChoiceField(
+ label="", choices=[("spam", "spam"), ("ham", "ham")],
+ widget=forms.widgets.HiddenInput
+ )
+ selection = forms.CharField(
+ label="", widget=forms.widgets.HiddenInput)
+
+ def __init__(self, user, *args, **kwargs):
+ """Constructor."""
+ super(LearningRecipientForm, self).__init__(*args, **kwargs)
+ choices = []
+ if user.group == "SuperAdmins":
+ choices.append(("global", _("Global database")))
+ domain_level_learning = parameters.get_admin(
+ "DOMAIN_LEVEL_LEARNING") == "yes"
+ user_level_learning = parameters.get_admin(
+ "USER_LEVEL_LEARNING") == "yes"
+ if domain_level_learning:
+ choices.append(("domain", _("Domain's database")))
+ if user_level_learning:
+ choices.append(("user", _("User's database")))
+ self.fields["recipient"].choices = choices
diff --git a/modoboa/extensions/amavis/lib.py b/modoboa/extensions/amavis/lib.py
index 163682de3..9233fa94f 100644
--- a/modoboa/extensions/amavis/lib.py
+++ b/modoboa/extensions/amavis/lib.py
@@ -9,11 +9,13 @@ import struct
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
+from modoboa.extensions.admin.models import Mailbox, Alias
from modoboa.lib import parameters
+from modoboa.lib.emailutils import split_mailbox
from modoboa.lib.exceptions import InternalError
from modoboa.lib.sysutils import exec_cmd
from modoboa.lib.webutils import NavigationParameters
-from modoboa.extensions.amavis.models import Users, Policy
+from .models import Users, Policy
def selfservice(ssfunc=None):
@@ -88,16 +90,18 @@ class SpamassassinClient(object):
"""A stupid spamassassin client."""
- def __init__(self, user):
+ def __init__(self, user, recipient_db):
"""Constructor."""
self._sa_is_local = parameters.get_admin("SA_IS_LOCAL")
+ self._default_username = parameters.get_admin("DEFAULT_USER")
+ self._recipient_db = recipient_db
+ self._setup_cache = {}
if user.group == "SimpleUsers":
- user_manual_learning = parameters.get_admin("USER_MANUAL_LEARNING")
- if user_manual_learning == "yes":
+ user_level_learning = parameters.get_admin("USER_LEVEL_LEARNING")
+ if user_level_learning == "yes":
self._username = user.email
else:
- self._username = parameters.get_admin("DEFAULT_USER")
- setup_manual_learning(user)
+ self._username = None
self.error = None
if self._sa_is_local == "yes":
self._learn_cmd = "sa-learn --{0} --no-sync -u {1}"
@@ -112,22 +116,58 @@ class SpamassassinClient(object):
self._learn_cmd_kwargs = {}
self._expected_exit_codes = [5, 6]
- def _learn(self, msg, mtype):
+ def _get_mailbox_from_rcpt(self, rcpt):
+ """Retrieve a mailbox from a recipient address."""
+ local_part, domname = split_mailbox(rcpt)
+ try:
+ mailbox = Mailbox.objects.select_related("domain").get(
+ address=local_part, domain__name=domname)
+ except Mailbox.DoesNotExist:
+ try:
+ alias = Alias.objects.select_related("domain").get(
+ address=local_part, domain__name=domname)
+ except Alias.DoesNotExist:
+ raise InternalError(_("No recipient found"))
+ if alias.type != "alias":
+ return None
+ mailbox = alias.mboxes.all()[0]
+ return mailbox
+
+ def _learn(self, rcpt, msg, mtype):
"""Internal method to call the learning command."""
- cmd = self._learn_cmd.format(mtype, self._username)
+ if self._username is None:
+ if self._recipient_db == "global":
+ username = self._default_username
+ else:
+ mbox = self._get_mailbox_from_rcpt(rcpt)
+ if mbox is None:
+ username = self._default_username
+ if self._recipient_db == "domain":
+ username = mbox.domain.name
+ if username not in self._setup_cache and \
+ setup_manual_learning_for_domain(mbox.domain):
+ self._setup_cache[username] = True
+ else:
+ username = mbox.full_address
+ if username not in self._setup_cache and \
+ setup_manual_learning_for_mbox(mbox):
+ self._setup_cache[username] = True
+ else:
+ username = self._username
+ cmd = self._learn_cmd.format(mtype, username)
code, output = exec_cmd(cmd, pinput=msg, **self._learn_cmd_kwargs)
if code in self._expected_exit_codes:
return True
self.error = output
return False
- def learn_spam(self, msg):
+ def learn_spam(self, rcpt, msg):
"""Learn new spam."""
- return self._learn(msg, "spam")
+ return self._learn(rcpt, msg, "spam")
- def learn_ham(self, msg):
+ def learn_ham(self, rcpt, msg):
"""Learn new ham."""
- return self._learn(msg, "ham")
+ return self._learn(rcpt, msg, "ham")
def done(self):
"""Call this method at the end of the processing."""
@@ -246,21 +286,40 @@ def manual_learning_enabled(user):
:return: True if learning is enabled, False otherwise.
"""
manual_learning = parameters.get_admin("MANUAL_LEARNING") == "yes"
- if manual_learning and user.group == "SimpleUsers":
- manual_learning = parameters.get_admin("USER_MANUAL_LEARNING") == "yes"
+ if manual_learning:
+ domain_level_learning = parameters.get_admin(
+ "DOMAIN_LEVEL_LEARNING") == "yes"
+ user_level_learning = parameters.get_admin(
+ "USER_LEVEL_LEARNING") == "yes"
+ if user.has_perm("admin.view_domains"):
+ manual_learning = domain_level_learning or user_level_learning
+ else:
+ manual_learning = user_level_learning
return manual_learning
-def setup_manual_learning(user):
+def setup_manual_learning_for_domain(domain):
+ """Setup manual learning if necessary.
+
+ :return: True if learning has been setup, False otherwise
+ """
+ if Policy.objects.filter(sa_username=domain.name).count():
+ return False
+ policy = Policy.objects.get(policy_name=domain.name)
+ policy.sa_username = domain.name
+ policy.save()
+ return True
+
+
+def setup_manual_learning_for_mbox(mbox):
"""Setup manual learning if necessary.
:return: True if learning has been setup, False otherwise
"""
result = False
- if user.group == "SimpleUsers":
- if not Policy.objects.exists(email=user.email):
- policy = create_user_and_policy(user.email)
- for alias in user.mailbox_set.all()[0].alias_addresses:
- create_user_and_use_policy(alias.full_address, policy)
- result = True
+ if not Policy.objects.filter(policy_name=mbox.full_address).exists():
+ policy = create_user_and_policy(mbox.full_address)
+ for alias in mbox.alias_addresses:
+ create_user_and_use_policy(alias, policy)
+ result = True
return result
diff --git a/modoboa/extensions/amavis/sql_connector.py b/modoboa/extensions/amavis/sql_connector.py
index 026483d31..2e8f4cab8 100644
--- a/modoboa/extensions/amavis/sql_connector.py
+++ b/modoboa/extensions/amavis/sql_connector.py
@@ -100,6 +100,7 @@ class SQLconnector(object):
criteria = "from_addr,subject,to"
search_flt = None
for crit in criteria.split(","):
+ print crit
if crit == "from_addr":
nfilter = Q(mail__from_addr__contains=pattern)
elif crit == "subject":
@@ -120,7 +121,7 @@ class SQLconnector(object):
mail__in=Quarantine.objects.filter(chunk_ind=1).values("mail_id")
)
- messages = Msgrcpt.objects.select_related().filter(flt)
+ messages = Msgrcpt.objects.select_related("mail", "rid").filter(flt)
messages = self._apply_extra_select_filters(messages)
return messages
@@ -220,6 +221,11 @@ class PgSQLconnector(SQLconnector):
Make use of ``QuerySet.extra`` and postgres ``convert_from``
function to let the quarantine manager work as expected !
+
+ The T4 alias is not a random choice. The generated query was
+ dumped to found it. Be careful since it can changes with
+ future Django versions...
+
"""
def _apply_msgrcpt_filters(self, flt):
@@ -244,11 +250,13 @@ class PgSQLconnector(SQLconnector):
def _apply_extra_search_filter(self, crit, pattern):
"""Apply search filters using additional criterias.
+
"""
if crit == "to":
self._where.append(
- "convert_from(maddr.email, 'UTF8') LIKE '%%%s%%'"
- % pattern)
+ "convert_from(maddr.email, 'UTF8') LIKE '%%{0}%%'".format(
+ pattern)
+ )
return None
def _apply_extra_select_filters(self, messages):
diff --git a/modoboa/extensions/amavis/static/amavis/js/quarantine.js b/modoboa/extensions/amavis/static/amavis/js/quarantine.js
index 905016fc9..83f1bcb34 100644
--- a/modoboa/extensions/amavis/static/amavis/js/quarantine.js
+++ b/modoboa/extensions/amavis/static/amavis/js/quarantine.js
@@ -163,14 +163,12 @@ Quarantine.prototype = {
this.navobj.update();
},
- _send_selection: function(e, name, message) {
- var $link = $(e.target);
-
- e.preventDefault();
- if (!this.htmltable.current_selection().length ||
- !confirm(message)) {
- return;
- }
+ /**
+ * Return the list of currently selected messages.
+ *
+ * @return {Array} - list of message IDs
+ */
+ get_current_selection: function() {
var selection = [];
this.htmltable.current_selection().each(function() {
@@ -183,12 +181,30 @@ Quarantine.prototype = {
selection.push($tr.attr("id"));
}
});
+ return selection;
+ },
+
+ _send_selection: function(e, name, message) {
+ var $link = $(e.target);
+
+ e.preventDefault();
+ if (!this.htmltable.current_selection().length ||
+ !confirm(message)) {
+ return;
+ }
+ var selection = this.get_current_selection();
+
$.ajax({
url: $link.attr("href"),
data: "action=" + name + "&selection=" + selection.join(","),
type: 'POST',
dataType: 'json'
- }).done($.proxy(this.action_cb, this));
+ }).done(
+ $.proxy(this.action_cb, this)
+ ).fail(function(jqxhr) {
+ var data = $.parseJSON(jqxhr.responseText);
+ $("body").notify("error", data.message);
+ });
},
release_selection: function(e) {
@@ -199,14 +215,45 @@ Quarantine.prototype = {
this._send_selection(e, "delete", gettext("Delete this selection?"));
},
+ /**
+ * Show the recipient selection form inside a modal box.
+ *
+ * @param {Object} evt - event object
+ * @param {string} ltype - learning type (spam or ham)
+ */
+ show_select_rcpt_form: function(evt, ltype, selection) {
+ if (selection === undefined) {
+ selection = this.get_current_selection();
+ }
+ var url = this.options.learning_recipient_url +
+ "?type=" + ltype + "&selection=" +
+ selection.join(",");
+ var $this = this;
+
+ modalbox(evt, null, url, function() {
+ $(".submit").on("click", function(evt) {
+ simple_ajax_form_post(evt, {
+ formid: "learning_recipient_form",
+ reload_on_success: false,
+ success_cb: $this.action_cb
+ });
+ });
+ });
+ },
+
/**
* Mark the current selection as spam.
*
* @param {Object} e - event object
*/
mark_selection_as_spam: function(e) {
- this._send_selection(
- e, "mark_as_spam", gettext("Mark this selection as spam?"));
+ if (this.options.check_learning_rcpt &&
+ this.htmltable.current_selection().length) {
+ this.show_select_rcpt_form(e, "spam");
+ } else {
+ this._send_selection(
+ e, "mark_as_spam", gettext("Mark this selection as spam?"));
+ }
},
/**
@@ -215,8 +262,13 @@ Quarantine.prototype = {
* @param {Object} e - event object
*/
mark_selection_as_ham: function(e) {
- this._send_selection(
- e, "mark_as_ham", gettext("Mark this selection as non-spam?"));
+ if (this.options.check_learning_rcpt &&
+ this.htmltable.current_selection().length) {
+ this.show_select_rcpt_form(e, "ham");
+ } else {
+ this._send_selection(
+ e, "mark_as_ham", gettext("Mark this selection as non-spam?"));
+ }
},
_send_action: function(e, message) {
@@ -231,10 +283,15 @@ Quarantine.prototype = {
dataType: 'json',
type: 'POST',
data: {rcpt: get_parameter_by_name($link.attr("href"), 'rcpt')}
- }).done($.proxy(this.action_cb, this));
+ }).done(
+ $.proxy(this.action_cb, this)
+ ).fail(function(jqxhr) {
+ var data = $.parseJSON(jqxhr.responseText);
+ $("body").notify("error", data.message);
+ });
},
- release : function(e) {
+ release : function(e) {
this._send_action(e, gettext("Release this message?"));
},
@@ -248,7 +305,14 @@ Quarantine.prototype = {
* @param {Object} e - event object
*/
mark_as_spam: function(e) {
- this._send_action(e, gettext("Mark as spam?"));
+ if (this.options.check_learning_rcpt) {
+ var $link = get_target(e, "a");
+ var selection = get_parameter_by_name($link.attr("href"), "rcpt") +
+ " " + $link.attr("data-mail-id");
+ this.show_select_rcpt_form(e, "spam", [selection]);
+ } else {
+ this._send_action(e, gettext("Mark as spam?"));
+ }
},
/**
@@ -257,7 +321,14 @@ Quarantine.prototype = {
* @param {Object} e - event object
*/
mark_as_ham: function(e) {
- this._send_action(e, gettext("Mark as non-spam?"));
+ if (this.options.check_learning_rcpt) {
+ var $link = get_target(e, "a");
+ var selection = get_parameter_by_name($link.attr("href"), "rcpt") +
+ " " + $link.attr("data-mail-id");
+ this.show_select_rcpt_form(e, "ham", [selection]);
+ } else {
+ this._send_action(e, gettext("Mark as non-spam?"));
+ }
},
show_rawheaders: function($mailcontent) {
@@ -336,12 +407,10 @@ Quarantine.prototype = {
},
action_cb: function(data) {
- if (data.status == "ok") {
+ if (data.url) {
this.navobj.parse_string(data.url, true).update(true);
- $("body").notify("success", data.respmsg, 2000);
- } else {
- $("body").notify("error", data.respmsg);
}
+ $("body").notify("success", data.message, 2000);
}
};
diff --git a/modoboa/extensions/amavis/templates/amavis/index.html b/modoboa/extensions/amavis/templates/amavis/index.html
index aceed6622..a80fefdc5 100644
--- a/modoboa/extensions/amavis/templates/amavis/index.html
+++ b/modoboa/extensions/amavis/templates/amavis/index.html
@@ -13,12 +13,14 @@
$(document).ready(function() {
var qm = new Quarantine({
deflocation: "{{ deflocation }}",
- defcallback: "{{ defcallback }}"
+ defcallback: "{{ defcallback }}",
+ check_learning_rcpt: {{ check_learning_rcpt }},
+ learning_recipient_url: "{% url 'modoboa.extensions.amavis.views.learning_recipient' %}"
});
});
{% endblock %}
{% block fixed_content %}
-
+
{% endblock %}
diff --git a/modoboa/extensions/amavis/templatetags/amavis_tags.py b/modoboa/extensions/amavis/templatetags/amavis_tags.py
index 7f644ebed..94525fd3a 100644
--- a/modoboa/extensions/amavis/templatetags/amavis_tags.py
+++ b/modoboa/extensions/amavis/templatetags/amavis_tags.py
@@ -36,7 +36,7 @@ def viewm_menu(user, mail_id, rcpt):
]
if manual_learning_enabled(user):
- entries.insert(1, {
+ entries.insert(2, {
"name": "process",
"img": "icon-cog",
"menu": [
@@ -44,12 +44,18 @@ def viewm_menu(user, mail_id, rcpt):
"label": _("Mark as spam"),
"url": reverse(
"modoboa.extensions.amavis.views.mark_as_spam", args=[mail_id]
- ) + ("?rcpt=%s" % rcpt if rcpt else "")},
+ ) + ("?rcpt=%s" % rcpt if rcpt else ""),
+ "extra_attributes": {
+ "data-mail-id": mail_id
+ }},
{"name": "mark-as-ham",
"label": _("Mark as non-spam"),
"url": reverse(
"modoboa.extensions.amavis.views.mark_as_ham", args=[mail_id]
- ) + ("?rcpt=%s" % rcpt if rcpt else "")}
+ ) + ("?rcpt=%s" % rcpt if rcpt else ""),
+ "extra_attributes": {
+ "data-mail-id": mail_id
+ }}
]
})
diff --git a/modoboa/extensions/amavis/urls.py b/modoboa/extensions/amavis/urls.py
index 806f62f38..dde072633 100644
--- a/modoboa/extensions/amavis/urls.py
+++ b/modoboa/extensions/amavis/urls.py
@@ -11,6 +11,7 @@ urlpatterns = patterns(
(r'^release/(?P[\w\-\+]+)/$', 'release'),
(r'^markspam/(?P[\w\-\+]+)/$', 'mark_as_spam'),
(r'^markham/(?P[\w\-\+]+)/$', 'mark_as_ham'),
+ (r'^learning_recipient/$', 'learning_recipient'),
(r'^(?P[\w\-\+]+)/$', 'viewmail'),
(r'^(?P[\w\-\+]+)/headers/$', 'viewheaders'),
)
diff --git a/modoboa/extensions/amavis/views.py b/modoboa/extensions/amavis/views.py
index 9fbdfff37..865d2520d 100644
--- a/modoboa/extensions/amavis/views.py
+++ b/modoboa/extensions/amavis/views.py
@@ -21,6 +21,7 @@ from .lib import (
selfservice, AMrelease, QuarantineNavigationParameters,
SpamassassinClient, manual_learning_enabled
)
+from .forms import LearningRecipientForm
from .models import Msgrcpt
from .sql_connector import get_connector
from .sql_listing import SQLlisting, SQLemail
@@ -64,9 +65,18 @@ def _listing(request):
@login_required
def index(request):
+ check_learning_rcpt = "false"
+ if parameters.get_admin("MANUAL_LEARNING") == "yes":
+ if request.user.group != "SimpleUsers":
+ user_level_learning = parameters.get_admin(
+ "USER_LEVEL_LEARNING") == "yes"
+ domain_level_learning = parameters.get_admin(
+ "DOMAIN_LEVEL_LEARNING") == "yes"
+ if user_level_learning or domain_level_learning:
+ check_learning_rcpt = "true"
return render(request, "amavis/index.html", dict(
deflocation="listing/?sort_order=-date", defcallback="listing_cb",
- selection="quarantine"
+ selection="quarantine", check_learning_rcpt=check_learning_rcpt
))
@@ -171,10 +181,10 @@ def delete(request, mail_id):
message = ungettext("%(count)d message deleted successfully",
"%(count)d messages deleted successfully",
len(mail_id)) % {"count": len(mail_id)}
- return ajax_response(
- request, respmsg=message,
- url=QuarantineNavigationParameters(request).back_to_listing()
- )
+ return render_to_json_response({
+ "message": message,
+ "url": QuarantineNavigationParameters(request).back_to_listing()
+ })
def release_selfservice(request, mail_id):
@@ -251,13 +261,14 @@ def release(request, mail_id):
len(mail_id)) % {"count": len(mail_id)}
else:
message = error
- return ajax_response(
- request, "ko" if error else "ok", respmsg=message,
- url=QuarantineNavigationParameters(request).back_to_listing()
- )
+ status = 400 if error else 200
+ return render_to_json_response({
+ "message": message,
+ "url": QuarantineNavigationParameters(request).back_to_listing()
+ }, status=status)
-def mark_messages(request, selection, mtype):
+def mark_messages(request, selection, mtype, recipient_db=None):
"""Mark a selection of messages as spam.
:param str selection: message unique identifier
@@ -265,16 +276,20 @@ def mark_messages(request, selection, mtype):
"""
if not manual_learning_enabled(request.user):
return render_to_json_response({"status": "ok"})
+ if recipient_db is None:
+ recipient_db = (
+ "user" if request.user.group == "SimpleUsers" else "global"
+ )
selection = check_mail_id(request, selection)
connector = get_connector()
- saclient = SpamassassinClient(request.user)
+ saclient = SpamassassinClient(request.user, recipient_db)
for item in selection:
rcpt, mail_id = item.split()
content = "".join(
[msg.mail_text for msg in connector.get_mail_content(mail_id)]
)
- result = saclient.learn_spam(content) if mtype == "spam" \
- else saclient.learn_ham(content)
+ result = saclient.learn_spam(rcpt, content) if mtype == "spam" \
+ else saclient.learn_ham(rcpt, content)
if not result:
break
if saclient.error is None:
@@ -284,10 +299,40 @@ def mark_messages(request, selection, mtype):
len(selection)) % {"count": len(selection)}
else:
message = saclient.error
- return ajax_response(
- request, "ko" if saclient.error else "ok", respmsg=message,
- url=QuarantineNavigationParameters(request).back_to_listing()
- )
+ status = 400 if saclient.error else 200
+ return render_to_json_response({"message": message}, status=status)
+
+
+@login_required
+def learning_recipient(request):
+ """A view to select the recipient database of a learning action."""
+ if request.method == "POST":
+ form = LearningRecipientForm(request.user, request.POST)
+ if form.is_valid():
+ return mark_messages(
+ request,
+ form.cleaned_data["selection"].split(","),
+ form.cleaned_data["ltype"],
+ form.cleaned_data["recipient"]
+ )
+ return render_to_json_response(
+ {"form_errors": form.errors}, status=400
+ )
+ ltype = request.GET.get("type", None)
+ selection = request.GET.get("selection", None)
+ if ltype is None or selection is None:
+ raise BadRequest
+ form = LearningRecipientForm(request.user)
+ form.fields["ltype"].initial = ltype
+ form.fields["selection"].initial = selection
+ return render(request, "common/generic_modal_form.html", {
+ "title": _("Select a database"),
+ "formid": "learning_recipient_form",
+ "action": reverse("modoboa.extensions.amavis.views.learning_recipient"),
+ "action_classes": "submit",
+ "action_label": _("Valider"),
+ "form": form
+ })
@login_required
diff --git a/modoboa/lib/templatetags/lib_tags.py b/modoboa/lib/templatetags/lib_tags.py
index 930d2b3b8..4d3d7676d 100644
--- a/modoboa/lib/templatetags/lib_tags.py
+++ b/modoboa/lib/templatetags/lib_tags.py
@@ -127,7 +127,9 @@ def render_link(linkdef, mdclass=""):
{% if link.modalcb %}modalcb="{{ link.modalcb }}"{% endif %}
{% if link.closecb %}closecb="{{ link.closecb }}"{% endif %}
class="{{ mdclass }}{% if link.class %} {{ link.class }}{% endif %}"
-{% if link.confirm %} onclick="return confirm('{{ link.confirm }}')"{% endif %}>
+{% if link.confirm %} onclick="return confirm('{{ link.confirm }}')"{% endif %}
+{% for attr, value in link.extra_attributes.items %} {{ attr }}="{{ value }}"{% endfor %}
+>
{% if link.img %}{% endif %}
{{ link.label }}""")
return t.render(Context(dict(link=linkdef, mdclass=mdclass)))
diff --git a/modoboa/locale/cs_CZ/LC_MESSAGES/django.po b/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
index eda915777..0d7bf2600 100644
--- a/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
+++ b/modoboa/locale/cs_CZ/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: modoboa-1.0.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-09-29 22:08+0100\n"
"Last-Translator: Miroslav Abrahám \n"
"Language-Team: CS \n"
@@ -19,8 +19,8 @@ msgstr ""
"X-Generator: Poedit 1.5.7\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -290,8 +290,8 @@ msgstr "Neplatný požadavek"
msgid "This field is required"
msgstr "Toto pole je vyžadováno"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Zobrazení"
@@ -347,36 +347,36 @@ msgstr "Poslední přihlášení"
msgid "You can't delete your own account"
msgstr "Nemůžete smazat vlastní účet"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Nebylo možné změnit heslo: LDAP modul není instalován"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "účet"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Neplatný řádek"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Nemůžete importvat účet s vyšším oprávněním, než máte vy sám"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "Uživatel '%s' musí mít nastavenou platnou emailovou adresu"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "pole uživatelského jména a emailu se nesmí pro '%s' lišit"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -385,29 +385,29 @@ msgstr "pole uživatelského jména a emailu se nesmí pro '%s' lišit"
msgid "enabled"
msgstr "povoleno"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Zatrhněte pole pro povolení tohoto rozšíření"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "přidáno"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "upraveno"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s uživatelem %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "smazáno"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -523,7 +523,7 @@ msgstr "Aktualizovat osobní informace"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -652,7 +652,7 @@ msgstr "Přeposlat"
msgid "Account import failed (%s): domain does not exist"
msgstr "Import účtu nebyl úspěšný (%s): doména neexistuje"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Schránka %s již existuje"
@@ -662,6 +662,13 @@ msgstr "Schránka %s již existuje"
msgid "Account import failed (%s): wrong quota value"
msgstr "Import účtu nebyl úspěšný (%s): doména neexistuje"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+#, fuzzy
+msgid "domain alias"
+msgstr "Doménové aliasy"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -710,7 +717,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr "Když je schránka odstraněná, odstranit také přiřazený účet uživatele"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -758,7 +765,7 @@ msgstr "Nemůžete zakázat váš vlastní účet"
msgid "E-mail"
msgstr "E-mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Kvóta"
@@ -772,7 +779,7 @@ msgstr ""
"hodnotu domény. Ponechejte prázdné pro neomezenou kvótu (není povoleno "
"správcům domény)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -788,25 +795,25 @@ msgstr ""
"pro vložení dalšího aliasu. Pro vytvoření doménového koše vložte '*' (např. "
"*@domena.cz)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Doména neexistuje"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Doména(y)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Doména(y) pod správou uživatele"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Mail"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Oprávnění"
@@ -857,14 +864,14 @@ msgstr "Příjemce %s je již vložen"
msgid "No recipient defined"
msgstr "Nebyl určen příjemce"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
#, fuzzy
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr "Výchozí kvóta schránek v MB"
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -872,55 +879,48 @@ msgstr ""
"Alias(y) této domény. Uveďte na řádek pouze jeden alias; pro vložení dalšího "
"aliasu stiskněte po vložení ENTER."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-#, fuzzy
-msgid "domain alias"
-msgstr "Doménové aliasy"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, fuzzy, python-format
msgid "A %s with this name already exists"
msgstr "Alias s tímto názvem již existuje"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
#, fuzzy
msgid "domain"
msgstr "Domény"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Vytvořit správce domény"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Automaticky vytvořit správce této domény"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
msgstr ""
"Jméno správce. Nevkládejte sem název domény, název bude automaticky doplněn."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Vytvořit aliasy"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Automaticky vytvořit běžné aliasy pro tuto doménu"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Neplatný formát"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "Uživatel '%s' již existuje"
@@ -957,7 +957,7 @@ msgstr ""
"Nemůžete nastavit přeposílání na místní adresu. Požádejte správce o "
"vytvoření aliasu."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Vybrat soubor"
@@ -977,7 +977,7 @@ msgstr "Zašifrovat hesla"
msgid "Check this option if passwords contained in your file are not crypted"
msgstr "Zatrhněte toto pole, pokud hesla ve vašem souboru nejsou zašifrována"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "adresa"
@@ -1076,21 +1076,21 @@ msgstr "Doména, na kterou tento alias odkazuje"
msgid "Unknown domain %s"
msgstr "Neznámá doména %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Adresa schránky (bez části @doména.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Nebylo možné zjistit umístění schránky (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Zvolená kvóta je větší než povolené omezení domény (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Kvóta je vyžadována"
@@ -1163,7 +1163,7 @@ msgid "Importing..."
msgstr "Importuji..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filtr"
@@ -1265,8 +1265,8 @@ msgid "Alias with this name already exists"
msgstr "Alias s tímto názvem již existuje"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1309,7 +1309,7 @@ msgstr "Přeposílání upraveno"
msgid "Alias modified"
msgstr "Alias upraven"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Další"
@@ -1317,7 +1317,7 @@ msgstr "Další"
msgid "Options"
msgstr "Možnosti"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Předchozí"
@@ -1352,11 +1352,11 @@ msgstr "Exportovat identity"
msgid "Export domains"
msgstr "Exportovat domény"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1367,19 +1367,19 @@ msgstr "Exportovat domény"
msgid "Invalid request"
msgstr "Neplatný požadavek"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Účet vytvořen"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nový účet"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Účet aktualizován"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Účet smazán"
@@ -1465,7 +1465,7 @@ msgstr "Přeposílání aktualizováno"
msgid "Simple amavis management frontend"
msgstr "Jednoduché rozhraní pro správu amavis"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Karanténa"
@@ -1559,28 +1559,96 @@ msgstr "Odesílatel upozornění"
msgid "The e-mail address used to send notitications"
msgstr "E-mailová adresa používaná k zasílání upozornění"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Výchozí editor"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Z adresy"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Spam"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Počet zobrazených zpráv na stránce"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Nastavit maximální počet zobrazených zpráv na stránce"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "nevyřízené požadavky"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
#, fuzzy
msgid "Pending requests"
msgstr "nevyřízené požadavky"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Filtr obsahu"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Spojení s amavis selhalo: %s"
@@ -1648,8 +1716,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "Komu"
@@ -1660,21 +1728,21 @@ msgid "From"
msgstr "Od"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Předmět"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Vyprázdnit karanténu"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Zpráva smazána"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
@@ -1682,15 +1750,15 @@ msgstr[0] "%(count)d zpráva úspěšně smazána"
msgstr[1] "%(count)d zprávy úspěšně smazány"
msgstr[2] "%(count)d zpráv úspěšně smazáno"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Požadavek odeslán"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Zprávy odblokována"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
@@ -1698,7 +1766,7 @@ msgstr[0] "%(count)d požadavek odeslán"
msgstr[1] "%(count)d požadavky odeslány"
msgstr[2] "%(count)d požadavků odesláno"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
@@ -1706,6 +1774,14 @@ msgstr[0] "%(count)d zpráva úspěšně odblokována"
msgstr[1] "%(count)d zprávy úspěšně odblokovány"
msgstr[2] "%(count)d zpráv úspěšně odblokováno"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d zpráva úspěšně odblokována"
+msgstr[1] "%(count)d zprávy úspěšně odblokovány"
+msgstr[2] "%(count)d zpráv úspěšně odblokováno"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Nevyřízené požadavky na odblokování"
@@ -1754,48 +1830,59 @@ msgid "Banned"
msgstr "Filtr zakázané pošty"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Odblokovat"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Smazat"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Označit zprávy"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Všechny zprávy"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
#, fuzzy
msgid "Spam only"
msgstr "Spam"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
#, fuzzy
msgid "Virus only"
msgstr "Vir"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
#, fuzzy
msgid "Bad Header only"
msgstr "Chybné záhlaví"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
#, fuzzy
msgid "Bad MIME only"
msgstr "Špatný MIME"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
#, fuzzy
msgid "Banned only"
msgstr "Filtr zakázané pošty"
@@ -1847,7 +1934,7 @@ msgstr "Úkony na zprávě:"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Navštivte stránku %(listingurl)s pro zobrazení kompletního seznamu."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Zobrazit úplné záhlaví"
@@ -2302,7 +2389,7 @@ msgstr "Odesílatel"
msgid "Recipient"
msgstr "Příjemce"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Kopie"
@@ -2559,19 +2646,19 @@ msgstr "Nastaveno neznámé zobrazení"
msgid "Bad custom period"
msgstr "Neplatně nastavený vlastní časový interval"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Hledat doménu"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Předdefinované časové intervaly"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Vlastní časový interval"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Uložit"
@@ -2729,7 +2816,7 @@ msgstr "Odpověď serveru"
msgid "Unknown action"
msgstr "Neznámá akce"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "BCC"
@@ -2938,15 +3025,15 @@ msgstr "Ne"
msgid "Failed to update password: %s"
msgstr "Nebylo možné změnit heslo: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Uživatel"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super správce"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Správce domény"
diff --git a/modoboa/locale/de/LC_MESSAGES/django.po b/modoboa/locale/de/LC_MESSAGES/django.po
index 265d2d314..d0cf6874b 100644
--- a/modoboa/locale/de/LC_MESSAGES/django.po
+++ b/modoboa/locale/de/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# Arvedui , 2014
# Patrick Koetter , 2010
@@ -9,19 +9,20 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2014-09-12 12:44+0000\n"
"Last-Translator: Arvedui \n"
-"Language-Team: German (http://www.transifex.com/projects/p/modoboa/language/de/)\n"
+"Language-Team: German (http://www.transifex.com/projects/p/modoboa/language/"
+"de/)\n"
+"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -81,7 +82,9 @@ msgstr "Runden"
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
-msgstr "Anzahl zu verwendender Runden (nur für sha256crypt und sha512crypt). Zahl muss zwischen 1000 und 999999999 liegen."
+msgstr ""
+"Anzahl zu verwendender Runden (nur für sha256crypt und sha512crypt). Zahl "
+"muss zwischen 1000 und 999999999 liegen."
#: core/app_settings.py:73
msgid "Secret key"
@@ -145,7 +148,8 @@ msgstr "Bind DN"
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
-msgstr "Der DN für einen Bind an den LDAP-Server. Nichts eingeben für anonymen Bind."
+msgstr ""
+"Der DN für einen Bind an den LDAP-Server. Nichts eingeben für anonymen Bind."
#: core/app_settings.py:121
msgid "Bind password"
@@ -171,7 +175,9 @@ msgstr "Suchfilter"
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
-msgstr "Ein optionaler Filter z.B. (objectClass=person). Das Filter muss entsprechend der LDAP-Konvention in Klammern gesetzt werden."
+msgstr ""
+"Ein optionaler Filter z.B. (objectClass=person). Das Filter muss "
+"entsprechend der LDAP-Konvention in Klammern gesetzt werden."
#: core/app_settings.py:151
msgid "User DN template"
@@ -182,7 +188,9 @@ msgstr "Vorlage für User DN"
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Die Vorlage für einen User DN. Sie sollte einen Platzhalter z.B. %(user)s enthalten."
+msgstr ""
+"Die Vorlage für einen User DN. Sie sollte einen Platzhalter z.B. %(user)s "
+"enthalten."
#: core/app_settings.py:161
msgid "Password attribute"
@@ -206,9 +214,11 @@ msgstr "Administrator-Gruppen"
#: core/app_settings.py:177
msgid ""
-"Members of those LDAP Posix groups will be created as domain administrators."
-" Use ';' characters to separate groups."
-msgstr "Mitglieder dieser LDAP Posix-Gruppe werden als Domain-Administratoren angelegt werden. Nutzen sie ';', um Gruppen zu separieren."
+"Members of those LDAP Posix groups will be created as domain administrators. "
+"Use ';' characters to separate groups."
+msgstr ""
+"Mitglieder dieser LDAP Posix-Gruppe werden als Domain-Administratoren "
+"angelegt werden. Nutzen sie ';', um Gruppen zu separieren."
#: core/app_settings.py:184
msgid "Groups search base"
@@ -226,7 +236,9 @@ msgstr "Domain/Mailbox Erstellung"
msgid ""
"Automatically create a domain and a mailbox when a new user is created just "
"after the first successful authentication."
-msgstr "Erstelle automatisch eine Domain und eine Mailbox wenn ein neuer user erstellt wurde, direkt nach der ersten erfolgreichen Authentifikation."
+msgstr ""
+"Erstelle automatisch eine Domain und eine Mailbox wenn ein neuer user "
+"erstellt wurde, direkt nach der ersten erfolgreichen Authentifikation."
#: core/app_settings.py:201
#: extensions/admin/templates/admin/editdomainform.html:7
@@ -273,8 +285,8 @@ msgstr "Ungültige Zahl für Runden"
msgid "This field is required"
msgstr "Dieses Feld ist erforderlich"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Darstellung"
@@ -328,36 +340,38 @@ msgstr "Letzte Anmeldung"
msgid "You can't delete your own account"
msgstr "Sie können Ihr eigenes Konto nicht entfernen"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Konnte Kennwort nicht aktualisieren: LDAP-Modul nicht installiert"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "Konto"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Ungültige Zeile"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Sie können kein Konto einer höheren Rolle importieren"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "Der normale Benutzer '%s' muss eine gültige E-Mail-Adresse besitzen"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
-msgstr "Die Felder für Benutzername und E-Mail für '%s' dürfen sich nicht unterscheiden"
+msgstr ""
+"Die Felder für Benutzername und E-Mail für '%s' dürfen sich nicht "
+"unterscheiden"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -366,29 +380,29 @@ msgstr "Die Felder für Benutzername und E-Mail für '%s' dürfen sich nicht unt
msgid "enabled"
msgstr "aktiviert"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Auswählen, um diese Erweiterung zu aktivieren"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "hinzugefügt"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "verändert"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s der Identität %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "entfernt"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -504,7 +518,7 @@ msgstr "Aktualisieren sie ihre persönlichen Daten"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -535,7 +549,9 @@ msgstr "Identität '%s' hat sich erfolgreich angemeldet"
#: core/views/auth.py:43
msgid "Your username and password didn't match. Please try again."
-msgstr "Ihr Benutzername und Passwort stimmen nicht überein. Bitte versuchen Sie es noch einmal."
+msgstr ""
+"Ihr Benutzername und Passwort stimmen nicht überein. Bitte versuchen Sie es "
+"noch einmal."
#: core/views/auth.py:69
#, python-format
@@ -571,15 +587,31 @@ msgid ""
"\n"
"Welcome to the online demo!
\n"
"Warning: the demo's concent is resetted every two hours.
\n"
-"To try the demo, the following users are available (username/password):
\n"
+"To try the demo, the following users are available (username/password"
+"i>):
\n"
"\n"
" - A super administrator : admin/password
\n"
" - A domain administrator : admin@demo.local/admin
\n"
" - A simple user : user@demo.local/user
\n"
"
\n"
"Please report any issue or give any suggestion to \n"
-" the mailing list.
\n"
-msgstr "\nWillkommen zur Online Demo!
\nWarnung: die Inhalte dieser Demo werden alle zwei Stunden gelöscht.
\nFolgende User (Benutzername/Kennwort) stehen zum Testen zur Verfügung:
\n\n - Super-Administrator : admin/password
\n - Domänen-Administrator : admin@demo.local/admin
\n - Normaler Benutzer: user@demo.local/user
\n
\nProbleme und Anregungen bitte an die\n Mailingliste berichten.
\n"
+" the "
+"mailing list.
\n"
+msgstr ""
+"\n"
+"Willkommen zur Online Demo!
\n"
+"Warnung: die Inhalte dieser Demo werden alle zwei Stunden gelöscht."
+"
\n"
+"Folgende User (Benutzername/Kennwort) stehen zum Testen zur "
+"Verfügung:
\n"
+"\n"
+" - Super-Administrator : admin/password
\n"
+" - Domänen-Administrator : admin@demo.local/admin
\n"
+" - Normaler Benutzer: user@demo.local/user
\n"
+"
\n"
+"Probleme und Anregungen bitte an die\n"
+" Mailingliste berichten.
\n"
#: extensions/admin/__init__.py:48
msgid "Administration console"
@@ -615,7 +647,7 @@ msgstr "Weiterleiten"
msgid "Account import failed (%s): domain does not exist"
msgstr "Kann Konto nicht importieren (%s): Die Domain existiert nicht"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Mailbox %s existiert bereits"
@@ -625,6 +657,12 @@ msgstr "Mailbox %s existiert bereits"
msgid "Account import failed (%s): wrong quota value"
msgstr "Konto Import fehlgeschlagen (%s): Falscher Kontingentwert"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr "Domain-Alias"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -641,7 +679,9 @@ msgstr "Mailbox im Dateisystem verwalten"
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
-msgstr "Mailboxen auch in Dateisystem umbenennen oder entfernen wenn sie in Modoboa umbenannt oder entfernt werden"
+msgstr ""
+"Mailboxen auch in Dateisystem umbenennen oder entfernen wenn sie in Modoboa "
+"umbenannt oder entfernt werden"
#: extensions/admin/app_settings.py:22
msgid "Mailboxes ower"
@@ -649,7 +689,9 @@ msgstr "Mailbox-Besitzer"
#: extensions/admin/app_settings.py:24
msgid "The UNIX account who owns mailboxes on the filesystem"
-msgstr "UID des virtuellen Benutzers, der Besitzer der Domains, Mailboxen und Nachrichten im Dateisystem ist."
+msgstr ""
+"UID des virtuellen Benutzers, der Besitzer der Domains, Mailboxen und "
+"Nachrichten im Dateisystem ist."
#: extensions/admin/app_settings.py:28
msgid "Default domain quota"
@@ -659,7 +701,9 @@ msgstr "Standard Domainquota"
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
-msgstr "Standardquota (in MB) für neu erstelle Domains ohne explizite Wertangabe. Der Wert 0 bedeutet „Kein Quota“"
+msgstr ""
+"Standardquota (in MB) für neu erstelle Domains ohne explizite Wertangabe. "
+"Der Wert 0 bedeutet „Kein Quota“"
#: extensions/admin/app_settings.py:38
msgid "Automatic account removal"
@@ -670,7 +714,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr "Beim Löschen der Mailbox auch das Konto entfernen."
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr "Muss eine positive Integer sein"
@@ -682,7 +726,9 @@ msgstr "Ein Mailbox ist erforderlich"
msgid ""
"The user's name. Must be a valid e-mail address for simple users or "
"administrators with a mailbox."
-msgstr "Der Anwendername. Muss eine gültige E-Mail-Adresse für 'simple users' oder Administratoren mit einer Mailbox sein."
+msgstr ""
+"Der Anwendername. Muss eine gültige E-Mail-Adresse für 'simple users' oder "
+"Administratoren mit einer Mailbox sein."
#: extensions/admin/forms/account.py:26
msgid "Role"
@@ -716,7 +762,7 @@ msgstr "Sie können Ihr eigenes Konto nicht deaktivieren"
msgid "E-mail"
msgstr "E-Mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Quota"
@@ -725,9 +771,12 @@ msgid ""
"Quota in MB for this mailbox. Define a custom value or use domain's default "
"one. Leave empty to define an unlimited value (not allowed for domain "
"administrators)."
-msgstr "Quota in MB für diese Mailbox. Geben Sie einen eigenen Wert an oder nutzen Sie den Standardwert der Domain. Lassen Sie das Feld leer für unbegrenztes Quota - Domänen-Administratoren ist dies nicht gestattet."
+msgstr ""
+"Quota in MB für diese Mailbox. Geben Sie einen eigenen Wert an oder nutzen "
+"Sie den Standardwert der Domain. Lassen Sie das Feld leer für unbegrenztes "
+"Quota - Domänen-Administratoren ist dies nicht gestattet."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -738,27 +787,30 @@ msgid ""
"Alias(es) of this mailbox. Indicate only one address per input, press ENTER "
"to add a new input. Use the '*' character to create a 'catchall' alias (ex: "
"*@domain.tld)."
-msgstr "Alias(e) für diese Mailbox. Geben Sie jeweils nur eine Adresse pro Eingabe an. Bestätigen Sie mit ENTER um die Eingabe zu bestätigen. Geben Sie '*' an, um einen 'catchall'-Alias (Bsp: *@example.com) zu erstellen."
+msgstr ""
+"Alias(e) für diese Mailbox. Geben Sie jeweils nur eine Adresse pro Eingabe "
+"an. Bestätigen Sie mit ENTER um die Eingabe zu bestätigen. Geben Sie '*' an, "
+"um einen 'catchall'-Alias (Bsp: *@example.com) zu erstellen."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Domain existiert nicht"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Domain(s)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Domänen, die dieser Anwender administriert"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "E-Mail"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Berechtigungen"
@@ -770,7 +822,9 @@ msgstr "E-Mail Adresse"
msgid ""
"The distribution list address. Use the '*' character to create a 'catchall' "
"address (ex: *@domain.tld)."
-msgstr "Adresse einer Verteilerliste. Geben Sie '*' an, um einen 'catchall'-Alias (Bsp: *@example.com) zu erstellen."
+msgstr ""
+"Adresse einer Verteilerliste. Geben Sie '*' an, um einen 'catchall'-Alias "
+"(Bsp: *@example.com) zu erstellen."
#: extensions/admin/forms/alias.py:23
msgid "Recipients"
@@ -780,7 +834,9 @@ msgstr "Empfänger"
msgid ""
"Mailbox(es) this alias will point to. Indicate only one address per input, "
"press ENTER to add a new input."
-msgstr "Mailboxen auf die der Alias verweist. Geben Sie jeweils nur eine Adresse ein und bestätigen Sie mit ENTER."
+msgstr ""
+"Mailboxen auf die der Alias verweist. Geben Sie jeweils nur eine Adresse ein "
+"und bestätigen Sie mit ENTER."
#: extensions/admin/forms/alias.py:68
msgid "You don't have access to this domain"
@@ -804,64 +860,65 @@ msgstr "Empfänger %s existiert bereits"
msgid "No recipient defined"
msgstr "Keine Empfänger angegeben"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
-msgstr "Standardquota in MB für Mailboxen. Bei leerem Feld wird der Domain-Standard genutzt."
+msgstr ""
+"Standardquota in MB für Mailboxen. Bei leerem Feld wird der Domain-Standard "
+"genutzt."
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
-msgstr "Alias(e) für diese Mailbox. Geben Sie jeweils nur eine Adresse pro Eingabefeld an. Bestätigen Sie mit ENTER, um ein neues Eingabefeld zu erhalten."
+msgstr ""
+"Alias(e) für diese Mailbox. Geben Sie jeweils nur eine Adresse pro "
+"Eingabefeld an. Bestätigen Sie mit ENTER, um ein neues Eingabefeld zu "
+"erhalten."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr "Domain-Alias"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr "Ein %s mit diesem Namen existiert bereits"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr "Domain"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Domänen-Administrator erstellen"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Automatisch Administrator für diese Domain anlegen"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
-msgstr "Name des Administrators. Geben Sie nicht den Domainnamen mit an. Er wird automatisch hinzugefügt."
+msgstr ""
+"Name des Administrators. Geben Sie nicht den Domainnamen mit an. Er wird "
+"automatisch hinzugefügt."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Aliase erstellen"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Automatisch Standard-Aliase für Domain anlegen"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Ungültiges Format"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "Identität %s existiert bereits"
@@ -894,9 +951,11 @@ msgstr "Nachricht weiterleiten und Kopie in Mailbox ablegen"
msgid ""
"You can't define a forward to a local destination. Please ask your "
"administrator to create an alias instead."
-msgstr "Sie können keine Weiterleitung auf ein lokales Ziel anlegen. Bitten Sie Ihren Administrator stattdessen einen Alias anzulegen."
+msgstr ""
+"Sie können keine Weiterleitung auf ein lokales Ziel anlegen. Bitten Sie "
+"Ihren Administrator stattdessen einen Alias anzulegen."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Wählen Sie eine Datei"
@@ -916,15 +975,17 @@ msgstr "Passworte verschlüsseln"
msgid "Check this option if passwords contained in your file are not crypted"
msgstr "Auswählen wenn Kennwörter in Datei nicht verschlüsselt sind"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "Adresse"
#: extensions/admin/models/alias.py:20
msgid ""
-"The alias address (without the domain part). For a 'catch-all' address, just"
-" enter an * character."
-msgstr "Die Alias-Adresse (ohne den Domain-Anteil). Geben sie für eine Adresse an, die alles annimmt, * an."
+"The alias address (without the domain part). For a 'catch-all' address, just "
+"enter an * character."
+msgstr ""
+"Die Alias-Adresse (ohne den Domain-Anteil). Geben sie für eine Adresse an, "
+"die alles annimmt, * an."
#: extensions/admin/models/alias.py:26
msgid "mailboxes"
@@ -1012,21 +1073,21 @@ msgstr "Domäne auf die dieser Alias verweist"
msgid "Unknown domain %s"
msgstr "Unbekannte Domain %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Mailbox-Adresse (ohne den @domain.tld-Anteil)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Konnte Speicherort der Mailbox (%s) nicht bestimmen"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Das Quota ist größer als das maximale Quota der Domain (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Ein Quota ist erforderlich"
@@ -1098,7 +1159,7 @@ msgid "Importing..."
msgstr "Importiere …"
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filter"
@@ -1200,8 +1261,8 @@ msgid "Alias with this name already exists"
msgstr "Ein Alias mit diesem Namen existiert bereits"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1244,7 +1305,7 @@ msgstr "Weiterleitung verändert"
msgid "Alias modified"
msgstr "Alias verändert"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Nächstes"
@@ -1252,7 +1313,7 @@ msgstr "Nächstes"
msgid "Options"
msgstr "optionen"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Vorheriges"
@@ -1286,11 +1347,11 @@ msgstr "Identitäten exportieren"
msgid "Export domains"
msgstr "Domains exportieren"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1301,19 +1362,19 @@ msgstr "Domains exportieren"
msgid "Invalid request"
msgstr "Ungültige Anfrage"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Konto erstellt"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Neues Konto"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Konto aktualisiert"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Konto gelöscht"
@@ -1328,9 +1389,19 @@ msgid ""
" domainalias; name; targeted domain; enabled\n"
" %s\n"
"\n"
-"The first element of each line is mandatory and must be equal to one of the previous values.
\n"
+"The first element of each line is mandatory and must be equal to one of "
+"the previous values.
\n"
"You can use a different character as separator.
\n"
-msgstr "Verwenden sie eine CSV-Datei mit einem der folgenden Formate:\n\n - domain; name; quota; enabled
\n - domainalias; name; targeted domain; enabled
\n %s\n
\nDas erste Element jeder Zeile ist zwingend und muss gleich zum vorhergehenden sein.
\nEin anderes Zeichen als Trenner ist gestattet.
\n"
+msgstr ""
+"Verwenden sie eine CSV-Datei mit einem der folgenden Formate:\n"
+"\n"
+" - domain; name; quota; enabled
\n"
+" - domainalias; name; targeted domain; enabled
\n"
+" %s\n"
+"
\n"
+"Das erste Element jeder Zeile ist zwingend und muss gleich zum "
+"vorhergehenden sein.
\n"
+"Ein anderes Zeichen als Trenner ist gestattet.
\n"
#: extensions/admin/views/import.py:51
msgid "Import domains"
@@ -1350,15 +1421,29 @@ msgstr "%d Objekte erfolgreich importiert"
msgid ""
"Provide a CSV file where lines respect one of the following formats:\n"
"\n"
-"- account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]
\n"
+"- account; loginname; password; first name; last name; enabled; group; "
+"address; quota; [, domain, ...]
\n"
"- alias; address; enabled; internal recipient
\n"
"- forward; address; enabled; external recipient
\n"
"- dlist; address; enabled; recipient; recipient; ...
\n"
"
\n"
-"The first element of each line is mandatory and must be equal to one of the previous values.
\n"
+"The first element of each line is mandatory and must be equal to one of "
+"the previous values.
\n"
"\n"
"You can use a different character as separator.
\n"
-msgstr "Verwenden sie eine CSV-Datei in einem der folgenden Formate:\n\n- account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]
\n- alias; address; enabled; internal recipient
\n- forward; address; enabled; external recipient
\n- dlist; address; enabled; recipient; recipient; ...
\n
\nDas erste Element einer Zeile ist zwingend und muss gleich mit einem der vorhergehenden sein.
\n\nEin anderes Zeichen als Separator ist gestattet.
\n"
+msgstr ""
+"Verwenden sie eine CSV-Datei in einem der folgenden Formate:\n"
+"\n"
+"- account; loginname; password; first name; last name; enabled; group; "
+"address; quota; [, domain, ...]
\n"
+"- alias; address; enabled; internal recipient
\n"
+"- forward; address; enabled; external recipient
\n"
+"- dlist; address; enabled; recipient; recipient; ...
\n"
+"
\n"
+"Das erste Element einer Zeile ist zwingend und muss gleich mit einem der "
+"vorhergehenden sein.
\n"
+"\n"
+"Ein anderes Zeichen als Separator ist gestattet.
\n"
#: extensions/admin/views/import.py:167
msgid "Import identities"
@@ -1372,7 +1457,7 @@ msgstr "Weiterleitung aktualisiert"
msgid "Simple amavis management frontend"
msgstr "Einfache amavis Management Oberfläche"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Quarantäne"
@@ -1386,7 +1471,9 @@ msgstr "Maximales Alter einer Nachricht"
#: extensions/amavis/app_settings.py:16
msgid "Quarantine messages maximum age (in days) before deletion"
-msgstr "Maximales Alter (in Tagen) von Nachrichten in der Quarantäne bevor sie gelöscht werden"
+msgstr ""
+"Maximales Alter (in Tagen) von Nachrichten in der Quarantäne bevor sie "
+"gelöscht werden"
#: extensions/amavis/app_settings.py:19
msgid "Messages releasing"
@@ -1462,29 +1549,100 @@ msgstr "Absender von Benachrichtigungen"
#: extensions/amavis/app_settings.py:74
msgid "The e-mail address used to send notitications"
-msgstr "Die Mailadresse, die verwendet wird, um Benachrichtigungen zu versenden"
+msgstr ""
+"Die Mailadresse, die verwendet wird, um Benachrichtigungen zu versenden"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Standard-Editor"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "From:-Adresse"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Nur Spam"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Anzahl dargestellter Nachrichten pro Seite"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
-msgstr "Legt die maximale Anzahl von Nachrichten fest, die in einer Seite dargestellt werden"
+msgstr ""
+"Legt die maximale Anzahl von Nachrichten fest, die in einer Seite "
+"dargestellt werden"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "Offene Anfragen"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr "Offene Anfragen"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Inhaltsfilter"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Verbindung zu amavis fehlgeschlagen: %s"
@@ -1511,7 +1669,9 @@ msgstr "Standard"
#: extensions/amavis/models.py:98
msgid "Bypass virus checks or not. Choose 'default' to use global settings."
-msgstr "Virus-Prüfungen umgehen oder nicht. Geben Sie, um den Domain-Standard zu nutzen, keinen individuellen Wert an."
+msgstr ""
+"Virus-Prüfungen umgehen oder nicht. Geben Sie, um den Domain-Standard zu "
+"nutzen, keinen individuellen Wert an."
#: extensions/amavis/models.py:101
msgid "Spam filter"
@@ -1519,7 +1679,9 @@ msgstr "SPAM-Filter"
#: extensions/amavis/models.py:106
msgid "Bypass spam checks or not. Choose 'default' to use global settings."
-msgstr "Spam-Prüfungen umgehen oder nicht. Geben Sie, um den Domain-Standard zu nutzen, keinen individuellen Wert an."
+msgstr ""
+"Spam-Prüfungen umgehen oder nicht. Geben Sie, um den Domain-Standard zu "
+"nutzen, keinen individuellen Wert an."
#: extensions/amavis/models.py:109
msgid "Banned filter"
@@ -1527,7 +1689,9 @@ msgstr "Filter für unerwünschte Dateien"
#: extensions/amavis/models.py:114
msgid "Bypass banned checks or not. Choose 'default' to use global settings."
-msgstr "Unerwünschte Dateien umgehen oder nicht. Geben Sie, um den Domain-Standard zu nutzen, keinen individuellen Wert an."
+msgstr ""
+"Unerwünschte Dateien umgehen oder nicht. Geben Sie, um den Domain-Standard "
+"zu nutzen, keinen individuellen Wert an."
#: extensions/amavis/models.py:144
msgid "Spam marker"
@@ -1535,17 +1699,19 @@ msgstr "SPAM-Markierung"
#: extensions/amavis/models.py:146
msgid ""
-"Modify spam subject using the specified text. Choose 'default' to use global"
-" settings."
-msgstr "Betreff:-Zeile einer Spam-Nachricht mit dem angegebenen Text ergänzen. Wählen Sie 'Standard' für den systemweiten Standard."
+"Modify spam subject using the specified text. Choose 'default' to use global "
+"settings."
+msgstr ""
+"Betreff:-Zeile einer Spam-Nachricht mit dem angegebenen Text ergänzen. "
+"Wählen Sie 'Standard' für den systemweiten Standard."
#: extensions/amavis/sql_listing.py:29
msgid "Score"
msgstr "Punktzahl"
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "An"
@@ -1556,49 +1722,56 @@ msgid "From"
msgstr "Von"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Betreff"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Quarantäne leeren"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Nachricht gelöscht"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d Nachricht erfolgreich gelöscht"
msgstr[1] "%(count)d Nachrichten erfolgreich gelöscht"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Anfrage gesendet"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Nachricht freigegeben"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d Anfrage gesendet"
msgstr[1] "%(count)d Anfragen gesendet"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d Nachicht erfolgreich freigegeben"
msgstr[1] "%(count)d Nachichten erfolgreich freigegeben"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d Nachicht erfolgreich freigegeben"
+msgstr[1] "%(count)d Nachichten erfolgreich freigegeben"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Offene Freigabeanfragen"
@@ -1644,44 +1817,55 @@ msgid "Banned"
msgstr "Unerwünschte Dateien"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Freigeben"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Löschen"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Markiere Nachrichten"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Alle Nachrichten"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr "Alle"
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr "Nur Spam"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr "Nur Virus"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr "Nur Fehlerhafte Header"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr "Nur Fehlerhaftes MIME"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr "Nur Unerwünschte Dateien"
@@ -1693,8 +1877,12 @@ msgid ""
msgid_plural ""
"\n"
"%(counter)s release requests are pending for action.\n"
-msgstr[0] "\n%(counter)s Freigabe-Anforderung wartet auf sie.\n"
-msgstr[1] "\n%(counter)s Freigabe-Anforderungen warten auf sie.\n"
+msgstr[0] ""
+"\n"
+"%(counter)s Freigabe-Anforderung wartet auf sie.\n"
+msgstr[1] ""
+"\n"
+"%(counter)s Freigabe-Anforderungen warten auf sie.\n"
#: extensions/amavis/templates/amavis/notifications/pending_requests.html:6
msgid "Sketch:"
@@ -1723,16 +1911,18 @@ msgstr "Rektion auf diese Nachricht:"
#: extensions/amavis/templates/amavis/notifications/pending_requests.html:14
#, python-format
msgid "Please visit %(listingurl)s for a full listing."
-msgstr "Bitte besuchen sie %(listingurl)s um eine vollständige Ausgabe zu erhalten."
+msgstr ""
+"Bitte besuchen sie %(listingurl)s um eine vollständige Ausgabe zu erhalten."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Alle Mail-Header ansehen"
#: extensions/limits/__init__.py:25
msgid ""
"Per administrator resources to limit the number of objects they can create"
-msgstr "Administrator-Ressourcen, um die Anzahl erstellbarer Objekte einzuschränken"
+msgstr ""
+"Administrator-Ressourcen, um die Anzahl erstellbarer Objekte einzuschränken"
#: extensions/limits/__init__.py:56
msgid "Limits"
@@ -1747,9 +1937,10 @@ msgid "Domain admins"
msgstr "Domänen-Administratoren"
#: extensions/limits/app_settings.py:15
-msgid ""
-"Maximum number of allowed domain administrators for a new administrator"
-msgstr "Maximale Anzahl Domänenadministratoren, die ein neuer Administrator erstellen darf"
+msgid "Maximum number of allowed domain administrators for a new administrator"
+msgstr ""
+"Maximale Anzahl Domänenadministratoren, die ein neuer Administrator "
+"erstellen darf"
#: extensions/limits/app_settings.py:21
msgid "Maximum number of allowed domains for a new administrator"
@@ -1757,7 +1948,8 @@ msgstr "Maximale Anzahl Domains, die ein neuer Administrator erstellen darf"
#: extensions/limits/app_settings.py:27
msgid "Maximum number of allowed domain aliases for a new administrator"
-msgstr "Maximale Anzahl Domain Aliase, die ein neuer Administrator erstellen darf"
+msgstr ""
+"Maximale Anzahl Domain Aliase, die ein neuer Administrator erstellen darf"
#: extensions/limits/app_settings.py:33
msgid "Maximum number of allowed mailboxes for a new administrator"
@@ -1777,7 +1969,8 @@ msgstr "Ihre Ressourcen wurde noch nicht initialisiert"
#: extensions/limits/forms.py:61
msgid "You're not allowed to define unlimited values"
-msgstr "Sie verfügen nicht über ausreichend Rechte, um unbegrenzte Werte anzugeben"
+msgstr ""
+"Sie verfügen nicht über ausreichend Rechte, um unbegrenzte Werte anzugeben"
#: extensions/limits/general_callbacks.py:10
msgid "Reseller"
@@ -1830,7 +2023,8 @@ msgstr "Ressourcen-Verbrauch"
#: extensions/postfix_autoreply/__init__.py:26
msgid "Auto-reply (vacation) functionality using Postfix"
-msgstr "Automatische Antwort (Abwesenheitsbenachrichtigung) über Postfix-Programm"
+msgstr ""
+"Automatische Antwort (Abwesenheitsbenachrichtigung) über Postfix-Programm"
#: extensions/postfix_autoreply/__init__.py:49
msgid "Automatic replies"
@@ -1842,7 +2036,9 @@ msgstr "Zeitüberschreitung für automatische Antworten"
#: extensions/postfix_autoreply/app_settings.py:16
msgid "Timeout in seconds between two auto-replies to the same recipient"
-msgstr "Zeit in Sekunden zwischen zwei automatisierten Antworten an denselben Empfänger"
+msgstr ""
+"Zeit in Sekunden zwischen zwei automatisierten Antworten an denselben "
+"Empfänger"
#: extensions/postfix_autoreply/app_settings.py:20
msgid "Default subject"
@@ -1868,14 +2064,20 @@ msgid ""
"\n"
"Best regards,\n"
"%(name)s\n"
-msgstr "Ich bin im Moment weg und werde antworten sobald ich zurück bin.\n\nMit freundlichen Grüßen\n%(name)s\n"
+msgstr ""
+"Ich bin im Moment weg und werde antworten sobald ich zurück bin.\n"
+"\n"
+"Mit freundlichen Grüßen\n"
+"%(name)s\n"
#: extensions/postfix_autoreply/app_settings.py:36
#, python-format
msgid ""
"Default content used when an auto-reply message is created automatically. "
"The '%(name)s' macro will be replaced by the user's full name."
-msgstr "Standardinhalt wenn eine Antwort automatisch erstellt wird. Das '%(name)s' Makro wird gegen den vollen Anwendernamen ersetzt."
+msgstr ""
+"Standardinhalt wenn eine Antwort automatisch erstellt wird. Das '%(name)s' "
+"Makro wird gegen den vollen Anwendernamen ersetzt."
#: extensions/postfix_autoreply/forms.py:12
msgid "Activate your auto reply from this date"
@@ -1937,7 +2139,9 @@ msgstr "Automatische Antwort erfolgreich aktualisiert."
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:2
msgid "Define a message to automatically send when you are off"
-msgstr "Gegen sie eine Nachricht an, die gesendet werden soll, wenn Sie nicht erreichbar sind"
+msgstr ""
+"Gegen sie eine Nachricht an, die gesendet werden soll, wenn Sie nicht "
+"erreichbar sind"
#: extensions/postfix_relay_domains/__init__.py:72
msgid "Relay domains support for Postfix"
@@ -1961,7 +2165,9 @@ msgstr "Pfad zur master.cf Konfigurationsdatei"
msgid ""
"Alias(es) of this relay domain. Indicate only one name per input, press "
"ENTER to add a new input."
-msgstr "Alias(e) für diese Relaydomain. Geben Sie jeweils nur einen pro Eingabefeld an. Bestätigen Sie mit ENTER, um ein weiteres Eingabefeld zu erhalten."
+msgstr ""
+"Alias(e) für diese Relaydomain. Geben Sie jeweils nur einen pro Eingabefeld "
+"an. Bestätigen Sie mit ENTER, um ein weiteres Eingabefeld zu erhalten."
#: extensions/postfix_relay_domains/forms.py:51
#: extensions/postfix_relay_domains/general_callbacks.py:93
@@ -1993,17 +2199,25 @@ msgstr "Maximale Anzahl Relaydomain-Aliase, die dieser Anwender erstellen darf"
#: extensions/postfix_relay_domains/general_callbacks.py:111
msgid ""
"\n"
-"relaydomain; name; target host; service; enabled; verify recipients\n"
+"relaydomain; name; target host; service; enabled; verify recipients"
+"em>\n"
+"relaydomainalias; name; target; enabled\n"
+msgstr ""
+"\n"
+"relaydomain; name; target host; service; enabled; verify recipients"
+"em>\n"
"relaydomainalias; name; target; enabled\n"
-msgstr "\nrelaydomain; name; target host; service; enabled; verify recipients\nrelaydomainalias; name; target; enabled\n"
#: extensions/postfix_relay_domains/limits_callbacks.py:19
msgid "Maximum number of allowed relay domains for a new administrator"
-msgstr "Maximale Anzahl Relaydomains, die ein neuer Administrator erstellen darf"
+msgstr ""
+"Maximale Anzahl Relaydomains, die ein neuer Administrator erstellen darf"
#: extensions/postfix_relay_domains/limits_callbacks.py:27
msgid "Maximum number of allowed relay domain aliases for a new administrator"
-msgstr "Maximale Anzahl Relaydomain-Aliase, die ein neuer Administrator erstellen darf"
+msgstr ""
+"Maximale Anzahl Relaydomain-Aliase, die ein neuer Administrator erstellen "
+"darf"
#: extensions/postfix_relay_domains/models.py:59
msgid "The service name"
@@ -2144,7 +2358,7 @@ msgstr "Sender"
msgid "Recipient"
msgstr "Empfänger"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2174,7 +2388,9 @@ msgstr "Falscher Filtername"
#: extensions/sievefilters/lib.py:40
msgid "Connection to MANAGESIEVE server failed, check your configuration"
-msgstr "Verbindung zu MANAGESIEVE-Server fehlgeschlagen. Überprüfen Sie Ihre Konfiguration."
+msgstr ""
+"Verbindung zu MANAGESIEVE-Server fehlgeschlagen. Überprüfen Sie Ihre "
+"Konfiguration."
#: extensions/sievefilters/lib.py:85
msgid "Not enough space on server"
@@ -2253,7 +2469,9 @@ msgstr "aktiv"
#: extensions/sievefilters/templates/sievefilters/index.html:94
msgid ""
"No filters set defined yet. You must create one in order to define filters."
-msgstr "Nich keine Filter-Sätze definiert. Sie müssen einen erstellen, damit sie Filter erstellen können."
+msgstr ""
+"Nich keine Filter-Sätze definiert. Sie müssen einen erstellen, damit sie "
+"Filter erstellen können."
#: extensions/sievefilters/templatetags/sfilters_tags.py:15
msgid "New filters set"
@@ -2397,19 +2615,19 @@ msgstr "Unbekanntes graphisches Set"
msgid "Bad custom period"
msgstr "Ungültiger individueller Zeitraum"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Domain suchen"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Vordefinierte Zeiträume"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Individueller Zeitraum"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Antworten"
@@ -2491,7 +2709,9 @@ msgstr "Aktiviere/Deaktiviere Darstellung von HTML-Links"
#: extensions/webmail/app_settings.py:92
msgid "Sets the maximum number of messages displayed in a page"
-msgstr "Legt die maximale Anzahl von Nachrichten fest, die in einer Seite dargestellt werden"
+msgstr ""
+"Legt die maximale Anzahl von Nachrichten fest, die in einer Seite "
+"dargestellt werden"
#: extensions/webmail/app_settings.py:97
msgid "Listing refresh rate"
@@ -2565,7 +2785,7 @@ msgstr "Server-Antwort"
msgid "Unknown action"
msgstr "Unbekannte Aktion"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Cci"
@@ -2772,15 +2992,15 @@ msgstr "Nein"
msgid "Failed to update password: %s"
msgstr "Konnte Kennwort nicht aktualisieren: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Normaler Anwender"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super-Administrator"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Domänen-Administrator"
diff --git a/modoboa/locale/en/LC_MESSAGES/django.po b/modoboa/locale/en/LC_MESSAGES/django.po
index 45c36bb2c..5a0799efe 100644
--- a/modoboa/locale/en/LC_MESSAGES/django.po
+++ b/modoboa/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,8 +18,8 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -271,8 +271,8 @@ msgstr ""
msgid "This field is required"
msgstr ""
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr ""
@@ -326,36 +326,36 @@ msgstr ""
msgid "You can't delete your own account"
msgstr ""
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr ""
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr ""
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr ""
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr ""
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr ""
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr ""
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -364,29 +364,29 @@ msgstr ""
msgid "enabled"
msgstr ""
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr ""
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr ""
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr ""
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr ""
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr ""
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -502,7 +502,7 @@ msgstr ""
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -615,7 +615,7 @@ msgstr ""
msgid "Account import failed (%s): domain does not exist"
msgstr ""
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr ""
@@ -625,6 +625,12 @@ msgstr ""
msgid "Account import failed (%s): wrong quota value"
msgstr ""
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr ""
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -670,7 +676,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr ""
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -716,7 +722,7 @@ msgstr ""
msgid "E-mail"
msgstr ""
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr ""
@@ -727,7 +733,7 @@ msgid ""
"administrators)."
msgstr ""
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -740,25 +746,25 @@ msgid ""
"*@domain.tld)."
msgstr ""
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr ""
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr ""
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr ""
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr ""
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr ""
@@ -804,64 +810,58 @@ msgstr ""
msgid "No recipient defined"
msgstr ""
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr ""
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
msgstr ""
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr ""
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr ""
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr ""
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr ""
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr ""
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
msgstr ""
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr ""
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr ""
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr ""
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr ""
@@ -896,7 +896,7 @@ msgid ""
"administrator to create an alias instead."
msgstr ""
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr ""
@@ -916,7 +916,7 @@ msgstr ""
msgid "Check this option if passwords contained in your file are not crypted"
msgstr ""
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr ""
@@ -1012,21 +1012,21 @@ msgstr ""
msgid "Unknown domain %s"
msgstr ""
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr ""
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr ""
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr ""
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr ""
@@ -1098,7 +1098,7 @@ msgid "Importing..."
msgstr ""
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr ""
@@ -1200,8 +1200,8 @@ msgid "Alias with this name already exists"
msgstr ""
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1244,7 +1244,7 @@ msgstr ""
msgid "Alias modified"
msgstr ""
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr ""
@@ -1252,7 +1252,7 @@ msgstr ""
msgid "Options"
msgstr ""
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr ""
@@ -1286,11 +1286,11 @@ msgstr ""
msgid "Export domains"
msgstr ""
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1301,19 +1301,19 @@ msgstr ""
msgid "Invalid request"
msgstr ""
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr ""
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr ""
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr ""
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] ""
@@ -1375,7 +1375,7 @@ msgstr ""
msgid "Simple amavis management frontend"
msgstr ""
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr ""
@@ -1467,27 +1467,92 @@ msgstr ""
msgid "The e-mail address used to send notitications"
msgstr ""
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+msgid "Default user"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+msgid "Spamd address"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+msgid "Spamd port"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr ""
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr ""
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr ""
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr ""
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr ""
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr ""
@@ -1547,8 +1612,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr ""
@@ -1559,49 +1624,56 @@ msgid "From"
msgstr ""
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr ""
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr ""
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr ""
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] ""
msgstr[1] ""
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr ""
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr ""
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] ""
msgstr[1] ""
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] ""
msgstr[1] ""
+#: extensions/amavis/views.py:282
+#, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] ""
+msgstr[1] ""
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr ""
@@ -1647,44 +1719,54 @@ msgid "Banned"
msgstr ""
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr ""
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+msgid "Mark as spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr ""
@@ -1728,7 +1810,7 @@ msgstr ""
msgid "Please visit %(listingurl)s for a full listing."
msgstr ""
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr ""
@@ -2147,7 +2229,7 @@ msgstr ""
msgid "Recipient"
msgstr ""
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr ""
@@ -2400,19 +2482,19 @@ msgstr ""
msgid "Bad custom period"
msgstr ""
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr ""
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr ""
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr ""
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr ""
@@ -2568,7 +2650,7 @@ msgstr ""
msgid "Unknown action"
msgstr ""
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr ""
@@ -2775,15 +2857,15 @@ msgstr ""
msgid "Failed to update password: %s"
msgstr ""
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr ""
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr ""
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr ""
diff --git a/modoboa/locale/es/LC_MESSAGES/django.po b/modoboa/locale/es/LC_MESSAGES/django.po
index 901019d58..2de1039cc 100644
--- a/modoboa/locale/es/LC_MESSAGES/django.po
+++ b/modoboa/locale/es/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-10-01 09:56+0000\n"
"Last-Translator: Pedro Gracia \n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/"
@@ -21,8 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -289,8 +289,8 @@ msgstr "Petición inválida"
msgid "This field is required"
msgstr "Este campo es obligatorio"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Mostrar"
@@ -346,37 +346,37 @@ msgstr "Última entrada"
msgid "You can't delete your own account"
msgstr "No puede eliminar su propia cuenta"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Falló al actualizar la contraseña: módulo LDAP no instalado"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "cuenta"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Línea inválida"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "No puede importar una cuenta con un rol mayor que el suyo"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "El usuario normal '%s' debe tener una dirección de email válida"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr ""
"Los campos de nombre de usuario y de email no deben ser diferentes para '%s'"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -385,29 +385,29 @@ msgstr ""
msgid "enabled"
msgstr "activado"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Marcar para activar esta extensión"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "añadido"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "modificado"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s por el usuario %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "eliminado"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -523,7 +523,7 @@ msgstr "Actualizar su información personal"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -654,7 +654,7 @@ msgstr "Siguiente"
msgid "Account import failed (%s): domain does not exist"
msgstr "Falló la importación de la cuenta (%s): el dominio no existe"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "El mailbox %s ya existe"
@@ -664,6 +664,13 @@ msgstr "El mailbox %s ya existe"
msgid "Account import failed (%s): wrong quota value"
msgstr "Falló la importación de la cuenta (%s): el dominio no existe"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+#, fuzzy
+msgid "domain alias"
+msgstr "Alias del dominio"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -712,7 +719,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr "Cuando un mailbox es eliminado, también lo es su cuenta asociada."
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -760,7 +767,7 @@ msgstr "No puede deshabilitar su propia cuenta"
msgid "E-mail"
msgstr "Email"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Cuota"
@@ -774,7 +781,7 @@ msgstr ""
"dominio por defecto. Déjelo vacío para definir un valor ilimitado (no "
"permitido para los administradores del dominio)"
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -790,25 +797,25 @@ msgstr ""
"ENTER para añadir una nueva entrada. Use el carácter '*' para crear una "
"dirección 'catchall' (recogerlos todos, ej. *@domain.tld)"
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "El dominio no existe"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Dominio(s)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Dominio(s) que el usuario administra"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Correo"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Permisos"
@@ -858,14 +865,14 @@ msgstr "EL destinatario %s ya existe"
msgid "No recipient defined"
msgstr "No ha puesto destinatario"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
#, fuzzy
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr "Cuota por defecto en MB que se aplicará a los mailboxes"
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -873,36 +880,29 @@ msgstr ""
"Alia(s) de este dominio. Indique únicamente un nombre por entrada, presione "
"ENTER para añadir una nueva entrada."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-#, fuzzy
-msgid "domain alias"
-msgstr "Alias del dominio"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, fuzzy, python-format
msgid "A %s with this name already exists"
msgstr "Ya existe un alias con este nombre"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
#, fuzzy
msgid "domain"
msgstr "Dominios"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Crear un administrador del dominio"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Automáticamente crear una administrador para este dominio"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -910,19 +910,19 @@ msgstr ""
"El nombre del administrador. No incluya el nombre del dominio aquí, será "
"añadido automáticamente."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Crear alias"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Automáticamente crear alias estándar para este dominio"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Formato inválido"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "El usuario '%s' ya existe"
@@ -959,7 +959,7 @@ msgstr ""
"No puede definir un reenvío a un destino local. Por favor, pregunte a su "
"administrador para crear un alias en su lugar."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Seleccione un fichero"
@@ -981,7 +981,7 @@ msgstr ""
"Marque esta opción si las contraseñas que contiene su fichero no están "
"cifradas"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "dirección"
@@ -1080,21 +1080,21 @@ msgstr "El dominio al que este alias apunta"
msgid "Unknown domain %s"
msgstr "Dominio desconocido %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Dirección del mailbox (sin la parte @dominio.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Fallo al recuperar la localización del mailbox (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "La cuota es mayor que el límite permitido para el dominio (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Una cuota es obligatoria"
@@ -1167,7 +1167,7 @@ msgid "Importing..."
msgstr "Importando..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "FIltro"
@@ -1269,8 +1269,8 @@ msgid "Alias with this name already exists"
msgstr "Ya existe un alias con este nombre"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1313,7 +1313,7 @@ msgstr "Reenvío modificado"
msgid "Alias modified"
msgstr "Alias modificado"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Siguiente"
@@ -1321,7 +1321,7 @@ msgstr "Siguiente"
msgid "Options"
msgstr "Opciones"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Anterior"
@@ -1355,11 +1355,11 @@ msgstr "Exportar identidades"
msgid "Export domains"
msgstr "Exportar dominios"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1370,19 +1370,19 @@ msgstr "Exportar dominios"
msgid "Invalid request"
msgstr "Petición inválida"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Cuenta creada"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nueva cuenta"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Cuenta actualizada"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Cuenta eliminada"
@@ -1464,7 +1464,7 @@ msgstr "Reenvío actualizado"
msgid "Simple amavis management frontend"
msgstr "Panel de gestión sencilla para amavis"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Cuarentena"
@@ -1560,28 +1560,96 @@ msgstr "Notificaciones al remitente"
msgid "The e-mail address used to send notitications"
msgstr "La dirección de correo usada para enviar notificaciones"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Editor por defecto"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "De la dirección"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Correo basura"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Número de emails mostrados por página"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Fijar el número máxima de mensajes mostrados en una página"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "Peticiones pendientes"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
#, fuzzy
msgid "Pending requests"
msgstr "Peticiones pendientes"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Filtro de contenido"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "La conexión con amavis falló: %s"
@@ -1649,8 +1717,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "A"
@@ -1661,49 +1729,56 @@ msgid "From"
msgstr "Desde"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Tema"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Vaciar cuarentena"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Mensaje eliminado"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d mensaje eliminado correctamente"
msgstr[1] "%(count)d mensajes eliminados correctamente"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Petición enviada"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Mensaje publicado"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d petición enviada"
msgstr[1] "%(count)d peticiones enviadas"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d mensaje publicado correctamente"
msgstr[1] "%(count)d mensajes publicados correctamente"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d mensaje publicado correctamente"
+msgstr[1] "%(count)d mensajes publicados correctamente"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Pendiente de publicar las peticiones"
@@ -1752,48 +1827,59 @@ msgid "Banned"
msgstr "Filtro de expulsados"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Publicar"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Eliminar"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Marcar mensajes"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Todos los mensajes"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
#, fuzzy
msgid "Spam only"
msgstr "Correo basura"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
#, fuzzy
msgid "Virus only"
msgstr "Virus"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
#, fuzzy
msgid "Bad Header only"
msgstr "Mala cabecera"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
#, fuzzy
msgid "Bad MIME only"
msgstr "Mal MIME"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
#, fuzzy
msgid "Banned only"
msgstr "Filtro de expulsados"
@@ -1842,7 +1928,7 @@ msgstr "Actuar sobre este mensaje"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Por favor, visite %(listingurl)s para un listado completo."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Ver todas las cabeceras"
@@ -2295,7 +2381,7 @@ msgstr "Remitente"
msgid "Recipient"
msgstr "Destinatario"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2551,19 +2637,19 @@ msgstr "Conjunto gráfico desconocido"
msgid "Bad custom period"
msgstr "Período elegido erróneo"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Buscar un dominio"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Rangos de tiempo predefinidos"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Rango de tiempo definido"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Aplicar"
@@ -2720,7 +2806,7 @@ msgstr "Respuesta del servidor"
msgid "Unknown action"
msgstr "Acción desconocida"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Cco"
@@ -2927,15 +3013,15 @@ msgstr "No "
msgid "Failed to update password: %s"
msgstr "Falló la actualización de la contraseña: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Usuario normal"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super administrador"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Administrador de dominio"
diff --git a/modoboa/locale/fr/LC_MESSAGES/django.po b/modoboa/locale/fr/LC_MESSAGES/django.po
index 4cb4a74b0..b79771fcd 100644
--- a/modoboa/locale/fr/LC_MESSAGES/django.po
+++ b/modoboa/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: modoboa-1.1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2011-01-07 10:00+100\n"
"Last-Translator: Antoine Nguyen \n"
"Language-Team: FR \n"
@@ -18,8 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -243,8 +243,8 @@ msgid ""
"Automatically create a domain and a mailbox when a new user is created just "
"after the first successful authentication."
msgstr ""
-"Créer automatiquement un domaine et une boite aux lettres quand un "
-"nouvel utilisateur est créé après la première authenfication réussie."
+"Créer automatiquement un domaine et une boite aux lettres quand un nouvel "
+"utilisateur est créé après la première authenfication réussie."
#: core/app_settings.py:201
#: extensions/admin/templates/admin/editdomainform.html:7
@@ -292,8 +292,8 @@ msgstr "Nombre invalide de tours"
msgid "This field is required"
msgstr "Ce champ est requis"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Afficher"
@@ -347,37 +347,37 @@ msgstr "dernière connexion"
msgid "You can't delete your own account"
msgstr "Vous ne pouvez pas supprimer votre propre compte"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr ""
"Echec de la mise à jour du mot de passe : le module LDAP n'est pas installé"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "compte"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Ligne invalide"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Vous ne pouvez pas importer un compte avec un rôle supérieur au votre"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "L'utilisateur simple '%s' doit avoir une adresse email valide"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "Les champs username et email de '%s' ne doivent pas différer"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -386,29 +386,29 @@ msgstr "Les champs username et email de '%s' ne doivent pas différer"
msgid "enabled"
msgstr "Activé"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Cocher pour activer cette extension"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "ajouté"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "modifié"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s par l'utilisateur %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "Supprimé"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -524,7 +524,7 @@ msgstr "Mettez à jour vos informations personnelles"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -653,7 +653,7 @@ msgstr "Transfert"
msgid "Account import failed (%s): domain does not exist"
msgstr "L'import du compte a échoué (%s): le domaine n'existe pas"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "La boite %s existe déjà"
@@ -663,6 +663,12 @@ msgstr "La boite %s existe déjà"
msgid "Account import failed (%s): wrong quota value"
msgstr "L'import du compte a échoué (%s): mauvais quota"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr "alias de domaine"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -714,7 +720,7 @@ msgstr ""
"même temps"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr "Doit être un entier positif"
@@ -762,7 +768,7 @@ msgstr "Vous ne pouvez pas désactiver votre propre compte"
msgid "E-mail"
msgstr "E-mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Quota"
@@ -776,7 +782,7 @@ msgstr ""
"valeur par défaut du domaine. Laisser vide pour définir une valeur illimitée "
"(interdit pour les admins. de domaine)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -792,25 +798,25 @@ msgstr ""
"ENTREE pour ajouter un nouveau champ. Utiliser le caractère '*' pour créer "
"une adresse 'attrape tout' (ex: *@domain.tld)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Domain inexistant"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Domaine(s)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Domaine(s) que cet utilisateur administre"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Courrier"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Permissions"
@@ -860,7 +866,7 @@ msgstr "Destinataire %s déjà présent"
msgid "No recipient defined"
msgstr "Aucune destinataire défini"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
@@ -868,7 +874,7 @@ msgstr ""
"Quota par défaut en Mo appliqué aux boites aux lettres. Laisser vide pour "
"utiliser la valeur par défaut."
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -876,34 +882,28 @@ msgstr ""
"Alias de ce domaine. Indiquer seulement un nom par champ, appuyer sur ENTREE "
"pour ajouter un nouveau champ."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr "alias de domaine"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr "Un %s de ce nom existe déjà"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr "domaine"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Créer un administrateur de domaine"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Créer automatiquement un administrateur pour ce domaine"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -911,19 +911,19 @@ msgstr ""
"Le nom de l'administrateur. Ne pas include un nom de domaine ici, il sera "
"ajouté automatiquement."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Créer des alias"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Créer automatiquement des alias standard pour ce domaine"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Format invalide"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "L'utilisateur '%s' existe déjà"
@@ -960,7 +960,7 @@ msgstr ""
"Vous ne pouvez pas définir un transfert vers une destination locale. "
"Veuillez plutôt demander à votre administrateur de créer un alias"
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Sélectionner un fichier"
@@ -982,7 +982,7 @@ msgstr ""
"Cocher cette option si les mots de passe contenus dans votre fichier ne sont "
"pas chiffrés"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "Adresse"
@@ -1080,21 +1080,21 @@ msgstr "Le domaine vers lequel cet alias pointe"
msgid "Unknown domain %s"
msgstr "Domain %s inconnu"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Adresse de la boite aux lettres (sans la partie @domain.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Impossible de récuperer l'emplacement de la boite (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Le quota est supérieur à la limité autorisée pour le domaine (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Un quota est requis"
@@ -1166,7 +1166,7 @@ msgid "Importing..."
msgstr "Import en cours..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filter"
@@ -1268,8 +1268,8 @@ msgid "Alias with this name already exists"
msgstr "Un alias de ce nom existe déjà"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1312,7 +1312,7 @@ msgstr "Transfert modifié"
msgid "Alias modified"
msgstr "Alias modifié"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Suivante"
@@ -1320,7 +1320,7 @@ msgstr "Suivante"
msgid "Options"
msgstr "Options"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Précédente"
@@ -1354,11 +1354,11 @@ msgstr "Export d'identités"
msgid "Export domains"
msgstr "Export de domaines"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1369,19 +1369,19 @@ msgstr "Export de domaines"
msgid "Invalid request"
msgstr "Requête invalide"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Compte créé"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nouveau compte"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Compte mis à jour"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Compte supprimé"
@@ -1464,7 +1464,7 @@ msgstr "Transfert mis à jour"
msgid "Simple amavis management frontend"
msgstr "Interface simplifiée pour la gestion d'amavis"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Quarantaine"
@@ -1558,27 +1558,96 @@ msgstr "Emetteur des notifications"
msgid "The e-mail address used to send notitications"
msgstr "L'adresse e-mail utilisée pour envoyer les notifications"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr "Apprentissage manuel"
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr "Activer l'apprentissage manuel"
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr "Autorise les super administrateurs à entrainer manuellement Spamassassin"
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr "Spamassassin est il local?"
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr "Indique si Spamassassin tourne sur le même serveur que Modoboa"
+
+#: extensions/amavis/app_settings.py:96
+msgid "Default user"
+msgstr "Utilisateur par défaut"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr "Nom de l'utilisateur possédant la base bayesienne par défaut"
+
+#: extensions/amavis/app_settings.py:104
+msgid "Spamd address"
+msgstr "Adresse de spamd"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr "L'adresse IP à laquelle spamd peut etre joint"
+
+#: extensions/amavis/app_settings.py:110
+msgid "Spamd port"
+msgstr "Port de spamd"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr "Le port TCP sur lequel écoute spamd"
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr "Activer l'apprentissage manuel niveau domaine"
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+"Autorise les administrateurs de domaine à entrainer Spamassassin (au sein"
+" de bases dédiées par domaine)"
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr "Activer l'apprentissage manuel par utilisateur"
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+"Autorise les utilisateur à entrainer personnellement Spamassassin"
+" (au sein d'une base dédiée)"
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Nombre d'emails affichés par page"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Définir le nombre maximal de messages affichés dans une page"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "requêtes en attente"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr "Requêtes en attente"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Filtrage de contenu"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "La connexion avec amavis a échoué : %s"
@@ -1646,8 +1715,8 @@ msgid "Score"
msgstr "Score"
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "A"
@@ -1658,49 +1727,56 @@ msgid "From"
msgstr "De"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Sujet"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Quarantaine vide"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Message supprimé"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d message supprimé correctement"
msgstr[1] "%(count)d messages supprimés correctement"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Requête envoyée"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Message relâché"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d requête envoyée"
msgstr[1] "%(count)d requêtes envoyées"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d message relâché correctement"
msgstr[1] "%(count)d messages relâchés correctement"
+#: extensions/amavis/views.py:282
+#, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d message traité correctement"
+msgstr[1] "%(count)d messages traités correctement"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] requêtes de libération en attente"
@@ -1746,44 +1822,54 @@ msgid "Banned"
msgstr "Banni"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Relâcher"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Supprimer"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+msgid "Mark as spam"
+msgstr "Marquer comme spam"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr "Marquer comme non-spam"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Tous les messages"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr "Tout"
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr "Seulement le spam"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr "Seulement les virus"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr "Seulement les mauvais entêtes"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr "Seulement les mauvais types MIME"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr "Seulement les bannis"
@@ -1831,7 +1917,7 @@ msgstr "Agir sur ce message :"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Veuillez visiter %(listingurl)s pour une liste complète."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Afficher tous les entêtes"
@@ -2269,7 +2355,7 @@ msgstr "Expéditeur"
msgid "Recipient"
msgstr "Destinataire"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2526,19 +2612,19 @@ msgstr "Jeu de graphiques inconnu"
msgid "Bad custom period"
msgstr "Mauvaise période personnalisée"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Chercher un domaine"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Période de temps pré-définie"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Période de temps personnalisée"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Appliquer"
@@ -2694,7 +2780,7 @@ msgstr "Réponse du serveur"
msgid "Unknown action"
msgstr "Action inconnue"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Cci"
@@ -2901,15 +2987,15 @@ msgstr "Non"
msgid "Failed to update password: %s"
msgstr "Echec de la mise à jour du mot de passe : %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Utilisateur simple"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super administrateur"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Administrateur de domaine"
diff --git a/modoboa/locale/it/LC_MESSAGES/django.po b/modoboa/locale/it/LC_MESSAGES/django.po
index bfcc10a44..0524c2034 100644
--- a/modoboa/locale/it/LC_MESSAGES/django.po
+++ b/modoboa/locale/it/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-12-23 00:56+0100\n"
"Last-Translator: Alberto Berti \n"
"Language-Team: ITALIANO \n"
@@ -18,8 +18,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -291,8 +291,8 @@ msgstr "Numero di cicli non valido"
msgid "This field is required"
msgstr "Questo campo è obbligatorio"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Mostra"
@@ -346,36 +346,36 @@ msgstr "ultimo login"
msgid "You can't delete your own account"
msgstr "Non puoi cancellare il tuo account"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Aggiornamento della password fallito: il modulo LDAP non è installato"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "account"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Riga non valida"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Non puoi importare un account con un ruolo superiore al tuo"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "L'utente '%s' deve avere un indirizzo email valido"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "I campi nome utente e email di '%s' devono avere lo stesso valore"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -384,29 +384,29 @@ msgstr "I campi nome utente e email di '%s' devono avere lo stesso valore"
msgid "enabled"
msgstr "Attivato"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Seleziona per abilitare questa estensione"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "aggiunto"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "modificato"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s dell'utente %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "cancellato"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -522,7 +522,7 @@ msgstr "Aggiorna le informazioni personali"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -650,7 +650,7 @@ msgstr "Inoltra"
msgid "Account import failed (%s): domain does not exist"
msgstr "Importazione dell'account fallito (%s): il dominio non esiste"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "La casella di posta %s esiste già"
@@ -660,6 +660,12 @@ msgstr "La casella di posta %s esiste già"
msgid "Account import failed (%s): wrong quota value"
msgstr "Importazione dell'account fallito (%s): il dominio non esiste"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr "alias del dominio"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -710,7 +716,7 @@ msgstr ""
"Quando una casella postale viene rimossa rimuovi anche l'account associato"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr "Dev'essere un intero positivo"
@@ -759,7 +765,7 @@ msgstr "Tu non puoi disabilitare il tuo account"
msgid "E-mail"
msgstr "E-mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Quota"
@@ -773,7 +779,7 @@ msgstr ""
"quello predefinito. Lasciare vuoto per non impostare limiti (non consentito "
"per gli amministratori di dominio)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -789,25 +795,25 @@ msgstr ""
"premere INVIO per aggiungere un nuovo elemento. Utilizzare il carattere '*' "
"per creare un alias 'prenditutto' (p.es.: *@dominio.org)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Il dominio non esiste"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Dominio(i)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Dominio(i) amministrato(i) dall'utente"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Posta"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Permessi"
@@ -855,7 +861,7 @@ msgstr "Il destinatario %s è già esistente"
msgid "No recipient defined"
msgstr "Non è stato definito un destinatario"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
@@ -863,7 +869,7 @@ msgstr ""
"Quota in MB predefinita applicata alle caselle di posta. Lascialo vuoto se "
"vuoi applicare il valore predefinito."
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -871,34 +877,28 @@ msgstr ""
"Alias per questo dominio. Inserire un solo nome alla volta, premere INVIO "
"per aggiungere un nuovo elemento"
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr "alias del dominio"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr "Un %s con questo nome esiste già"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr "dominio"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Crea un amministratore di dominio"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Crea automaticamente un amministratore per questo dominio"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -906,19 +906,19 @@ msgstr ""
"Il nome dell'amministratore. Non includere il nome del dominio, verrà "
"aggiunto automaticamente."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Crea alias"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Crea automaticamente gli alias standard per questo dominio"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Formato non valido"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "L'utente '%s' esiste già"
@@ -956,7 +956,7 @@ msgstr ""
"Non puoi definire l'inoltro con destinazione una cartella locale. Chiedi "
"piuttosto all'amministratore di creare un alias."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Seleziona un file"
@@ -977,7 +977,7 @@ msgid "Check this option if passwords contained in your file are not crypted"
msgstr ""
"Seleziona questa opzione se le password contenute nel file non sono criptate"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "indirizzo"
@@ -1075,21 +1075,21 @@ msgstr "Il dominio a cui punta questo alias"
msgid "Unknown domain %s"
msgstr "Dominio sconosciuto %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Indirizzo della casella di posta (senza la parte @dominio.org)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Impossibile recuperare la posizione della casella di posta (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "La quota è maggiore del limite stabilito per il dominio (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "È richiesta una quota"
@@ -1161,7 +1161,7 @@ msgid "Importing..."
msgstr "Importazione..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filtro"
@@ -1263,8 +1263,8 @@ msgid "Alias with this name already exists"
msgstr "Un alias con questo nome esiste già"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1307,7 +1307,7 @@ msgstr "Inoltro modificato"
msgid "Alias modified"
msgstr "Alias modificato"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Successivo"
@@ -1315,7 +1315,7 @@ msgstr "Successivo"
msgid "Options"
msgstr "Opzioni"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Precedente"
@@ -1349,11 +1349,11 @@ msgstr "Identità di esportazione"
msgid "Export domains"
msgstr "Esporta domini"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1364,19 +1364,19 @@ msgstr "Esporta domini"
msgid "Invalid request"
msgstr "Richiesta non valida"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Account creato"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nuovo account"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Account aggiornato"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Account cancellato"
@@ -1461,7 +1461,7 @@ msgstr "Inoltro aggiornato"
msgid "Simple amavis management frontend"
msgstr "Interfaccia di gestione amavis semplice"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Quarantena"
@@ -1554,27 +1554,95 @@ msgstr "Spedizione notifiche"
msgid "The e-mail address used to send notitications"
msgstr "L'indirizzo e-mail utilizzato per l'invio di notifiche"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Editor predefinito"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Mittente"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Solo messaggi di spam"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Numero di e-mail mostrate in ogni pagina"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Imposta il numero massimo di messaggi mostrati in una pagina"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "richieste in sospeso"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr "Richieste in sospeso"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Filtro sui contenuti"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Connessione ad amavis fallita: %s"
@@ -1642,8 +1710,8 @@ msgid "Score"
msgstr "Punteggio"
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "A"
@@ -1654,49 +1722,56 @@ msgid "From"
msgstr "Da"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Oggetto"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Svuota quarantena"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Messaggio eliminato"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d messaggio eliminato con successo"
msgstr[1] "%(count)d messaggi eliminati con successo"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Request inviata"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Messaggio rilasciato"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d request inviata"
msgstr[1] "%(count)d request inviate"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d messaggio rilasciato con successo"
msgstr[1] "%(count)d messaggi rilasciati con successo "
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d messaggio rilasciato con successo"
+msgstr[1] "%(count)d messaggi rilasciati con successo "
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Richieste di rilascio in sospeso"
@@ -1742,44 +1817,55 @@ msgid "Banned"
msgstr "Banditi"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Rilascia"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Elimina"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Contrassegna i messaggi"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Tutti i messaggi"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr "Tutti"
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr "Solo messaggi di spam"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr "Solo messaggi con virus"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr "Solo messaggi con intestazione errata"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr "Solo messaggi con struttura MIME errata"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr "Solo messaggi banditi"
@@ -1827,7 +1913,7 @@ msgstr "Agisci su questo messaggio:"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Per un elenco completo prova a visitare %(listingurl)s"
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Visualizza tutte le intestazioni"
@@ -2271,7 +2357,7 @@ msgstr "Mittente"
msgid "Recipient"
msgstr "Destinatario"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2528,19 +2614,19 @@ msgstr "Impostazione grafica sconosciuta"
msgid "Bad custom period"
msgstr "Periodo personalizzato sbagliato"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Ricerca un dominio"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Intervalli di tempo predefiniti"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Intervallo di tempo personalizzato"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Applica"
@@ -2698,7 +2784,7 @@ msgstr "Risposta del server"
msgid "Unknown action"
msgstr "Azione sconosciuta"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Cci"
@@ -2905,15 +2991,15 @@ msgstr "No"
msgid "Failed to update password: %s"
msgstr "Aggiornamento della password fallito: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Utente semplice"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super amministratore"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Amministratore di domini"
diff --git a/modoboa/locale/nl_NL/LC_MESSAGES/django.po b/modoboa/locale/nl_NL/LC_MESSAGES/django.po
index 036589bf0..c682bffd7 100644
--- a/modoboa/locale/nl_NL/LC_MESSAGES/django.po
+++ b/modoboa/locale/nl_NL/LC_MESSAGES/django.po
@@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# Andrew , 2014
# TuxBrother , 2014
@@ -9,19 +9,20 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2014-09-13 11:49+0000\n"
"Last-Translator: Andrew \n"
-"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/modoboa/language/nl_NL/)\n"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
+"modoboa/language/nl_NL/)\n"
+"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: nl_NL\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -81,7 +82,9 @@ msgstr "Rondes"
msgid ""
"Number of rounds to use (only used by sha256crypt and sha512crypt). Must be "
"between 1000 and 999999999, inclusive."
-msgstr "Nummer van te gebruiken randomizeringsrondes (alleen bij sha256crypt en sha512crypt). Moet tussen de 1000 en 999999999 liggen."
+msgstr ""
+"Nummer van te gebruiken randomizeringsrondes (alleen bij sha256crypt en "
+"sha512crypt). Moet tussen de 1000 en 999999999 liggen."
#: core/app_settings.py:73
msgid "Secret key"
@@ -145,7 +148,9 @@ msgstr "Koppeling DN"
msgid ""
"The distinguished name to use when binding to the LDAP server. Leave empty "
"for an anonymous bind"
-msgstr "De gedistingeerde naam om te gebruiken bij het koppeling met de LDAP server. Laat leeg voor een anonieme koppeling."
+msgstr ""
+"De gedistingeerde naam om te gebruiken bij het koppeling met de LDAP server. "
+"Laat leeg voor een anonieme koppeling."
#: core/app_settings.py:121
msgid "Bind password"
@@ -153,7 +158,9 @@ msgstr "Koppel wachtwoord"
#: core/app_settings.py:124
msgid "The password to use when binding to the LDAP server (with 'Bind DN')"
-msgstr "Het wachtwoord om te gebruiken tijdens het koppelen met de LDAP server (met 'koppel DN')"
+msgstr ""
+"Het wachtwoord om te gebruiken tijdens het koppelen met de LDAP server (met "
+"'koppel DN')"
#: core/app_settings.py:132
msgid "Users search base"
@@ -171,7 +178,9 @@ msgstr "Zoek filter"
msgid ""
"An optional filter string (e.g. '(objectClass=person)'). In order to be "
"valid, it must be enclosed in parentheses."
-msgstr "Een optionele filter string (zoals '(objectClass=person)'). Om geldig te kunnen zijn, moet het ingesloten zijn tussen haakjes."
+msgstr ""
+"Een optionele filter string (zoals '(objectClass=person)'). Om geldig te "
+"kunnen zijn, moet het ingesloten zijn tussen haakjes."
#: core/app_settings.py:151
msgid "User DN template"
@@ -182,7 +191,9 @@ msgstr "Gebruiker DN template"
msgid ""
"The template used to construct a user's DN. It should contain one "
"placeholder (ie. %(user)s)"
-msgstr "Het template dat gebruikt word om een gebruiker zijn/haar DN op te bouwen. Het moet een placeholder bevatten (bijvoorbeeld. %(user)s)"
+msgstr ""
+"Het template dat gebruikt word om een gebruiker zijn/haar DN op te bouwen. "
+"Het moet een placeholder bevatten (bijvoorbeeld. %(user)s)"
#: core/app_settings.py:161
msgid "Password attribute"
@@ -206,9 +217,11 @@ msgstr "Administrator groepen"
#: core/app_settings.py:177
msgid ""
-"Members of those LDAP Posix groups will be created as domain administrators."
-" Use ';' characters to separate groups."
-msgstr "Leden van deze LDAP POSIX groepen zullen aangemaakt worden als domein administrators. Gebruik ';' karakters om groepen te scheiden."
+"Members of those LDAP Posix groups will be created as domain administrators. "
+"Use ';' characters to separate groups."
+msgstr ""
+"Leden van deze LDAP POSIX groepen zullen aangemaakt worden als domein "
+"administrators. Gebruik ';' karakters om groepen te scheiden."
#: core/app_settings.py:184
msgid "Groups search base"
@@ -226,7 +239,9 @@ msgstr "Domein/mailbox creatie"
msgid ""
"Automatically create a domain and a mailbox when a new user is created just "
"after the first successful authentication."
-msgstr "Maak automatisch een domein en een mailbox wanneer een nieuwe gebruiker wordt aangemaakt vlak na de eerste succesvolle authenticatie."
+msgstr ""
+"Maak automatisch een domein en een mailbox wanneer een nieuwe gebruiker "
+"wordt aangemaakt vlak na de eerste succesvolle authenticatie."
#: core/app_settings.py:201
#: extensions/admin/templates/admin/editdomainform.html:7
@@ -255,7 +270,9 @@ msgstr "Standaard top omleiding"
#: core/app_settings.py:220
msgid "The default redirection used when no application is specified"
-msgstr "De standaard omleiding die gebruikt word als er geen andere applicatie is opgegeven"
+msgstr ""
+"De standaard omleiding die gebruikt word als er geen andere applicatie is "
+"opgegeven"
#: core/app_settings.py:249
msgid "Key must be either 16, 24, or 32 bytes long"
@@ -273,8 +290,8 @@ msgstr "Ongeldig nummer van rondes"
msgid "This field is required"
msgstr "Dit veld is benodigd"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Weergeven"
@@ -328,36 +345,36 @@ msgstr "laatste login"
msgid "You can't delete your own account"
msgstr "U kunt uw eigen account niet verwijderen"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Mislukt om wachtwoord aan te passen: LDAP module niet geinstalleerd"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "account"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Verkeerde regel"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "U kunt geen accounts importeren met hogere rechten dan die van uzelf."
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "De gebruiker '%s' moet een geldig email adres hebben"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "gebruikersnaam en email velden moeten niet verschillen van '%s'"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -366,29 +383,29 @@ msgstr "gebruikersnaam en email velden moeten niet verschillen van '%s'"
msgid "enabled"
msgstr "actief"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Aanvinken om deze extensie te activeren"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "toegevoegd"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "veranderd"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s door gebruiker %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "verwijderd"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -504,7 +521,7 @@ msgstr "Persoonlijke informatie aanpassen"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -535,7 +552,9 @@ msgstr "Gebruiker '%s' successvol aangemeld"
#: core/views/auth.py:43
msgid "Your username and password didn't match. Please try again."
-msgstr "Uw gebruikersnaam en wachtwoord komen niet overeen. Probeer het alstublief opnieuw."
+msgstr ""
+"Uw gebruikersnaam en wachtwoord komen niet overeen. Probeer het alstublief "
+"opnieuw."
#: core/views/auth.py:69
#, python-format
@@ -571,15 +590,32 @@ msgid ""
"\n"
"Welcome to the online demo!
\n"
"Warning: the demo's concent is resetted every two hours.
\n"
-"To try the demo, the following users are available (username/password):
\n"
+"To try the demo, the following users are available (username/password"
+"i>):
\n"
"\n"
" - A super administrator : admin/password
\n"
" - A domain administrator : admin@demo.local/admin
\n"
" - A simple user : user@demo.local/user
\n"
"
\n"
"Please report any issue or give any suggestion to \n"
-" the mailing list.
\n"
-msgstr "\nWelkom in de online demo!
\nWaarschuwing: de content van de demo word elke 2 uur gewist.
\nOm de demo te proberen, zijn de volgende gebruikers beschikbaar (gebruikersnaam/wachtwoord):
\n\n- De hoofdbeheerder : admin/password
\n- De domein administrator : admin@demo.local/admin
\n- Een gewone gebruiker : user@demo.local/user
\n
\nAarzel niet om problemen of suggesties door te geven aan \nde maillijst.
\nFouten gevonden in de Nederlandse vertaling? Geef uw opmerkingen of suggesties door aan: foss at waut punt nl
\n"
+" the "
+"mailing list.
\n"
+msgstr ""
+"\n"
+"Welkom in de online demo!
\n"
+"Waarschuwing: de content van de demo word elke 2 uur gewist.
\n"
+"Om de demo te proberen, zijn de volgende gebruikers beschikbaar "
+"(gebruikersnaam/wachtwoord):
\n"
+"\n"
+"- De hoofdbeheerder : admin/password
\n"
+"- De domein administrator : admin@demo.local/admin
\n"
+"- Een gewone gebruiker : user@demo.local/user
\n"
+"
\n"
+"Aarzel niet om problemen of suggesties door te geven aan \n"
+"de "
+"maillijst.
\n"
+"Fouten gevonden in de Nederlandse vertaling? Geef uw opmerkingen of "
+"suggesties door aan: foss at waut punt nl
\n"
#: extensions/admin/__init__.py:48
msgid "Administration console"
@@ -615,7 +651,7 @@ msgstr "Doorsturen"
msgid "Account import failed (%s): domain does not exist"
msgstr "Accounts importeren mislukt (%s): domein bestaat niet"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Mailbox %s bestaat al"
@@ -625,6 +661,12 @@ msgstr "Mailbox %s bestaat al"
msgid "Account import failed (%s): wrong quota value"
msgstr "Account import is mislukt (%s): verkeerd quotum waarde"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr "domein alias"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -641,7 +683,9 @@ msgstr "Pas mailboxen op het bestandssysteem aan"
msgid ""
"Rename or remove mailboxes on the filesystem when they get renamed or "
"removed within Modoboa"
-msgstr "Hernoem of verwijder mailboxen op het bestandssysteem wanner ze hernoemd of verwijderd worden in Modoboa."
+msgstr ""
+"Hernoem of verwijder mailboxen op het bestandssysteem wanner ze hernoemd of "
+"verwijderd worden in Modoboa."
#: extensions/admin/app_settings.py:22
msgid "Mailboxes ower"
@@ -649,7 +693,8 @@ msgstr "Eigenaar van mailboxen"
#: extensions/admin/app_settings.py:24
msgid "The UNIX account who owns mailboxes on the filesystem"
-msgstr "De UNIX account die de rechten heeft tot de mailboxen op het bestandssysteem"
+msgstr ""
+"De UNIX account die de rechten heeft tot de mailboxen op het bestandssysteem"
#: extensions/admin/app_settings.py:28
msgid "Default domain quota"
@@ -659,7 +704,9 @@ msgstr "Standaard domein quota"
msgid ""
"Default quota (in MB) applied to freshly created domains with no value "
"specified. A value of 0 means no quota."
-msgstr "Standaard quota (in MB) om op nieuw aangemaakte domeinen zonder waarde toe te passen. Een waarde van 0 betekend geen quota."
+msgstr ""
+"Standaard quota (in MB) om op nieuw aangemaakte domeinen zonder waarde toe "
+"te passen. Een waarde van 0 betekend geen quota."
#: extensions/admin/app_settings.py:38
msgid "Automatic account removal"
@@ -667,10 +714,11 @@ msgstr "Automatish een account verwijderen"
#: extensions/admin/app_settings.py:40
msgid "When a mailbox is removed, also remove the associated account"
-msgstr "Als een mailbox word verwijderd, verwijder dan ook de bijbehorende account"
+msgstr ""
+"Als een mailbox word verwijderd, verwijder dan ook de bijbehorende account"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr "Dit moet een positive integer zijn."
@@ -682,7 +730,9 @@ msgstr "Een mailbox is benodigd"
msgid ""
"The user's name. Must be a valid e-mail address for simple users or "
"administrators with a mailbox."
-msgstr "De naam van de gebruiker. Moet een geldig e-mail adres zijn voor gebruikers of administrators met een mailbox."
+msgstr ""
+"De naam van de gebruiker. Moet een geldig e-mail adres zijn voor gebruikers "
+"of administrators met een mailbox."
#: extensions/admin/forms/account.py:26
msgid "Role"
@@ -716,7 +766,7 @@ msgstr "U kunt uw eigen account niet uitschakelen"
msgid "E-mail"
msgstr "E-mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Quota"
@@ -725,9 +775,12 @@ msgid ""
"Quota in MB for this mailbox. Define a custom value or use domain's default "
"one. Leave empty to define an unlimited value (not allowed for domain "
"administrators)."
-msgstr "Quota in MB voor deze mailbox. Geef een aangepaste waarde of gebruik de stanaard waarde van het domein. Laat leeg om een ongelimiteerde waarde te definieren (niet toegestaan voor domein administrators)."
+msgstr ""
+"Quota in MB voor deze mailbox. Geef een aangepaste waarde of gebruik de "
+"stanaard waarde van het domein. Laat leeg om een ongelimiteerde waarde te "
+"definieren (niet toegestaan voor domein administrators)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -738,27 +791,30 @@ msgid ""
"Alias(es) of this mailbox. Indicate only one address per input, press ENTER "
"to add a new input. Use the '*' character to create a 'catchall' alias (ex: "
"*@domain.tld)."
-msgstr "Alias(en) van deze mailbox. Geef slechts een adres per regel op, en toets ENTER om een nieuwe regel te krijgen. Gebruik een wildcard '*' om een 'catch-all' adres te maken (bijvoorbeeld: *@domein.tld)."
+msgstr ""
+"Alias(en) van deze mailbox. Geef slechts een adres per regel op, en toets "
+"ENTER om een nieuwe regel te krijgen. Gebruik een wildcard '*' om een 'catch-"
+"all' adres te maken (bijvoorbeeld: *@domein.tld)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Domein bestaat niet"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Domein(en)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Domein(en) die gebruiker mag beheren"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Mail"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Rechten"
@@ -770,7 +826,9 @@ msgstr "Email adres"
msgid ""
"The distribution list address. Use the '*' character to create a 'catchall' "
"address (ex: *@domain.tld)."
-msgstr "Het adres van de distributielijst . Gebruik een wildcard '*' om een 'catch-all' adres te maken (bijvoorbeeld: *@domein.tld)"
+msgstr ""
+"Het adres van de distributielijst . Gebruik een wildcard '*' om een 'catch-"
+"all' adres te maken (bijvoorbeeld: *@domein.tld)"
#: extensions/admin/forms/alias.py:23
msgid "Recipients"
@@ -780,7 +838,9 @@ msgstr "Ontvangers"
msgid ""
"Mailbox(es) this alias will point to. Indicate only one address per input, "
"press ENTER to add a new input."
-msgstr "Mailbox(en) waarnaar deze alias zal verwijzen. Geef slechts een adres per regel op, en toets ENTER om een nieuwe regel te krijgen."
+msgstr ""
+"Mailbox(en) waarnaar deze alias zal verwijzen. Geef slechts een adres per "
+"regel op, en toets ENTER om een nieuwe regel te krijgen."
#: extensions/admin/forms/alias.py:68
msgid "You don't have access to this domain"
@@ -804,64 +864,63 @@ msgstr "Ontvanger %s is al aanwezig"
msgid "No recipient defined"
msgstr "Geen ontvanger opgegeven"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
-msgstr "Standaard quota in MB toegepast op mailboxen. Laat leeg om de standaard waarde te gebruiken."
+msgstr ""
+"Standaard quota in MB toegepast op mailboxen. Laat leeg om de standaard "
+"waarde te gebruiken."
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
-msgstr "Alias(sen) van dit domein. Geef slechts een adres per regel op, en toets ENTER om een nieuwe regel te krijgen."
+msgstr ""
+"Alias(sen) van dit domein. Geef slechts een adres per regel op, en toets "
+"ENTER om een nieuwe regel te krijgen."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr "domein alias"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr "Een %s met deze naam bestaat al"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr "domein"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Maak een domein administrator aan"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Automatisch een administrator aanmaken voor dit domein"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
-msgstr "De naam van de administrator. De domeinnaam word automatisch toegevoegd."
+msgstr ""
+"De naam van de administrator. De domeinnaam word automatisch toegevoegd."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Aliassen aanmaken"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Automatisch een standaard alias voor dit domein aanmaken"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Verkeerd formaat"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "Gebruiker '%s' bestaat al"
@@ -894,9 +953,11 @@ msgstr "Stuur berichten door en sla een kopie op in uw mailbox"
msgid ""
"You can't define a forward to a local destination. Please ask your "
"administrator to create an alias instead."
-msgstr "U kunt mail niet doorsturen naar een lokaal adres. Vraag uw systeembeheerder om een alias voor u aan te maken."
+msgstr ""
+"U kunt mail niet doorsturen naar een lokaal adres. Vraag uw systeembeheerder "
+"om een alias voor u aan te maken."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Bestand selecteren"
@@ -914,17 +975,20 @@ msgstr "Versleutel wachtwoorden"
#: extensions/admin/forms/import_.py:28
msgid "Check this option if passwords contained in your file are not crypted"
-msgstr "Vink deze optie aan als wachtwoorden in uw bestand niet versleuteld zijn"
+msgstr ""
+"Vink deze optie aan als wachtwoorden in uw bestand niet versleuteld zijn"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "adres"
#: extensions/admin/models/alias.py:20
msgid ""
-"The alias address (without the domain part). For a 'catch-all' address, just"
-" enter an * character."
-msgstr "Het alias adres (zonder het domein deel). Voor een 'catch-all' adres, vul een * in."
+"The alias address (without the domain part). For a 'catch-all' address, just "
+"enter an * character."
+msgstr ""
+"Het alias adres (zonder het domein deel). Voor een 'catch-all' adres, vul "
+"een * in."
#: extensions/admin/models/alias.py:26
msgid "mailboxes"
@@ -1012,21 +1076,21 @@ msgstr "De domein alias verwijst naar"
msgid "Unknown domain %s"
msgstr "Onbekend domein %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Mailbox adres (zonder het @domein.naam deel)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Mislukt om de mailbox locatie te verkijgen (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Quota is groter dan de maximaal toegestane domein limiet (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Een quota is vereist"
@@ -1098,7 +1162,7 @@ msgid "Importing..."
msgstr "Importeren..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filter"
@@ -1200,8 +1264,8 @@ msgid "Alias with this name already exists"
msgstr "Een alias met deze naam bestaat al"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1244,7 +1308,7 @@ msgstr "Doorstuurregel aangepast"
msgid "Alias modified"
msgstr "Alias aangepast"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Volgende"
@@ -1252,7 +1316,7 @@ msgstr "Volgende"
msgid "Options"
msgstr "Opties"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Vorige"
@@ -1286,11 +1350,11 @@ msgstr "Identiteiten exporteren"
msgid "Export domains"
msgstr "Exporteer domeinen"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1301,19 +1365,19 @@ msgstr "Exporteer domeinen"
msgid "Invalid request"
msgstr "Ongeldig verzoek"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Account aangemaakt"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nieuwe account"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Account aangepast"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Account verwijderd"
@@ -1328,9 +1392,23 @@ msgid ""
" domainalias; name; targeted domain; enabled\n"
" %s\n"
"\n"
-"The first element of each line is mandatory and must be equal to one of the previous values.
\n"
+"The first element of each line is mandatory and must be equal to one of "
+"the previous values.
\n"
"You can use a different character as separator.
\n"
-msgstr "Lever een CSV bestand en zorg dat de regels voldoen aan een van de volgende formaten:\n\n- domain; name; quota; enabled
\n- domainalias; name; targeted domain; enabled
\n%s\n
\nHet eerste element van elke regel is verplicht en moet gelijk zijn aan een van de vorige waarden.
\nU kunt een eigen scheidingsteken gebruiken.
\nLet op! Zorg dat het 'line-encoding format' Unix is - anders gaat het importeren mis
\n\n"
+msgstr ""
+"Lever een CSV bestand en zorg dat de regels voldoen aan een van de volgende "
+"formaten:\n"
+"\n"
+"- domain; name; quota; enabled
\n"
+"- domainalias; name; targeted domain; enabled
\n"
+"%s\n"
+"
\n"
+"Het eerste element van elke regel is verplicht en moet gelijk zijn aan "
+"een van de vorige waarden.
\n"
+"U kunt een eigen scheidingsteken gebruiken.
\n"
+"Let op! Zorg dat het 'line-encoding format' Unix is - anders gaat het "
+"importeren mis
\n"
+"\n"
#: extensions/admin/views/import.py:51
msgid "Import domains"
@@ -1350,15 +1428,31 @@ msgstr "%d objecten successvol geimporteerd"
msgid ""
"Provide a CSV file where lines respect one of the following formats:\n"
"\n"
-"- account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]
\n"
+"- account; loginname; password; first name; last name; enabled; group; "
+"address; quota; [, domain, ...]
\n"
"- alias; address; enabled; internal recipient
\n"
"- forward; address; enabled; external recipient
\n"
"- dlist; address; enabled; recipient; recipient; ...
\n"
"
\n"
-"The first element of each line is mandatory and must be equal to one of the previous values.
\n"
+"The first element of each line is mandatory and must be equal to one of "
+"the previous values.
\n"
"\n"
"You can use a different character as separator.
\n"
-msgstr "Lever een CSV bestand en zorg dat de regels voldoen aan een van de volgende formaten:\n\n- account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]
\n- alias; address; enabled; internal recipient
\n- forward; address; enabled; external recipient
\n- dlist; address; enabled; recipient; recipient; ...
\n
\nHet eerste element van elke regel is verplicht en moet gelijk zijn aan een van de vorige waarden.
\nU kunt een eigen scheidingsteken gebruiken.
\nLet op! Zorg dat het 'line-encoding format' Unix is - anders gaat het importeren mis
\n"
+msgstr ""
+"Lever een CSV bestand en zorg dat de regels voldoen aan een van de volgende "
+"formaten:\n"
+"\n"
+"- account; loginname; password; first name; last name; enabled; group; "
+"address; quota; [, domain, ...]
\n"
+"- alias; address; enabled; internal recipient
\n"
+"- forward; address; enabled; external recipient
\n"
+"- dlist; address; enabled; recipient; recipient; ...
\n"
+"
\n"
+"Het eerste element van elke regel is verplicht en moet gelijk zijn aan "
+"een van de vorige waarden.
\n"
+"U kunt een eigen scheidingsteken gebruiken.
\n"
+"Let op! Zorg dat het 'line-encoding format' Unix is - anders gaat het "
+"importeren mis
\n"
#: extensions/admin/views/import.py:167
msgid "Import identities"
@@ -1372,7 +1466,7 @@ msgstr "Doorstuuradres aangepast"
msgid "Simple amavis management frontend"
msgstr "Gemakkelijke amavis beheertool"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Quarantaine"
@@ -1386,7 +1480,9 @@ msgstr "Maximum bericht bewaartijd"
#: extensions/amavis/app_settings.py:16
msgid "Quarantine messages maximum age (in days) before deletion"
-msgstr "Maximum bewaartijd quarantaine berichten (in dagen) voordat ze verwijderd worden"
+msgstr ""
+"Maximum bewaartijd quarantaine berichten (in dagen) voordat ze verwijderd "
+"worden"
#: extensions/amavis/app_settings.py:19
msgid "Messages releasing"
@@ -1398,7 +1494,9 @@ msgstr "Verwijderde vrijgegeven berichten"
#: extensions/amavis/app_settings.py:24
msgid "Remove messages marked as released while cleaning up the database"
-msgstr "Verwijder berichten gemarkeerd als vrijgegeven tijdens het opruimen van de database"
+msgstr ""
+"Verwijder berichten gemarkeerd als vrijgegeven tijdens het opruimen van de "
+"database"
#: extensions/amavis/app_settings.py:28
msgid "Amavis connection mode"
@@ -1430,7 +1528,8 @@ msgstr "PDP server socket"
#: extensions/amavis/app_settings.py:50
msgid "Path to the PDP server socket (if unix mode)"
-msgstr "Locatie naar de PDP server socket (indien unix socket mode gebruikt word)"
+msgstr ""
+"Locatie naar de PDP server socket (indien unix socket mode gebruikt word)"
#: extensions/amavis/app_settings.py:54
msgid "Check requests interval"
@@ -1464,27 +1563,95 @@ msgstr "Afzender van notificaties"
msgid "The e-mail address used to send notitications"
msgstr "E-mail adres dat gebruikt word om notificaties te versturen"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Standaard editor"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Van adres"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Alleen spam"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Aantal weergegeven emails per pagina"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Stelt het maximum aantal weergegeven berichten per pagina in"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "openstaande verzoeken"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr "Openstaande verzoeken"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Content filter"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Verbinding met amavis mislukt: %s"
@@ -1511,7 +1678,9 @@ msgstr "standaard"
#: extensions/amavis/models.py:98
msgid "Bypass virus checks or not. Choose 'default' to use global settings."
-msgstr "Optie om virusscans over te slaan. Kies 'default' om de systeeminstelling te gebruiken."
+msgstr ""
+"Optie om virusscans over te slaan. Kies 'default' om de systeeminstelling te "
+"gebruiken."
#: extensions/amavis/models.py:101
msgid "Spam filter"
@@ -1519,7 +1688,9 @@ msgstr "Spam filter"
#: extensions/amavis/models.py:106
msgid "Bypass spam checks or not. Choose 'default' to use global settings."
-msgstr "Optie om spamfilter over te slaan. Kies 'default' om de systeeminstelling te gebruiken."
+msgstr ""
+"Optie om spamfilter over te slaan. Kies 'default' om de systeeminstelling te "
+"gebruiken."
#: extensions/amavis/models.py:109
msgid "Banned filter"
@@ -1527,7 +1698,9 @@ msgstr "Zwarte lijst"
#: extensions/amavis/models.py:114
msgid "Bypass banned checks or not. Choose 'default' to use global settings."
-msgstr "Optie om zwarte lijst over te slaan. Kies 'default' om de systeeminstelling te gebruiken."
+msgstr ""
+"Optie om zwarte lijst over te slaan. Kies 'default' om de systeeminstelling "
+"te gebruiken."
#: extensions/amavis/models.py:144
msgid "Spam marker"
@@ -1535,17 +1708,19 @@ msgstr "Spam indicator"
#: extensions/amavis/models.py:146
msgid ""
-"Modify spam subject using the specified text. Choose 'default' to use global"
-" settings."
-msgstr "Wijzig standaard spam voorvoegsel met de opgegeven text. Kies 'default' om de systeeminstelling te gebruiken. Geef niets op als u geen voorvoegsel wilt."
+"Modify spam subject using the specified text. Choose 'default' to use global "
+"settings."
+msgstr ""
+"Wijzig standaard spam voorvoegsel met de opgegeven text. Kies 'default' om "
+"de systeeminstelling te gebruiken. Geef niets op als u geen voorvoegsel wilt."
#: extensions/amavis/sql_listing.py:29
msgid "Score"
msgstr "Score"
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "Naar"
@@ -1556,49 +1731,56 @@ msgid "From"
msgstr "Van"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Onderwerp"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Niets in quarantaine"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Bericht verwijderd"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d berichten successvol verwijderd"
msgstr[1] "%(count)d berichten successvol verwijderd"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Verzoek ingediend"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Bericht vrijgegeven"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d verzoek ingediend"
msgstr[1] "%(count)d verzoeken ingediend"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d berichten successvol vrijgegeven"
msgstr[1] "%(count)d berichten successvol vrijgegeven"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d berichten successvol vrijgegeven"
+msgstr[1] "%(count)d berichten successvol vrijgegeven"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Openstaand quarantaine vrijgeef verzoek"
@@ -1644,44 +1826,55 @@ msgid "Banned"
msgstr "Geband"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Vrijgeven"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Verwijderen"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Markeer berichten"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Alle berichten"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr "Alles"
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr "Alleen spam"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr "Alleen virussen"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr "Alleen ongeldige headers"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr "Alleen ongeldige MIME's"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr "Alleen geband"
@@ -1693,8 +1886,12 @@ msgid ""
msgid_plural ""
"\n"
"%(counter)s release requests are pending for action.\n"
-msgstr[0] "\n%(counter)s vrijgeef verzoek ingediend.\n"
-msgstr[1] "\n%(counter)s vrijgeef verzoeken ingediend.\n"
+msgstr[0] ""
+"\n"
+"%(counter)s vrijgeef verzoek ingediend.\n"
+msgstr[1] ""
+"\n"
+"%(counter)s vrijgeef verzoeken ingediend.\n"
#: extensions/amavis/templates/amavis/notifications/pending_requests.html:6
msgid "Sketch:"
@@ -1725,14 +1922,15 @@ msgstr "Reageer op dit bericht:"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Bezoek %(listingurl)s voor een volledige lijst."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Volledige headers weergeven"
#: extensions/limits/__init__.py:25
msgid ""
"Per administrator resources to limit the number of objects they can create"
-msgstr "Administrators limiteren in de hoeveelheid objecten die ze kunnen aanmaken"
+msgstr ""
+"Administrators limiteren in de hoeveelheid objecten die ze kunnen aanmaken"
#: extensions/limits/__init__.py:56
msgid "Limits"
@@ -1747,9 +1945,9 @@ msgid "Domain admins"
msgstr "Domein administrators"
#: extensions/limits/app_settings.py:15
-msgid ""
-"Maximum number of allowed domain administrators for a new administrator"
-msgstr "Maximum aantal toegestane domein administrators voor een nieuwe administrator"
+msgid "Maximum number of allowed domain administrators for a new administrator"
+msgstr ""
+"Maximum aantal toegestane domein administrators voor een nieuwe administrator"
#: extensions/limits/app_settings.py:21
msgid "Maximum number of allowed domains for a new administrator"
@@ -1855,7 +2053,9 @@ msgstr "Ik ben niet aanwezig"
#: extensions/postfix_autoreply/app_settings.py:23
msgid ""
"Default subject used when an auto-reply message is created automatically"
-msgstr "Standaard onderwerp gebruikt wanneer een automatisch antwoord automatisch is aangemaakt"
+msgstr ""
+"Standaard onderwerp gebruikt wanneer een automatisch antwoord automatisch is "
+"aangemaakt"
#: extensions/postfix_autoreply/app_settings.py:28
msgid "Default content"
@@ -1868,14 +2068,21 @@ msgid ""
"\n"
"Best regards,\n"
"%(name)s\n"
-msgstr "Momenteel ben ik niet aanwezig. Ik zal antwoorden zodra ik terug kom.\n\nMet vriendelijke groet,\n%(name)s\n"
+msgstr ""
+"Momenteel ben ik niet aanwezig. Ik zal antwoorden zodra ik terug kom.\n"
+"\n"
+"Met vriendelijke groet,\n"
+"%(name)s\n"
#: extensions/postfix_autoreply/app_settings.py:36
#, python-format
msgid ""
"Default content used when an auto-reply message is created automatically. "
"The '%(name)s' macro will be replaced by the user's full name."
-msgstr "Standaard inhoud gebruikt wanneer een automatisch antwoord bericht automatisch is aangemaakt. De '%(name)s' macro zal vervangen worden door de naam van de gebruiker."
+msgstr ""
+"Standaard inhoud gebruikt wanneer een automatisch antwoord bericht "
+"automatisch is aangemaakt. De '%(name)s' macro zal vervangen worden door de "
+"naam van de gebruiker."
#: extensions/postfix_autoreply/forms.py:12
msgid "Activate your auto reply from this date"
@@ -1937,7 +2144,8 @@ msgstr "Auto antwoord bericht successvol aangepast."
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:2
msgid "Define a message to automatically send when you are off"
-msgstr "Maak een bericht dat automatisch verstuurd word wanneer u niet aanwezig bent"
+msgstr ""
+"Maak een bericht dat automatisch verstuurd word wanneer u niet aanwezig bent"
#: extensions/postfix_relay_domains/__init__.py:72
msgid "Relay domains support for Postfix"
@@ -1961,7 +2169,9 @@ msgstr "Locatie van Postfix's master.cf"
msgid ""
"Alias(es) of this relay domain. Indicate only one name per input, press "
"ENTER to add a new input."
-msgstr "Alias(sen) van dit doorstuur domein. Geef slechts een adres per regel op, en toets ENTER om een nieuwe regel te krijgen."
+msgstr ""
+"Alias(sen) van dit doorstuur domein. Geef slechts een adres per regel op, en "
+"toets ENTER om een nieuwe regel te krijgen."
#: extensions/postfix_relay_domains/forms.py:51
#: extensions/postfix_relay_domains/general_callbacks.py:93
@@ -1993,13 +2203,19 @@ msgstr "Maximum aantal van doorstuur domeinen die deze gebruiker aan kan maken"
#: extensions/postfix_relay_domains/general_callbacks.py:111
msgid ""
"\n"
-"relaydomain; name; target host; service; enabled; verify recipients\n"
+"relaydomain; name; target host; service; enabled; verify recipients"
+"em>\n"
+"relaydomainalias; name; target; enabled\n"
+msgstr ""
+"\n"
+"relaydomain; name; target host; service; enabled; verify recipients"
+"em>\n"
"relaydomainalias; name; target; enabled\n"
-msgstr "\nrelaydomain; name; target host; service; enabled; verify recipients\nrelaydomainalias; name; target; enabled\n"
#: extensions/postfix_relay_domains/limits_callbacks.py:19
msgid "Maximum number of allowed relay domains for a new administrator"
-msgstr "Maximum aantal toegestane doorstuur domeinen voor een nieuwe administrator"
+msgstr ""
+"Maximum aantal toegestane doorstuur domeinen voor een nieuwe administrator"
#: extensions/postfix_relay_domains/limits_callbacks.py:27
msgid "Maximum number of allowed relay domain aliases for a new administrator"
@@ -2060,7 +2276,9 @@ msgstr "Scan"
#: extensions/sievefilters/__init__.py:12
msgid "Plugin to easily create server-side filters"
-msgstr "Plugin om gemakkelijk filters op de server in te stellen (bijvoorbeeld om uw mail te sorteren)"
+msgstr ""
+"Plugin om gemakkelijk filters op de server in te stellen (bijvoorbeeld om uw "
+"mail te sorteren)"
#: extensions/sievefilters/__init__.py:18
msgid "Sieve filters"
@@ -2144,7 +2362,7 @@ msgstr "Afzender"
msgid "Recipient"
msgstr "Ontvanger"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "CC"
@@ -2253,7 +2471,9 @@ msgstr "actief"
#: extensions/sievefilters/templates/sievefilters/index.html:94
msgid ""
"No filters set defined yet. You must create one in order to define filters."
-msgstr "Nog geen filterset gedefinieerd. U moet een filterset aanmaken om filters in te kunnen stellen."
+msgstr ""
+"Nog geen filterset gedefinieerd. U moet een filterset aanmaken om filters in "
+"te kunnen stellen."
#: extensions/sievefilters/templatetags/sfilters_tags.py:15
msgid "New filters set"
@@ -2397,19 +2617,19 @@ msgstr "Onbekende grafische set"
msgid "Bad custom period"
msgstr "Ongeldige aangepaste periode"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Zoek een domein"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Voorgedefinieerde tijdspannes"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Aangepaste tijdspanne"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Toepassen"
@@ -2565,7 +2785,7 @@ msgstr "Antwoord van server"
msgid "Unknown action"
msgstr "Onbekende actie"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "BCc"
@@ -2772,15 +2992,15 @@ msgstr "Nee"
msgid "Failed to update password: %s"
msgstr "Mislukt om wachtwoord aan te passen: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Gebruiker"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Hoofdbeheerder"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Domein administrator"
diff --git a/modoboa/locale/pt_PT/LC_MESSAGES/django.po b/modoboa/locale/pt_PT/LC_MESSAGES/django.po
index 7981685d4..d72dc227b 100644
--- a/modoboa/locale/pt_PT/LC_MESSAGES/django.po
+++ b/modoboa/locale/pt_PT/LC_MESSAGES/django.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:29+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-12-23 11:25+0000\n"
"Last-Translator: lusitan \n"
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
@@ -25,8 +25,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -288,8 +288,8 @@ msgstr ""
msgid "This field is required"
msgstr "Este campo é obrigatório"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Exibir"
@@ -343,38 +343,38 @@ msgstr ""
msgid "You can't delete your own account"
msgstr "Não pode apagar a sua própria conta"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Falha ao actualizar password: Modulo LDAP não instalado"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "conta"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Linha inválida"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Não é possível importa uma conta com permissões superiores"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "O simple utilizador '%s' deve ter endereço de e-mail válido"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr ""
"Os campos nome de utilizador e endereço de email não deve ser diferente para "
"'%s'"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -383,29 +383,29 @@ msgstr ""
msgid "enabled"
msgstr "ativo"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Marque para ativar esta extensão"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "acrescentado"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "modificado"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s pelo utilizador %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "apagado"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -521,7 +521,7 @@ msgstr "Atualizar o sua informação pessoal"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -648,7 +648,7 @@ msgstr "Reencaminhar"
msgid "Account import failed (%s): domain does not exist"
msgstr "Importação da conta falhou (%s): domínio não existe"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Caixa de correio %s já existe"
@@ -658,6 +658,12 @@ msgstr "Caixa de correio %s já existe"
msgid "Account import failed (%s): wrong quota value"
msgstr "Importação da conta falhou (%s): domínio não existe"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr ""
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -706,7 +712,7 @@ msgstr ""
"Ao remover uma caixa de correio estará também a remover a conta associada"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -752,7 +758,7 @@ msgstr "Não pode desativar a sua própria conta"
msgid "E-mail"
msgstr "E-mail"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Quota"
@@ -766,7 +772,7 @@ msgstr ""
"usar o valor predefinido pelo domínio. Deixar em branco para definir uma "
"valor ilimitado (não permitido para administradores do domínio)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -782,25 +788,25 @@ msgstr ""
"clique ENTER para adicionar uma nova entrada. Use o '*' para criar um alias "
"'catchall' (ex: *@domain.tld)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "O domínio não existe"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Domínio(s)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Domínio(s) administrado pelo utilizador"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Correio"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Permissões"
@@ -850,13 +856,13 @@ msgstr "O destinatário %s já existe"
msgid "No recipient defined"
msgstr "Sem destinatário definido"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr ""
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -864,34 +870,28 @@ msgstr ""
"Alias(es) deste domínio. Indicar apenas um nome por entrada, pressionar "
"ENTER para acrescentar uma nova entrada."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr ""
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr ""
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr ""
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Criar um administrador de domínio"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Criar automaticamente um administrador para este domínio"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -899,19 +899,19 @@ msgstr ""
"O nome do administrador. Não inclua o nome do domínio já que este será "
"automaticamente anexado."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr " Criar aliases"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Criar automaticamente aliases para este domínio"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Formato inválido"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "O utilizador '%s' já existe"
@@ -949,7 +949,7 @@ msgstr ""
"Não é possível definir um reencaminhamento para um destino local. Por favor "
"informe-se junto de um administrador para criar um alias."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Escolha um ficheiro"
@@ -969,7 +969,7 @@ msgstr "Passwords encriptadas"
msgid "Check this option if passwords contained in your file are not crypted"
msgstr "Marque esta opção se as senhas contidas no arquivo não são encriptadas"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "endereços"
@@ -1067,21 +1067,21 @@ msgstr "O domínio para o qual este alias irá apontar"
msgid "Unknown domain %s"
msgstr "Domínio desconhecido: %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Endereços das caixas de correio (sem a parte @domain.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Falha ao recuperar a localização da caixa de correio (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "A quota excede o limite permitido pelo domínio (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "É necessário uma quota"
@@ -1153,7 +1153,7 @@ msgid "Importing..."
msgstr "A importar..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filtro"
@@ -1255,8 +1255,8 @@ msgid "Alias with this name already exists"
msgstr "Já existe um 'alias' com este nome"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1299,7 +1299,7 @@ msgstr "Reencaminhamento modificado"
msgid "Alias modified"
msgstr "'Alias' modificado"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Seguinte"
@@ -1307,7 +1307,7 @@ msgstr "Seguinte"
msgid "Options"
msgstr "Opções"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Anterior"
@@ -1341,11 +1341,11 @@ msgstr "Exportar identidades"
msgid "Export domains"
msgstr "Exportar domínios"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1356,19 +1356,19 @@ msgstr "Exportar domínios"
msgid "Invalid request"
msgstr "Pedido inválido"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Conta criada"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nova conta"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Conta actualizada"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Conta eliminada"
@@ -1430,7 +1430,7 @@ msgstr "Reencaminhamento atualizado"
msgid "Simple amavis management frontend"
msgstr "Interface de gestão básica do amavis"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Quarentena"
@@ -1526,27 +1526,95 @@ msgstr "Notificações de remetente"
msgid "The e-mail address used to send notitications"
msgstr "O endereço de e-mail usado para enviar notificações"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Editor predefinido"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Do endereço"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Importar"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Número de e-mails a visíveis por página"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Definir o número máximo de mensagens apresentadas por página"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "pedidos pendentes"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr ""
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Filtro de conteúdo"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Não foi possível estabelecer ligação com o amavis: %s"
@@ -1614,8 +1682,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "Para"
@@ -1626,49 +1694,56 @@ msgid "From"
msgstr "De"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Assunto"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Quarentena vazia"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Mensagem apagada"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d mensagem eliminada com sucesso"
msgstr[1] "%(count)d mensagens eliminadas com sucesso"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Pedido enviado"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Mensagem libertada"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d pedido enviado"
msgstr[1] "%(count)d pedidos enviados"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d mensagem libertada com sucesso"
msgstr[1] "%(count)d mensagens libertadas com sucesso"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d mensagem libertada com sucesso"
+msgstr[1] "%(count)d mensagens libertadas com sucesso"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Pedidos de laçamento pendentes"
@@ -1714,44 +1789,55 @@ msgid "Banned"
msgstr ""
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Libertar"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Eliminar"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Marcar mensagens"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Todas as mensagens"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr ""
@@ -1799,7 +1885,7 @@ msgstr "Atuar nesta mensagem:"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Por favor visitar %(listingurl)s para uma listagem completa."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Ver todos os cabeçalhos"
@@ -2225,7 +2311,7 @@ msgstr "Remetente"
msgid "Recipient"
msgstr "Destinatário"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2480,19 +2566,19 @@ msgstr "Conjunto de gráficos desconhecido"
msgid "Bad custom period"
msgstr "Período personalizado inválido"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Procurar um domínio"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Intervalos de tempo pré-definidos"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Intervalo de tempo personalizado"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Aplicar"
@@ -2648,7 +2734,7 @@ msgstr "Resposta do servidor"
msgid "Unknown action"
msgstr "Acção desconhecida"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Cci"
@@ -2855,15 +2941,15 @@ msgstr "Não"
msgid "Failed to update password: %s"
msgstr "Falha ao actualizar a password: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Utilizador simples"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super Administrador"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Administrador de domínio"
diff --git a/modoboa/locale/ru/LC_MESSAGES/django.po b/modoboa/locale/ru/LC_MESSAGES/django.po
index 4ec234c0b..870084ab1 100644
--- a/modoboa/locale/ru/LC_MESSAGES/django.po
+++ b/modoboa/locale/ru/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:28+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-12-03 09:35+0000\n"
"Last-Translator: Antoine Nguyen \n"
"Language-Team: Russian (http://www.transifex.com/projects/p/modoboa/language/"
@@ -20,8 +20,8 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -280,8 +280,8 @@ msgstr ""
msgid "This field is required"
msgstr "Это поле обязательно для заполнеия"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Отображение"
@@ -335,36 +335,36 @@ msgstr ""
msgid "You can't delete your own account"
msgstr "Вы не можете удалить собственный аккаунт"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Ошибка обновления пароля: модуль LDAP не установлен"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "Аккаунт"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Ошибочная строка"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Вы не можете импортировать аккаунт с ролью старше чем у вас"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "Пользователь '%s' должен иметь действительный почтовый адрес"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "Имя пользователя и адрес не должны отличатся для пользователя '%s'"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -373,29 +373,29 @@ msgstr "Имя пользователя и адрес не должны отли
msgid "enabled"
msgstr "Разрешен"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Отметить для разрешения этого расширения"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "добавлено"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "изменено"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s пользователем %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "удалено"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -511,7 +511,7 @@ msgstr "Обновить личную информацию"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -637,7 +637,7 @@ msgstr "Перенаправленые"
msgid "Account import failed (%s): domain does not exist"
msgstr "Ошибка импорта аккаунта (%s): домен должен существовать "
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Почтовый ящик %s существует"
@@ -647,6 +647,12 @@ msgstr "Почтовый ящик %s существует"
msgid "Account import failed (%s): wrong quota value"
msgstr "Ошибка импорта аккаунта (%s): домен должен существовать "
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+msgid "domain alias"
+msgstr ""
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -694,7 +700,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr "При удалении почтового ящика, так же удалять и аккаунт владельца"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -740,7 +746,7 @@ msgstr "Вы не можете запретить собственный акк
msgid "E-mail"
msgstr "Е-майл"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Квота"
@@ -755,7 +761,7 @@ msgstr ""
"Оставьте пустым для неограниченного значения. (Не разрешено администраторам "
"домена)"
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -770,25 +776,25 @@ msgstr ""
"Синонимы этого почтового ящика. Вводите один адрес за раз. Нажмите ENTER для "
"добавления. Используйте '*' для создания синонима 'для всех' (*@domain.tld)"
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Домен не существует"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Домен(ы)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Домен(ы) администрируемые пользователем"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Почта"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Права"
@@ -838,13 +844,13 @@ msgstr "Получатель %s уже присутвует"
msgid "No recipient defined"
msgstr "Получатель не определен"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr ""
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -852,34 +858,28 @@ msgstr ""
"Синоним(ы) этого домена. Вводите одно имя за раз. Нажмите ENTER для "
"добавления."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-msgid "domain alias"
-msgstr ""
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, python-format
msgid "A %s with this name already exists"
msgstr ""
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
msgid "domain"
msgstr ""
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Создание администратора домена"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Автоматически создаст администратора для этого домена"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -887,19 +887,19 @@ msgstr ""
"Имя администратора. Не включайте имя домена оно будет добавлено "
"автоматически."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Создание синонимов"
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Автоматически создает стандартные синонимы для этого домена"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Неверный формат"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "Пользователь '%s' уже существует"
@@ -938,7 +938,7 @@ msgstr ""
"Вы не можете определить перенаправление на локальный адрес. Пожалуйста, "
"попросите администратора создать синоним"
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Выберите файл"
@@ -958,7 +958,7 @@ msgstr "Шифровать пароль"
msgid "Check this option if passwords contained in your file are not crypted"
msgstr "Выберите эту опцию если пароль в вашем файле не зашифрован "
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "адрес"
@@ -1056,21 +1056,21 @@ msgstr "Домен этого синонима указывает на"
msgid "Unknown domain %s"
msgstr "Неизвестный домен %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Адрес почтового ящика (без @domain.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Ошибка получения места находжения почтового ящика (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Квота больше чем разрешено на уровне домена (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "Требуется квота"
@@ -1142,7 +1142,7 @@ msgid "Importing..."
msgstr "Импорт..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Фильтр"
@@ -1244,8 +1244,8 @@ msgid "Alias with this name already exists"
msgstr "Синоним с таким именем уже есть"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1288,7 +1288,7 @@ msgstr "Пересылка изменена"
msgid "Alias modified"
msgstr "Синоним изменен"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Следующая"
@@ -1296,7 +1296,7 @@ msgstr "Следующая"
msgid "Options"
msgstr "Опции"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Предыдущая"
@@ -1331,11 +1331,11 @@ msgstr "Экспорт пользователя"
msgid "Export domains"
msgstr "Экспорт доменов"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1346,19 +1346,19 @@ msgstr "Экспорт доменов"
msgid "Invalid request"
msgstr "Ошибочный запрос"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Аккаунт создан"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Новый аккаунт"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "аккаунт изменен"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Аккаунт удален"
@@ -1421,7 +1421,7 @@ msgstr "Перенаправление обновлено"
msgid "Simple amavis management frontend"
msgstr "Простой интерфейс управления AMaViS"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Карантин"
@@ -1515,27 +1515,95 @@ msgstr "Уведомления отправителю"
msgid "The e-mail address used to send notitications"
msgstr "Адрес для отправки уведомлений"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Редактор по умолчанию"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Адрес отправителя"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Импорт"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Количество отображаемых сообщений на странице"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Установить максимальное количество сообщений показываемых на странице"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "ожидающие запросы"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
msgid "Pending requests"
msgstr ""
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Фильтр содержания"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Ошибка соединания с Amavis %s"
@@ -1603,8 +1671,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "Кому"
@@ -1615,21 +1683,21 @@ msgid "From"
msgstr "От кого"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Тема"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "очистить карантин"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Сообщение удалено"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
@@ -1637,15 +1705,15 @@ msgstr[0] "%(count)d сообщение успешно удалено"
msgstr[1] "%(count)d сообщения успешно удалено"
msgstr[2] "%(count)d сообщений успешно удалено"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Запрос послан"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Сообщение деблокировано"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
@@ -1653,7 +1721,7 @@ msgstr[0] "%(count)d запрос послан"
msgstr[1] "%(count)d запроса полано"
msgstr[2] "%(count)d запросов послано"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
@@ -1661,6 +1729,14 @@ msgstr[0] "%(count)d сообщение успешно деблокирован
msgstr[1] "%(count)d сообщения успешно деблокировано"
msgstr[2] "%(count)d сообщений успешно деблокировано"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d сообщение успешно деблокировано"
+msgstr[1] "%(count)d сообщения успешно деблокировано"
+msgstr[2] "%(count)d сообщений успешно деблокировано"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Заявки для включения в следующий релиз"
@@ -1706,44 +1782,55 @@ msgid "Banned"
msgstr ""
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Деблокировать"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Удалить"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Пометить сообщение"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Все сообщения"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
msgid "Spam only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
msgid "Virus only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
msgid "Bad Header only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
msgid "Bad MIME only"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
msgid "Banned only"
msgstr ""
@@ -1794,7 +1881,7 @@ msgstr "Действуйте согласно этого сообщения"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Для просмотра листинга посетите %(listingurl)s"
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Просмотр заголовков"
@@ -2221,7 +2308,7 @@ msgstr "Отправитель"
msgid "Recipient"
msgstr "Получатель"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Копия"
@@ -2475,19 +2562,19 @@ msgstr "Неизвестный графический набор "
msgid "Bad custom period"
msgstr "Не верный выбор периода"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Искать домен"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Предопределенные временные диапазоны"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Пользовательские временные диапазоны"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Применить"
@@ -2644,7 +2731,7 @@ msgstr "Ответ сервера"
msgid "Unknown action"
msgstr "Неизвестное действие"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "Скрытая копия"
@@ -2853,15 +2940,15 @@ msgstr "Нет"
msgid "Failed to update password: %s"
msgstr "Ошибка обновления пароля: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Обычный пользователь"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Супер администратор"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Администратор домена"
diff --git a/modoboa/locale/sv/LC_MESSAGES/django.po b/modoboa/locale/sv/LC_MESSAGES/django.po
index 775c322ed..a38ca26f7 100644
--- a/modoboa/locale/sv/LC_MESSAGES/django.po
+++ b/modoboa/locale/sv/LC_MESSAGES/django.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Modoboa\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-24 12:28+0200\n"
+"POT-Creation-Date: 2014-10-29 13:25+0100\n"
"PO-Revision-Date: 2013-09-27 08:19+0000\n"
"Last-Translator: ogg1980 \n"
"Language-Team: Swedish (http://www.transifex.com/projects/p/modoboa/language/"
@@ -21,8 +21,8 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: core/__init__.py:52 core/__init__.py:53
-#: extensions/admin/forms/account.py:326 extensions/admin/forms/domain.py:256
-#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:129
+#: extensions/admin/forms/account.py:327 extensions/admin/forms/domain.py:248
+#: extensions/admin/views/domain.py:97 extensions/admin/views/identity.py:133
#: extensions/postfix_autoreply/app_settings.py:11
#: extensions/postfix_relay_domains/forms.py:138
#: extensions/sievefilters/app_settings.py:50
@@ -288,8 +288,8 @@ msgstr "Ogiltig förfrågan"
msgid "This field is required"
msgstr "Detta fält är obligatoriskt"
-#: core/app_settings.py:349 extensions/amavis/app_settings.py:87
-#: extensions/amavis/templates/amavis/main_action_bar.html:29
+#: core/app_settings.py:349 extensions/amavis/app_settings.py:149
+#: extensions/amavis/templates/amavis/main_action_bar.html:40
#: extensions/webmail/app_settings.py:73
msgid "Display"
msgstr "Visning"
@@ -345,36 +345,36 @@ msgstr "Senaste inloggad"
msgid "You can't delete your own account"
msgstr "Du kan inte radera ditt eget konto"
-#: core/models.py:117
+#: core/models.py:130
msgid "Failed to update password: LDAP module not installed"
msgstr "Misslyckades med att uppdatera lösenord: LDAP modul ej installerad"
-#: core/models.py:170
+#: core/models.py:183
msgid "account"
msgstr "konto"
-#: core/models.py:321 extensions/admin/models/domain.py:144
+#: core/models.py:334 extensions/admin/models/domain.py:144
#: extensions/admin/models/domain_alias.py:39
#: extensions/postfix_relay_domains/models.py:134
#: extensions/postfix_relay_domains/models.py:190
msgid "Invalid line"
msgstr "Ogiltig rad"
-#: core/models.py:325
+#: core/models.py:338
msgid "You can't import an account with a role greater than yours"
msgstr "Du kan inte importera konto med en roll större än din"
-#: core/models.py:337
+#: core/models.py:350
#, python-format
msgid "The simple user '%s' must have a valid email address"
msgstr "Den enkla användaren '%s' måste ha en gällande e-postadress"
-#: core/models.py:341
+#: core/models.py:354
#, python-format
msgid "username and email fields must not differ for '%s'"
msgstr "användarnamn och e-post fält får inte avvika för '%s'"
-#: core/models.py:410 extensions/admin/models/alias.py:35
+#: core/models.py:423 extensions/admin/models/alias.py:35
#: extensions/admin/models/domain.py:32
#: extensions/admin/models/domain_alias.py:17
#: extensions/postfix_autoreply/models.py:28
@@ -383,29 +383,29 @@ msgstr "användarnamn och e-post fält får inte avvika för '%s'"
msgid "enabled"
msgstr "aktiverad"
-#: core/models.py:411
+#: core/models.py:424
msgid "Check to enable this extension"
msgstr "Markera för att aktivera detta tillägg"
-#: core/models.py:491
+#: core/models.py:504
msgid "added"
msgstr "tillagd"
-#: core/models.py:494
+#: core/models.py:507
msgid "modified"
msgstr "ändrad"
-#: core/models.py:496 core/models.py:521
+#: core/models.py:509 core/models.py:534
#, python-format
msgid "%(object)s '%(name)s' %(action)s by user %(user)s"
msgstr "%(object)s '%(name)s' %(action)s av användare %(user)s"
-#: core/models.py:523
+#: core/models.py:536
msgid "deleted"
msgstr "raderad"
#: core/tables.py:8 core/templates/core/information.html:8
-#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:187
+#: extensions/admin/tables.py:9 extensions/admin/forms/domain.py:179
#: extensions/admin/templates/admin/domains_table.html:5
#: extensions/admin/templates/admin/editdomainform.html:13
#: extensions/admin/templates/admin/identities_table.html:5
@@ -521,7 +521,7 @@ msgstr "Uppdatera personlig information"
#: core/templates/core/user_profile.html:8
#: extensions/admin/templates/admin/forward.html:8
#: extensions/admin/views/alias.py:112 extensions/admin/views/domain.py:168
-#: extensions/admin/views/identity.py:200
+#: extensions/admin/views/identity.py:204
#: extensions/postfix_autoreply/templates/postfix_autoreply/autoreply.html:9
#: extensions/postfix_relay_domains/views.py:66
#: extensions/sievefilters/views.py:166 extensions/webmail/views.py:172
@@ -648,7 +648,7 @@ msgstr "Vidarebefordra"
msgid "Account import failed (%s): domain does not exist"
msgstr "Konto import misslyckades (%s): domänen existerar inte"
-#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:196
+#: extensions/admin/__init__.py:172 extensions/admin/forms/account.py:197
#, python-format
msgid "Mailbox %s already exists"
msgstr "Brevlåda %s finns redan"
@@ -658,6 +658,13 @@ msgstr "Brevlåda %s finns redan"
msgid "Account import failed (%s): wrong quota value"
msgstr "Konto import misslyckades (%s): domänen existerar inte"
+#: extensions/admin/__init__.py:212 extensions/admin/forms/domain.py:75
+#: extensions/postfix_relay_domains/forms.py:50
+#: extensions/postfix_relay_domains/forms.py:70
+#, fuzzy
+msgid "domain alias"
+msgstr "Domän alias"
+
#: extensions/admin/app_settings.py:13
#: extensions/admin/templates/admin/editdomainform.html:25
#: extensions/limits/app_settings.py:31 extensions/limits/models.py:23
@@ -706,7 +713,7 @@ msgid "When a mailbox is removed, also remove the associated account"
msgstr "När en brevlåda raderas, radera också tillhörande konto"
#: extensions/admin/app_settings.py:81 extensions/admin/forms/account.py:178
-#: extensions/admin/forms/domain.py:56
+#: extensions/admin/forms/domain.py:57
msgid "Must be a positive integer"
msgstr ""
@@ -754,7 +761,7 @@ msgstr "Du kan inte inaktivera ditt eget konto"
msgid "E-mail"
msgstr "E-post"
-#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:17
+#: extensions/admin/forms/account.py:113 extensions/admin/forms/domain.py:18
msgid "Quota"
msgstr "Kvota"
@@ -768,7 +775,7 @@ msgstr ""
"domänens förvalda. Lämna tomt för att definiera ett obegränsat värde (ej "
"tillåtet för domänadministratörer)."
-#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:26
+#: extensions/admin/forms/account.py:123 extensions/admin/forms/domain.py:27
#: extensions/admin/templates/admin/domains_table.html:6
#: extensions/postfix_relay_domains/forms.py:12
msgid "Alias(es)"
@@ -784,25 +791,25 @@ msgstr ""
"lägga till ny rad. Använd '*' för att skapa ett 'catchall' alias (ex: "
"*@domain.tld)."
-#: extensions/admin/forms/account.py:187 extensions/admin/forms/account.py:217
+#: extensions/admin/forms/account.py:188 extensions/admin/forms/account.py:218
#: extensions/admin/forms/alias.py:65
msgid "Domain does not exist"
msgstr "Domän existerar inte"
-#: extensions/admin/forms/account.py:284
+#: extensions/admin/forms/account.py:285
msgid "Domain(s)"
msgstr "Domän(er)"
-#: extensions/admin/forms/account.py:286
+#: extensions/admin/forms/account.py:287
msgid "Domain(s) that user administrates"
msgstr "Domän(er) användaren administrerar"
-#: extensions/admin/forms/account.py:328
-#: extensions/admin/views/identity.py:132
+#: extensions/admin/forms/account.py:329
+#: extensions/admin/views/identity.py:136
msgid "Mail"
msgstr "Post"
-#: extensions/admin/forms/account.py:330
+#: extensions/admin/forms/account.py:331
msgid "Permissions"
msgstr "Rättigheter"
@@ -852,14 +859,14 @@ msgstr "Mottagare %s finns redan"
msgid "No recipient defined"
msgstr "Ingen mottagare definierad"
-#: extensions/admin/forms/domain.py:20
+#: extensions/admin/forms/domain.py:21
#, fuzzy
msgid ""
"Default quota in MB applied to mailboxes. Leave empty to use the default "
"value."
msgstr "Standard kvota i MB applicerad för brevlådor"
-#: extensions/admin/forms/domain.py:29
+#: extensions/admin/forms/domain.py:30
msgid ""
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
"add a new input."
@@ -867,36 +874,29 @@ msgstr ""
"Alias för denna domän. Ange endast ett namn per rad, tryck ENTER för att "
"lägga till en rad."
-#: extensions/admin/forms/domain.py:75
-#: extensions/postfix_relay_domains/forms.py:50
-#: extensions/postfix_relay_domains/forms.py:70
-#, fuzzy
-msgid "domain alias"
-msgstr "Domän alias"
-
-#: extensions/admin/forms/domain.py:82 extensions/admin/forms/domain.py:98
+#: extensions/admin/forms/domain.py:78 extensions/admin/forms/domain.py:92
#: extensions/postfix_relay_domains/forms.py:58
#: extensions/postfix_relay_domains/forms.py:78
#, fuzzy, python-format
msgid "A %s with this name already exists"
msgstr "Alias med detta namn existerar redan"
-#: extensions/admin/forms/domain.py:92
+#: extensions/admin/forms/domain.py:89
#: extensions/postfix_relay_domains/forms.py:49
#: extensions/postfix_relay_domains/forms.py:71
#, fuzzy
msgid "domain"
msgstr "Domäner"
-#: extensions/admin/forms/domain.py:181
+#: extensions/admin/forms/domain.py:173
msgid "Create a domain administrator"
msgstr "Skapa en domän administratör"
-#: extensions/admin/forms/domain.py:183
+#: extensions/admin/forms/domain.py:175
msgid "Automatically create an administrator for this domain"
msgstr "Skapa en domän administratör automatiskt för denna domän"
-#: extensions/admin/forms/domain.py:190
+#: extensions/admin/forms/domain.py:182
msgid ""
"The administrator's name. Don't include the domain's name here, it will be "
"automatically appended."
@@ -904,19 +904,19 @@ msgstr ""
"Administratörens namn. Inkludera inte domänens namn här, den kommer att "
"läggas till automatiskt."
-#: extensions/admin/forms/domain.py:198
+#: extensions/admin/forms/domain.py:190
msgid "Create aliases"
msgstr "Skapa alias."
-#: extensions/admin/forms/domain.py:200
+#: extensions/admin/forms/domain.py:192
msgid "Automatically create standard aliases for this domain"
msgstr "Skapa automatiskt standard alias för den här domänen"
-#: extensions/admin/forms/domain.py:216
+#: extensions/admin/forms/domain.py:208
msgid "Invalid format"
msgstr "Ogiltigt format"
-#: extensions/admin/forms/domain.py:230
+#: extensions/admin/forms/domain.py:222
#, python-format
msgid "User '%s' already exists"
msgstr "Användare '%s' finns redan"
@@ -953,7 +953,7 @@ msgstr ""
"Du kan inte definiera en vidarebefordring till en lokal destination. Be din "
"administratör att skapa ett alias istället."
-#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:198
+#: extensions/admin/forms/import_.py:6 extensions/webmail/forms.py:200
msgid "Select a file"
msgstr "Välj en fil"
@@ -973,7 +973,7 @@ msgstr "Krypterade lösenord"
msgid "Check this option if passwords contained in your file are not crypted"
msgstr "Markera det här alternativet om lösenord i filen inte är krypterad"
-#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:62
+#: extensions/admin/models/alias.py:18 extensions/admin/models/mailbox.py:74
msgid "address"
msgstr "adress"
@@ -1072,21 +1072,21 @@ msgstr "Domän dit detta alias pekar mot"
msgid "Unknown domain %s"
msgstr "Okänt kommando %s"
-#: extensions/admin/models/mailbox.py:63
+#: extensions/admin/models/mailbox.py:75
msgid "Mailbox address (without the @domain.tld part)"
msgstr "Brevlåde adress (utan @domain.tld)"
-#: extensions/admin/models/mailbox.py:125
+#: extensions/admin/models/mailbox.py:136
#, python-format
msgid "Failed to retrieve mailbox location (%s)"
msgstr "Kunde inte hitta brevlådans sökväg (%s)"
-#: extensions/admin/models/mailbox.py:194
+#: extensions/admin/models/mailbox.py:221
#, python-format
msgid "Quota is greater than the allowed domain's limit (%dM)"
msgstr "Kvotan är större än domänens gräns (%dM)"
-#: extensions/admin/models/mailbox.py:199
+#: extensions/admin/models/mailbox.py:227
msgid "A quota is required"
msgstr "En kvota krävs"
@@ -1159,7 +1159,7 @@ msgid "Importing..."
msgstr "Importerar..."
#: extensions/admin/templates/admin/listing.html:14
-#: extensions/stats/templates/stats/index.html:28
+#: extensions/stats/templates/stats/index.html:23
msgid "Filter"
msgstr "Filter"
@@ -1261,8 +1261,8 @@ msgid "Alias with this name already exists"
msgstr "Alias med detta namn existerar redan"
#: extensions/admin/views/alias.py:50 extensions/admin/views/domain.py:102
-#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:133
-#: extensions/admin/views/identity.py:160
+#: extensions/admin/views/domain.py:131 extensions/admin/views/identity.py:137
+#: extensions/admin/views/identity.py:164
#: extensions/postfix_relay_domains/views.py:34
#: extensions/sievefilters/views.py:144 extensions/sievefilters/views.py:233
#: extensions/webmail/views.py:153
@@ -1305,7 +1305,7 @@ msgstr "Vidarebefodring ändrad"
msgid "Alias modified"
msgstr "Alias ändrat"
-#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:130
+#: extensions/admin/views/domain.py:98 extensions/admin/views/identity.py:134
msgid "Next"
msgstr "Nästa"
@@ -1313,7 +1313,7 @@ msgstr "Nästa"
msgid "Options"
msgstr "Inställningar"
-#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:134
+#: extensions/admin/views/domain.py:103 extensions/admin/views/identity.py:138
msgid "Previous"
msgstr "Föregående"
@@ -1347,11 +1347,11 @@ msgstr "Exportera konton"
msgid "Export domains"
msgstr "Exportera domäner"
-#: extensions/admin/views/identity.py:104
-#: extensions/admin/views/identity.py:227
-#: extensions/admin/views/identity.py:232 extensions/amavis/views.py:144
-#: extensions/amavis/views.py:148 extensions/amavis/views.py:181
-#: extensions/amavis/views.py:186 extensions/amavis/views.py:188
+#: extensions/admin/views/identity.py:108
+#: extensions/admin/views/identity.py:231
+#: extensions/admin/views/identity.py:236 extensions/amavis/views.py:147
+#: extensions/amavis/views.py:151 extensions/amavis/views.py:184
+#: extensions/amavis/views.py:189 extensions/amavis/views.py:191
#: extensions/webmail/views.py:49 extensions/webmail/views.py:67
#: extensions/webmail/views.py:81 extensions/webmail/views.py:99
#: extensions/webmail/views.py:116 extensions/webmail/views.py:202
@@ -1362,19 +1362,19 @@ msgstr "Exportera domäner"
msgid "Invalid request"
msgstr "Ogiltig förfrågan"
-#: extensions/admin/views/identity.py:151
+#: extensions/admin/views/identity.py:155
msgid "Account created"
msgstr "Konto skapat"
-#: extensions/admin/views/identity.py:157
+#: extensions/admin/views/identity.py:161
msgid "New account"
msgstr "Nytt konto"
-#: extensions/admin/views/identity.py:193
+#: extensions/admin/views/identity.py:197
msgid "Account updated"
msgstr "Konto uppdaterat"
-#: extensions/admin/views/identity.py:217
+#: extensions/admin/views/identity.py:221
msgid "Account deleted"
msgid_plural "Accounts deleted"
msgstr[0] "Konto raderat"
@@ -1457,7 +1457,7 @@ msgstr "Vidarebefordring uppdaterad"
msgid "Simple amavis management frontend"
msgstr "Enkel amavis hantering frontend"
-#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:18
+#: extensions/amavis/__init__.py:52 extensions/amavis/general_callbacks.py:20
msgid "Quarantine"
msgstr "Karantän"
@@ -1549,28 +1549,96 @@ msgstr "Notifierings avsändare"
msgid "The e-mail address used to send notitications"
msgstr "E-postadress att använda för att skicka notifikationer"
-#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91
+#: extensions/amavis/app_settings.py:77
+#: extensions/amavis/templates/amavis/main_action_bar.html:27
+msgid "Manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:80
+msgid "Enable manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:83
+msgid "Allow super administrators to manually train Spamassassin"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:88
+msgid "Is Spamassassin local?"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:91
+msgid "Tell if Spamassassin is running on the same server than modoboa"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:96
+#, fuzzy
+msgid "Default user"
+msgstr "Standard editor"
+
+#: extensions/amavis/app_settings.py:99
+msgid "Name of the user owning the default bayesian database"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:104
+#, fuzzy
+msgid "Spamd address"
+msgstr "Från adress"
+
+#: extensions/amavis/app_settings.py:106
+msgid "The IP address where spamd can be reached"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:110
+#, fuzzy
+msgid "Spamd port"
+msgstr "Skräp"
+
+#: extensions/amavis/app_settings.py:112
+msgid "The TCP port spamd is listening on"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:116
+msgid "Enable per-domain manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:119
+msgid ""
+"Allow domain administrators to train Spamassassin (within dedicated per-"
+"domain databases)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:125
+msgid "Enable per-user manual learning"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:128
+msgid ""
+"Allow simple users to personally train Spamassassin (within a dedicated "
+"database)"
+msgstr ""
+
+#: extensions/amavis/app_settings.py:153 extensions/webmail/app_settings.py:91
msgid "Number of displayed emails per page"
msgstr "Antalet visade e-postmeddelanden per sida"
-#: extensions/amavis/app_settings.py:92
+#: extensions/amavis/app_settings.py:154
msgid "Set the maximum number of messages displayed in a page"
msgstr "Anger det maximala antalet meddelanden som visas på en sida"
-#: extensions/amavis/general_callbacks.py:82
+#: extensions/amavis/general_callbacks.py:136
msgid "pending requests"
msgstr "väntande förfrågningar"
-#: extensions/amavis/general_callbacks.py:125
+#: extensions/amavis/general_callbacks.py:179
#, fuzzy
msgid "Pending requests"
msgstr "väntande förfrågningar"
-#: extensions/amavis/general_callbacks.py:135
+#: extensions/amavis/general_callbacks.py:189
msgid "Content filter"
msgstr "Innehålls filter"
-#: extensions/amavis/lib.py:56
+#: extensions/amavis/lib.py:60
#, python-format
msgid "Connection to amavis failed: %s"
msgstr "Anslutning till amavis misslyckades: %s"
@@ -1638,8 +1706,8 @@ msgid "Score"
msgstr ""
#: extensions/amavis/sql_listing.py:33
-#: extensions/amavis/templatetags/amavis_tags.py:75
-#: extensions/webmail/forms.py:82
+#: extensions/amavis/templatetags/amavis_tags.py:100
+#: extensions/webmail/forms.py:83
msgid "To"
msgstr "Till"
@@ -1650,49 +1718,56 @@ msgid "From"
msgstr "Från"
#: extensions/amavis/sql_listing.py:40 extensions/sievefilters/forms.py:77
-#: extensions/webmail/forms.py:86 extensions/webmail/lib/imapemail.py:288
+#: extensions/webmail/forms.py:87 extensions/webmail/lib/imapemail.py:288
#: extensions/webmail/lib/listing.py:27 extensions/webmail/lib/tables.py:26
#: templates/common/email_searchbar.html:6
msgid "Subject"
msgstr "Ämne"
-#: extensions/amavis/views.py:27
+#: extensions/amavis/views.py:30
msgid "Empty quarantine"
msgstr "Karantän tom"
-#: extensions/amavis/views.py:149
+#: extensions/amavis/views.py:152
msgid "Message deleted"
msgstr "Meddelande raderat"
-#: extensions/amavis/views.py:168
+#: extensions/amavis/views.py:171
#, python-format
msgid "%(count)d message deleted successfully"
msgid_plural "%(count)d messages deleted successfully"
msgstr[0] "%(count)d meddelande raderadat"
msgstr[1] "%(count)d meddelanden raderade"
-#: extensions/amavis/views.py:191
+#: extensions/amavis/views.py:194
msgid "Request sent"
msgstr "Begäran skickad"
-#: extensions/amavis/views.py:197
+#: extensions/amavis/views.py:200
msgid "Message released"
msgstr "Meddelande släppt"
-#: extensions/amavis/views.py:225
+#: extensions/amavis/views.py:228
#, python-format
msgid "%(count)d request sent"
msgid_plural "%(count)d requests sent"
msgstr[0] "%(count)d förfrågning skickad"
msgstr[1] "%(count)d förfrågningar skickadade"
-#: extensions/amavis/views.py:246
+#: extensions/amavis/views.py:249
#, python-format
msgid "%(count)d message released successfully"
msgid_plural "%(count)d messages released successfully"
msgstr[0] "%(count)d meddelande frisläppt"
msgstr[1] "%(count)d meddelanden frisläppta"
+#: extensions/amavis/views.py:282
+#, fuzzy, python-format
+msgid "%(count)d message processed successfully"
+msgid_plural "%(count)d messages processed successfully"
+msgstr[0] "%(count)d meddelande frisläppt"
+msgstr[1] "%(count)d meddelanden frisläppta"
+
#: extensions/amavis/management/commands/amnotify.py:61
msgid "[modoboa] Pending release requests"
msgstr "[modoboa] Väntande release förfrågningar"
@@ -1741,48 +1816,59 @@ msgid "Banned"
msgstr "Förbjudna filter"
#: extensions/amavis/templates/amavis/main_action_bar.html:18
-#: extensions/amavis/templatetags/amavis_tags.py:19
-#: extensions/amavis/templatetags/amavis_tags.py:54
+#: extensions/amavis/templatetags/amavis_tags.py:24
+#: extensions/amavis/templatetags/amavis_tags.py:79
msgid "Release"
msgstr "Släpp"
#: extensions/amavis/templates/amavis/main_action_bar.html:23
-#: extensions/amavis/templatetags/amavis_tags.py:25
-#: extensions/amavis/templatetags/amavis_tags.py:61
+#: extensions/amavis/templatetags/amavis_tags.py:30
+#: extensions/amavis/templatetags/amavis_tags.py:86
#: extensions/webmail/templatetags/webmail_tags.py:32
msgid "Delete"
msgstr "Radera"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templatetags/amavis_tags.py:44
+#, fuzzy
+msgid "Mark as spam"
+msgstr "Markera meddelande"
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templatetags/amavis_tags.py:49
+msgid "Mark as non-spam"
+msgstr ""
+
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
#: extensions/sievefilters/forms.py:64
msgid "All messages"
msgstr "Alla meddelanden"
-#: extensions/amavis/templates/amavis/main_action_bar.html:31
+#: extensions/amavis/templates/amavis/main_action_bar.html:42
msgid "All"
msgstr ""
-#: extensions/amavis/templates/amavis/main_action_bar.html:32
+#: extensions/amavis/templates/amavis/main_action_bar.html:43
#, fuzzy
msgid "Spam only"
msgstr "Skräp"
-#: extensions/amavis/templates/amavis/main_action_bar.html:33
+#: extensions/amavis/templates/amavis/main_action_bar.html:44
#, fuzzy
msgid "Virus only"
msgstr "Virus"
-#: extensions/amavis/templates/amavis/main_action_bar.html:34
+#: extensions/amavis/templates/amavis/main_action_bar.html:45
#, fuzzy
msgid "Bad Header only"
msgstr "Dålig rubrik"
-#: extensions/amavis/templates/amavis/main_action_bar.html:35
+#: extensions/amavis/templates/amavis/main_action_bar.html:46
#, fuzzy
msgid "Bad MIME only"
msgstr "Dålig MIME"
-#: extensions/amavis/templates/amavis/main_action_bar.html:36
+#: extensions/amavis/templates/amavis/main_action_bar.html:47
#, fuzzy
msgid "Banned only"
msgstr "Förbjudna filter"
@@ -1831,7 +1917,7 @@ msgstr "Agera på detta meddelande:"
msgid "Please visit %(listingurl)s for a full listing."
msgstr "Besök %(listingurl)s för full lista."
-#: extensions/amavis/templatetags/amavis_tags.py:28
+#: extensions/amavis/templatetags/amavis_tags.py:35
msgid "View full headers"
msgstr "Visa meddelandehuvuden"
@@ -2278,7 +2364,7 @@ msgstr "Avsändare"
msgid "Recipient"
msgstr "Mottagare"
-#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:83
+#: extensions/sievefilters/forms.py:80 extensions/webmail/forms.py:84
msgid "Cc"
msgstr "Cc"
@@ -2536,19 +2622,19 @@ msgstr "Okänt grafisk uppsättning"
msgid "Bad custom period"
msgstr "Ogiltig anpassad tid"
-#: extensions/stats/templates/stats/index.html:33
+#: extensions/stats/templates/stats/index.html:28
msgid "Search a domain"
msgstr "Sök en domän"
-#: extensions/stats/templates/stats/index.html:37
+#: extensions/stats/templates/stats/index.html:32
msgid "Predefined time ranges"
msgstr "Fördefinierade tidsområden"
-#: extensions/stats/templates/stats/index.html:44
+#: extensions/stats/templates/stats/index.html:39
msgid "Custom time range"
msgstr "Anpassat tidsintervall"
-#: extensions/stats/templates/stats/index.html:57
+#: extensions/stats/templates/stats/index.html:52
msgid "Apply"
msgstr "Applicera"
@@ -2705,7 +2791,7 @@ msgstr "Server svar"
msgid "Unknown action"
msgstr "Okänd åtgärd"
-#: extensions/webmail/forms.py:84
+#: extensions/webmail/forms.py:85
msgid "Cci"
msgstr "BCC"
@@ -2912,15 +2998,15 @@ msgstr "Nej"
msgid "Failed to update password: %s"
msgstr "Misslyckades med att uppdatera lösenord: %s"
-#: lib/permissions.py:20
+#: lib/permissions.py:19
msgid "Simple user"
msgstr "Enkel användare"
-#: lib/permissions.py:22
+#: lib/permissions.py:21
msgid "Super administrator"
msgstr "Super administratör"
-#: lib/permissions.py:28
+#: lib/permissions.py:27
msgid "Domain administrator"
msgstr "Domän administratör"