diff --git a/doc/conf.py b/doc/conf.py index 1bef7c83d..222d6759b 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -50,7 +50,7 @@ copyright = u'2014, Antoine Nguyen' # The short X.Y version. version = '1.1' # The full version, including alpha/beta/rc tags. -release = '1.1.6' +release = '1.1.7' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/extending/events.rst b/doc/extending/events.rst index 41b742ff7..3b812db0b 100644 --- a/doc/extending/events.rst +++ b/doc/extending/events.rst @@ -715,10 +715,11 @@ Raised when an existing mailbox is modified. *Callback prototype*:: - def callback(newmailbox, oldmailbox): pass + def callback(mailbox): pass -* ``newmailbox`` is a ``Mailbox`` instance containing the new values -* ``oldmailbox`` is a ``Mailbox`` instance containing the old values +* ``mailbox`` is the ``Mailbox`` modified instance. It contains a + ``old_full_address`` extra field to check if the address was + modified. PasswordChange ============== diff --git a/doc/getting_started/upgrade.rst b/doc/getting_started/upgrade.rst index 0ebac6897..dc0fb6bbe 100644 --- a/doc/getting_started/upgrade.rst +++ b/doc/getting_started/upgrade.rst @@ -51,6 +51,14 @@ Then, follow the common procedure:: Eventually, restart the web server process according to the environment you did choose. See :ref:`webservers` for more details. +1.1.7: manual learning for SpamAssassin +======================================= + +A new feature allows administrators and users to manually train +SpamAssassin in order to customize its behaviour. + +Check :ref:`sa_manual_learning` to know more about this feature. + 1.1.6: Few bugfixes =================== diff --git a/doc/plugins/amavis.rst b/doc/plugins/amavis.rst index 8f6f37bca..fb5b043c9 100644 --- a/doc/plugins/amavis.rst +++ b/doc/plugins/amavis.rst @@ -203,7 +203,7 @@ feature: Self-service mode ================= -The *self-service* mode let users act on quarantined messages without +The *self-service* mode lets users act on quarantined messages without beeing authenticated. They can: * View messages @@ -232,3 +232,76 @@ Here is a link example:: http:///quarantine/%i/?rcpt=%R&secret_id=[:secret_id] +.. _sa_manual_learning: + +Manual SpamAssassin learning +============================ + +It is possible to manually train `SpamAssassin +`_ using the quarantine's content. By +train, we mean: + +* Mark message(s) as spam (false negative(s)) + +* Mark message(s) as non-spam (false positive(s)) + +This feature is available to all users (from super administrators to +simple users) but not enabled by default. + +SpamAssassin configuration +-------------------------- + +For better performance and to enable the per-user level, SpamAssassin +must store bayes information into a SQL database. + +Create a new database and a new user/password (using your favorite +database server) and edit the default configuration file +(:file:`/etc/spamassassin/local.cf`) to add the following lines +inside: + +.. sourcecode:: perl + + bayes_store_module Mail::SpamAssassin::BayesStore:: + bayes_sql_dsn + bayes_sql_username + bayes_sql_password + +Replace values between ``<>`` by yours. Possible values for ``Driver`` +are ``PgSQL`` or ``MySQL`` (non exhaustive list). The syntax for +``DSN`` depends on the driver you choose. Please consult the official +documentation. + +Enable the feature through Modoboa +---------------------------------- + +Manual learning is disabled by default. You can activate it through +the administration panel (*Modoboa > Paremeters > Amavis*). There two +learning levels: + +#. Global: available to administrators only. A single (global) bayes + database is shared between everyone. + +#. Per domain: available to administrators and domain + administrators. Each domain can have a dedicated database. + +#. Per user: each user can create its own database to customize the + way SpamAssassin will detect spam. + +The domain and user levels are not activated by default, dedicated +parameters are available through the panel. + +.. note:: + + Domain and user databases are only created the first time someone + calls the learning feature through the quarantine. + +.. warning:: + + A bayes database needs to reach pre-defined thresholds before it + can be used by SpamAssassin. The default values are **200** spams + and **200** hams. + +You will find other paramaters related to this feature. You won't need +to change them most of the time, unless SpamAssassin is hosted on a +different machine than Modoboa. (in this case, ``spamc`` will be used +instead of ``sa-learn``). diff --git a/modoboa/extensions/amavis/app_settings.py b/modoboa/extensions/amavis/app_settings.py index 00a099c4e..cff50a507 100644 --- a/modoboa/extensions/amavis/app_settings.py +++ b/modoboa/extensions/amavis/app_settings.py @@ -1,11 +1,16 @@ # coding: utf-8 -from django.utils.translation import ugettext_lazy as _ + from django import forms -from modoboa.lib.parameters import AdminParametersForm, UserParametersForm +from django.utils.translation import ugettext_lazy as _ + from modoboa.lib.formutils import SeparatorField, YesNoField, InlineRadioSelect +from modoboa.lib.parameters import AdminParametersForm, UserParametersForm class ParametersForm(AdminParametersForm): + + """Extension settings.""" + app = "amavis" qsettings_sep = SeparatorField(label=_("Quarantine settings")) @@ -22,7 +27,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( @@ -73,14 +79,80 @@ class ParametersForm(AdminParametersForm): widget=forms.TextInput(attrs={"class": "form-control"}) ) + lsep = SeparatorField(label=_("Manual learning")) + + manual_learning = YesNoField( + label=_("Enable manual learning"), + initial="yes", + help_text=_( + "Allow super administrators to manually train Spamassassin" + ) + ) + + sa_is_local = YesNoField( + label=_("Is Spamassassin local?"), + initial="yes", + help_text=_( + "Tell if Spamassassin is running on the same server than modoboa" + ) + ) + + default_user = forms.CharField( + label=_("Default user"), + initial="amavis", + help_text=_( + "Name of the user owning the default bayesian database" + ) + ) + + spamd_address = forms.CharField( + label=_("Spamd address"), + initial="127.0.0.1", + help_text=_("The IP address where spamd can be reached") + ) + + spamd_port = forms.IntegerField( + label=_("Spamd port"), + initial=783, + help_text=_("The TCP port spamd is listening on") + ) + + 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 simple users to personally train Spamassassin " + "(within a dedicated database)" + ) + ) + visibility_rules = { "am_pdp_host": "am_pdp_mode=inet", "am_pdp_port": "am_pdp_mode=inet", - "am_pdp_socket": "am_pdp_mode=unix" + "am_pdp_socket": "am_pdp_mode=unix", + + "sa_is_local": "manual_learning=yes", + "default_user": "manual_learning=yes", + "spamd_address": "sa_is_local=no", + "spamd_port": "sa_is_local=no", + "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 7d9cc82cb..72be441e9 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): @@ -57,3 +64,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/general_callbacks.py b/modoboa/extensions/amavis/general_callbacks.py index 4ec602842..bdcf5df00 100644 --- a/modoboa/extensions/amavis/general_callbacks.py +++ b/modoboa/extensions/amavis/general_callbacks.py @@ -8,6 +8,8 @@ from modoboa.extensions.amavis.lib import ( create_user_and_policy, update_user_and_policy, delete_user_and_policy, create_user_and_use_policy, delete_user ) +from .lib import manual_learning_enabled +from .models import Users @events.observe("UserMenuDisplay") @@ -23,22 +25,27 @@ def menu(target, user): @events.observe("DomainCreated") def on_domain_created(user, domain): - create_user_and_policy(domain.name) + create_user_and_policy("@{0}".format(domain.name)) @events.observe("DomainModified") def on_domain_modified(domain): - update_user_and_policy(domain.oldname, domain.name) + update_user_and_policy( + "@{0}".format(domain.oldname), + "@{0}".format(domain.name) + ) @events.observe("DomainDeleted") def on_domain_deleted(domain): - delete_user_and_policy(domain.name) + delete_user_and_policy("@{0}".format(domain.name)) @events.observe("DomainAliasCreated") def on_domain_alias_created(user, domainalias): - create_user_and_use_policy(domainalias.name, domainalias.target.name) + create_user_and_use_policy( + "@{0}".format(domainalias.name), domainalias.target.name + ) @events.observe("DomainAliasDeleted") @@ -46,7 +53,54 @@ def on_domain_alias_deleted(domainaliases): if isinstance(domainaliases, DomainAlias): domainaliases = [domainaliases] for domainalias in domainaliases: - delete_user(domainalias.name) + delete_user("@{0}".format(domainalias.name)) + + +@events.observe("MailboxModified") +def on_mailbox_modified(mailbox): + """Update amavis records if address has changed.""" + if parameters.get_admin("MANUAL_LEARNING") == "no" or \ + mailbox.full_address == mailbox.old_full_address: + return + user = Users.objects.select_related.get(email=mailbox.old_full_address) + full_address = mailbox.full_address + user.email = full_address + user.policy.policy_name = full_address[:32] + user.policy.sa_username = full_address + user.policy.save() + user.save() + + +@events.observe("MailboxDeleted") +def on_mailbox_deleted(mailbox): + """Clean amavis database when a mailbox is removed.""" + if parameters.get_admin("MANUAL_LEARNING") == "no": + return + delete_user_and_policy(mailbox.full_address) + + +@events.observe("MailboxAliasCreated") +def on_mailboxalias_created(user, alias): + """Create amavis record for the new alias. + + FIXME: how to deal with distibution lists ? + """ + if not manual_learning_enabled(user) or alias.type != "alias": + return + policy = Policy.objects.get( + policy_name=alias.mboxes.all()[0].full_address + ) + email = alias.full_address + Users.objects.create(email=email, policy=policy, fullname=email) + + +@events.observe("MailboxAliasDeleted") +def on_mailboxalias_deleted(alias): + """Clean amavis database when an alias is removed.""" + if parameters.get_admin("MANUAL_LEARNING") == "no": + return + if Users.objects.exists(email=alias.fullname): + Users.objects.delete(email=alias.fullname) @events.observe("GetStaticContent") diff --git a/modoboa/extensions/amavis/lib.py b/modoboa/extensions/amavis/lib.py index 0fcd1fb18..0a63eb08c 100644 --- a/modoboa/extensions/amavis/lib.py +++ b/modoboa/extensions/amavis/lib.py @@ -1,15 +1,21 @@ # coding: utf-8 -import socket -import re -import struct -import string + from functools import wraps -from django.core.urlresolvers import reverse +import re +import socket +import string +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): @@ -80,6 +86,100 @@ recipient=%s return False +class SpamassassinClient(object): + + """A stupid spamassassin client.""" + + 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 = {} + self._username_cache = [] + if user.group == "SimpleUsers": + user_level_learning = parameters.get_admin("USER_LEVEL_LEARNING") + if user_level_learning == "yes": + self._username = user.email + else: + self._username = None + self.error = None + if self._sa_is_local == "yes": + self._learn_cmd = "sa-learn --{0} --no-sync -u {1}" + self._learn_cmd_kwargs = {} + self._expected_exit_codes = [0] + else: + self._learn_cmd = "spamc -d {0} -p {1}".format( + parameters.get_admin("SPAMD_ADDRESS"), + parameters.get_admin("SPAMD_PORT") + ) + self._learn_cmd += " -L {0} -u {1}" + self._learn_cmd_kwargs = {} + self._expected_exit_codes = [5, 6] + + 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.""" + 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 + if username not in self._username_cache: + self._username_cache.append(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, rcpt, msg): + """Learn new spam.""" + return self._learn(rcpt, msg, "spam") + + def learn_ham(self, rcpt, msg): + """Learn new ham.""" + return self._learn(rcpt, msg, "ham") + + def done(self): + """Call this method at the end of the processing.""" + if self._sa_is_local: + for username in self._username_cache: + exec_cmd("sa-learn -u {0} --sync".format(username), + **self._learn_cmd_kwargs) + + class QuarantineNavigationParameters(NavigationParameters): """ Specific NavigationParameters subclass for the quarantine. @@ -89,7 +189,10 @@ class QuarantineNavigationParameters(NavigationParameters): request, 'quarantine_navparams' ) self.parameters += [ - ('msgtype', None, False), ('viewrequests', None, False) + ('pattern', '', False), + ('criteria', 'from_addr', False), + ('msgtype', None, False), + ('viewrequests', None, False) ] def _store_page(self): @@ -123,22 +226,23 @@ class QuarantineNavigationParameters(NavigationParameters): return url -def create_user_and_policy(name): +def create_user_and_policy(name, priority=7): """Create records. Create two records (a user and a policy) using :keyword:`name` as an identifier. :param str name: name + :return: the new ``Policy`` object """ policy = Policy.objects.create(policy_name=name[:32]) Users.objects.create( - email="@%s" % name, fullname=name, - priority=7, policy=policy + email=name, fullname=name, priority=priority, policy=policy ) + return policy -def create_user_and_use_policy(name, policy_name): +def create_user_and_use_policy(name, policy_name, priority=7): """Create a *users* record and use an existing policy. :param str name: user record name @@ -146,8 +250,7 @@ def create_user_and_use_policy(name, policy_name): """ policy = Policy.objects.get(policy_name=policy_name[:32]) Users.objects.create( - email="@%s" % name, fullname=name, - priority=7, policy=policy + email=name, fullname=name, priority=priority, policy=policy ) @@ -159,8 +262,8 @@ def update_user_and_policy(oldname, newname): """ if oldname == newname: return - u = Users.objects.get(email="@%s" % oldname) - u.email = "@%s" % newname + u = Users.objects.get(email=oldname) + u.email = newname u.fullname = newname u.policy.policy_name = newname[:32] u.policy.save() @@ -173,7 +276,7 @@ def delete_user_and_policy(name): :param str name: identifier """ try: - u = Users.objects.get(email="@%s" % name) + u = Users.objects.get(email=name) except Users.DoesNotExist: return u.policy.delete() @@ -186,6 +289,53 @@ def delete_user(name): :param str name: user record name """ try: - Users.objects.get(email="@%s" % name).delete() + Users.objects.get(email=name).delete() except Users.DoesNotExist: pass + + +def manual_learning_enabled(user): + """Check if manual learning is enabled or not. + + Also check for :kw:`user` if necessary. + + :return: True if learning is enabled, False otherwise. + """ + manual_learning = parameters.get_admin("MANUAL_LEARNING") == "yes" + if manual_learning and user.group != 'SuperAdmins': + 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_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 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 9a27c0a1c..700ae1f52 100644 --- a/modoboa/extensions/amavis/sql_connector.py +++ b/modoboa/extensions/amavis/sql_connector.py @@ -92,7 +92,7 @@ class SQLconnector(object): Filters: rs, rid, content """ - flt = Q(rs__in=[' ', 'V', 'R', 'p']) \ + flt = Q(rs__in=[' ', 'V', 'R', 'p', 'S', 'H']) \ if self.navparams.get('viewrequests', '0') != '1' else Q(rs='p') flt = self._apply_msgrcpt_filters(flt) pattern = self.navparams.get("pattern", "") @@ -122,7 +122,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 @@ -156,21 +156,21 @@ class SQLconnector(object): """ emails = [] for qm in self.messages[start - 1:stop]: - m = {"from": qm["mail__from_addr"], - "to": qm["rid__email"], - "subject": qm["mail__subject"], - "mailid": qm["mail__mail_id"], - "date": datetime.datetime.fromtimestamp(qm["mail__time_num"]), - "type": qm["content"], - "score": qm["bspam_level"]} - rs = qm["rs"] - if rs == 'D': + if qm["rs"] == 'D': continue - elif rs in ['', ' ']: + m = { + "from": qm["mail__from_addr"], + "to": qm["rid__email"], + "subject": qm["mail__subject"], + "mailid": qm["mail__mail_id"], + "date": datetime.datetime.fromtimestamp(qm["mail__time_num"]), + "type": qm["content"], + "score": qm["bspam_level"], + "status": qm["rs"] + } + if qm["rs"] in ['', ' ']: m["class"] = "unseen" - elif rs == 'R': - m["img_rstatus"] = static_url("pics/release.png") - elif rs == 'p': + elif qm["rs"] == 'p': m["class"] = "pending" emails.append(m) return emails @@ -222,6 +222,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): @@ -246,11 +251,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 3350fc8a2..b44445486 100644 --- a/modoboa/extensions/amavis/static/amavis/js/quarantine.js +++ b/modoboa/extensions/amavis/static/amavis/js/quarantine.js @@ -93,10 +93,18 @@ Quarantine.prototype = { $.proxy(this.release_selection, this)); $(document).on("click", "a[name=delete-multi]", $.proxy(this.delete_selection, this)); + $(document).on("click", "a[name=mark-as-spam-multi]", + $.proxy(this.mark_selection_as_spam, this)); + $(document).on("click", "a[name=mark-as-ham-multi]", + $.proxy(this.mark_selection_as_ham, this)); $(document).on("click", "a[name=viewrequests]", $.proxy(this.view_requests, this)); $(document).on("click", "a[name=release]", $.proxy(this.release, this)); $(document).on("click", "a[name=delete]", $.proxy(this.delete, this)); + $(document).on("click", "a[name=mark-as-spam]", + $.proxy(this.mark_as_spam, this)); + $(document).on("click", "a[name=mark-as-ham]", + $.proxy(this.mark_as_ham, this)); $(document).on("click", "a[name=headers]", $.proxy(this.headers, this)); $(document).on("click", "td[name=type] span", $.proxy(this.filter_by_type, this)); $(document).on("click", "#filters label", $.proxy(this.filter_by_type, this)); @@ -214,14 +222,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() { @@ -234,12 +240,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) { @@ -250,6 +274,62 @@ 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) { + 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?")); + } + }, + + /** + * Mark the current selection as ham. + * + * @param {Object} e - event object + */ + mark_selection_as_ham: function(e) { + 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) { var $link = get_target(e, "a"); @@ -262,10 +342,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?")); }, @@ -273,6 +358,38 @@ Quarantine.prototype = { this._send_action(e, gettext("Delete this message?")); }, + /** + * Mark the current message as spam. + * + * @param {Object} e - event object + */ + mark_as_spam: function(e) { + 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?")); + } + }, + + /** + * Mark the current message as ham. + * + * @param {Object} e - event object + */ + mark_as_ham: function(e) { + 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) { $mailcontent.find("#rawheaders").removeClass("hidden"); $mailcontent.find("#emailheaders").addClass("hidden"); @@ -320,15 +437,13 @@ Quarantine.prototype = { }, activate_buttons: function($tr) { - $("a[name=release-multi]").removeClass('disabled'); - $("a[name=delete-multi]").removeClass('disabled'); + $("a[name*=-multi]").removeClass('disabled'); $("#selectall").prop('checked', true); }, deactivate_buttons: function($tr) { if (!this.htmltable || !this.htmltable.current_selection().length) { - $("a[name=release-multi]").addClass('disabled'); - $("a[name=delete-multi]").addClass('disabled'); + $("a[name*=-multi]").addClass('disabled'); $("#selectall").prop('checked', false); } }, @@ -361,12 +476,13 @@ Quarantine.prototype = { }, action_cb: function(data) { - if (data.status == "ok") { - this.navobj.parse_string(data.url, true).update(true); - $("body").notify("success", data.respmsg, 2000); - } else { - $("body").notify("error", data.respmsg); + if (data.reload) { + this.navobj.update(true); } + if (data.url) { + this.navobj.parse_string(data.url, true).update(true); + } + $("body").notify("success", data.message, 2000); } }; diff --git a/modoboa/extensions/amavis/templates/amavis/emails_page.html b/modoboa/extensions/amavis/templates/amavis/emails_page.html index b534a8d46..0f7c3268e 100644 --- a/modoboa/extensions/amavis/templates/amavis/emails_page.html +++ b/modoboa/extensions/amavis/templates/amavis/emails_page.html @@ -1,4 +1,5 @@ {% load amavis_tags %} +{% load static %} {% for email in email_list %} @@ -9,7 +10,13 @@ {{ email.type|msgtype_to_html }} - {% if email.img_rstatus %}{% endif %} + {% if email.status == 'R' %} + + {% else if email.status == 'S' %} + + {% else if email.status == 'H' %} + + {% endif %} {{ email.score }} {{ email.to }} diff --git a/modoboa/extensions/amavis/templates/amavis/index.html b/modoboa/extensions/amavis/templates/amavis/index.html index d1ebfbe4a..40931b544 100644 --- a/modoboa/extensions/amavis/templates/amavis/index.html +++ b/modoboa/extensions/amavis/templates/amavis/index.html @@ -22,6 +22,8 @@ $(document).ready(function() { deflocation: "listing/?sort_order=-date&reset_page=true", defcallback: "listing_cb", load_page_url: "{% url 'amavis:mail_page' %}" + check_learning_rcpt: {{ check_learning_rcpt }}, + learning_recipient_url: "{% url 'amavis:learning_recipient_set' %}" }); }); @@ -29,8 +31,7 @@ $(document).ready(function() { {% block container_content %} -
{% endblock %} diff --git a/modoboa/extensions/amavis/templates/amavis/main_action_bar.html b/modoboa/extensions/amavis/templates/amavis/main_action_bar.html index 06375ff72..11313e87e 100644 --- a/modoboa/extensions/amavis/templates/amavis/main_action_bar.html +++ b/modoboa/extensions/amavis/templates/amavis/main_action_bar.html @@ -8,6 +8,7 @@ \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
\n

Das erste Element jeder Zeile ist zwingend und muss gleich zum vorhergehenden sein.

\n

Ein 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
\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" +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,123 +1457,215 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Quarantäne-Einstellungen" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" 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" - #: extensions/amavis/app_settings.py:19 +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" + +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Nachrichten freigegeben" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Freigegebene Nachrichten entfernen" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "Freigegebene Nachrichten löschen wenn Datenbank bereinigt wird" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Verbindungsmodus für Amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Modus für Zugriff auf den PDP-Server" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "PDP-Server Adresse" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "PDP-Server addresse (im inet-Modus)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "PDP-Server-Port" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "PDP-Server port (im inet-Modus)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "PDP-Server Socket" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Pfad zum PDP-Server Socket (im UNIX-Modus)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Abfrage-Intervall" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Prüf-Intervall nach neuen Quarantäne-Release-Anfragen" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Anwender dürfen Nachrichten in Quarantäne selber freigeben" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Anwender dürfen Nachrichten in Quarantäne selber freigeben" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "'Self-Service'-Modus aktivieren" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "'Self-Service'-Modus aktivieren" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Absender von Benachrichtigungen" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Standard-Editor" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "From:-Adresse" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Nur Spam" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Domänen-Aliase" + +#: extensions/amavis/forms.py:91 +#, fuzzy +msgid "User's database" +msgstr "Anwender Search Base" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Verbindung zu amavis fehlgeschlagen: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Keine Empfänger angegeben" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Virusfilter" @@ -1511,7 +1688,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 +1698,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 +1708,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 +1718,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "An" @@ -1556,49 +1741,65 @@ 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:31 msgid "Empty quarantine" msgstr "Quarantäne leeren" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Nachricht gelöscht" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Anfrage gesendet" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Nachricht freigegeben" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Wählen Sie eine Datei" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Offene Freigabeanfragen" @@ -1624,64 +1825,84 @@ msgid "Select" msgstr "Auswählen" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "Fehlerhafte Header" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Schlechtes MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Markiere Nachrichten" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "Alle" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +#, fuzzy +msgid "Clean only" +msgstr "Nur Unerwünschte Dateien" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "Nur Spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "Nur Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 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:50 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:51 msgid "Banned only" msgstr "Nur Unerwünschte Dateien" @@ -1693,8 +1914,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 +1948,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 +1974,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 +1985,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 +2006,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 +2060,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 +2073,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 +2101,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 +2176,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 +2202,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 +2236,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
  • \n" +"
  • relaydomainalias; name; target; enabled
  • \n" +msgstr "" +"\n" +"
  • relaydomain; name; target host; service; enabled; verify recipients
  • \n" "
  • relaydomainalias; name; target; enabled
  • \n" -msgstr "\n
  • relaydomain; name; target host; service; enabled; verify recipients
  • \n
  • relaydomainalias; 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 +2395,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 +2425,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 +2506,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 +2652,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 +2746,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 +2822,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 +3029,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/de/LC_MESSAGES/djangojs.po b/modoboa/locale/de/LC_MESSAGES/djangojs.po index ff8b53848..4aabff323 100644 --- a/modoboa/locale/de/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/de/LC_MESSAGES/djangojs.po @@ -1,21 +1,22 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Patrick Koetter , 2010 msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2013-12-15 09:23+0000\n" "Last-Translator: Antoine Nguyen \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" #: extensions/admin/static/admin/js/admin.js:32 @@ -34,39 +35,59 @@ msgstr "Diese Aktion wird ALLE mit der Domain verbundenen Daten löschen." msgid "" "This operation will remove all data associated to this domain, excepting " "accounts." -msgstr "Diese Aktion wird ALLE mit der Domain verbundenen Daten löschen - ausser Mailkonten." +msgstr "" +"Diese Aktion wird ALLE mit der Domain verbundenen Daten löschen - ausser " +"Mailkonten." #: extensions/admin/static/admin/js/admin.js:222 msgid "No domain administrator defined" msgstr "Domain-Administrator fehlt" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Verzeichnis der Mailbox nicht löschen" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Diese Auswahl freilassen?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Diese Auswahl löschen?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Diese Auswahl freilassen?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Diese Auswahl freilassen?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Diese Nachricht freilassen?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Diese Nachricht löschen?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Vollansicht Header anzeigen" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Vollansicht Header ausblenden" @@ -95,7 +116,7 @@ msgstr "Diesen Filter aktivieren?" msgid "active" msgstr "aktiv" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Domain suchen" diff --git a/modoboa/locale/en/LC_MESSAGES/django.po b/modoboa/locale/en/LC_MESSAGES/django.po index 76de9903a..0f0d93156 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,123 +1375,204 @@ 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 "" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 msgid "The e-mail address used to send notitications" msgstr "" -#: extensions/amavis/app_settings.py:91 extensions/webmail/app_settings.py:91 -msgid "Number of displayed emails per page" +#: extensions/amavis/app_settings.py:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" msgstr "" #: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +msgid "Default user" +msgstr "" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +msgid "Spamd address" +msgstr "" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +msgid "Spamd port" +msgstr "" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 extensions/webmail/app_settings.py:91 +msgid "Number of displayed emails per page" +msgstr "" + +#: extensions/amavis/app_settings.py:162 msgid "Set the maximum number of messages displayed in a page" msgstr "" -#: extensions/amavis/general_callbacks.py:82 +#: extensions/amavis/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +msgid "Domain's database" +msgstr "" + +#: extensions/amavis/forms.py:91 +msgid "User's database" +msgstr "" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "" +#: extensions/amavis/lib.py:131 +msgid "No recipient found" +msgstr "" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "" @@ -1547,8 +1628,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "" @@ -1559,49 +1640,64 @@ 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:31 msgid "Empty quarantine" msgstr "" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, python-format msgid "%(count)d message released successfully" msgid_plural "%(count)d messages released successfully" msgstr[0] "" msgstr[1] "" +#: extensions/amavis/views.py:309 +#, python-format +msgid "%(count)d message processed successfully" +msgid_plural "%(count)d messages processed successfully" +msgstr[0] "" +msgstr[1] "" + +#: extensions/amavis/views.py:341 +msgid "Select a database" +msgstr "" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "" @@ -1627,64 +1723,82 @@ msgid "Select" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:9 -msgid "Spam" +msgid "Clean" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:10 -msgid "Virus" +msgid "Spam" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:11 -msgid "Bad Header" +msgid "Virus" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:12 -msgid "Bad MIME" +msgid "Bad Header" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:13 +msgid "Bad MIME" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +msgid "Mark as spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +msgid "Clean only" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 msgid "Bad Header only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:35 +#: extensions/amavis/templates/amavis/main_action_bar.html:50 msgid "Bad MIME only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:36 +#: extensions/amavis/templates/amavis/main_action_bar.html:51 msgid "Banned only" msgstr "" @@ -1728,7 +1842,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 +2261,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 +2514,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 +2682,7 @@ msgstr "" msgid "Unknown action" msgstr "" -#: extensions/webmail/forms.py:84 +#: extensions/webmail/forms.py:85 msgid "Cci" msgstr "" @@ -2775,15 +2889,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/en/LC_MESSAGES/djangojs.po b/modoboa/locale/en/LC_MESSAGES/djangojs.po index 530dd8b34..225d3f316 100644 --- a/modoboa/locale/en/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/en/LC_MESSAGES/djangojs.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:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -39,33 +39,49 @@ msgstr "" msgid "No domain administrator defined" msgstr "" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +msgid "Mark this selection as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +msgid "Mark this selection as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "" @@ -94,7 +110,7 @@ msgstr "" msgid "active" msgstr "" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "" diff --git a/modoboa/locale/es/LC_MESSAGES/django.po b/modoboa/locale/es/LC_MESSAGES/django.po index abeb7228e..ba5a45a11 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,128 +1464,215 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Configuración de la cuarentena" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Tiempo máximo del mensaje" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "" "Máxima edad (en días) de los mensajes de cuarentena antes de proceder a su " "eliminación" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Publicando mensajes" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Eliminar mensajes publicados" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "" "Eliminar los mensajes marcados como publicados cuando se haga limpieza de la " "base de datos" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Modo de conexión con Amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Modo usado para acceder al servidor PDP" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "Dirección del servidor PDP" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "Dirección del servidor de PDP (si está en modo inet)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "Puerto del servidor PDP" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "Puerto del servidor de PDP (si está en modo inet)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "socket del servidor PDP" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Dirección del socket del servidor de PDP (si están en modo unix)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Intervalo de las peticiones de chequeo" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Intervalo entre dos peticiones de chequeo" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Permitir publicación directa" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Permitir a los usuarios enviar directamente sus mensajes" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Activar modo de autoservicio" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Activar el modo 'auto-servicio'" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Notificaciones al remitente" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Editor por defecto" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "De la dirección" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Correo basura" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Alias del dominio" + +#: extensions/amavis/forms.py:91 +#, fuzzy +msgid "User's database" +msgstr "Buscar base" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "La conexión con amavis falló: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "No ha puesto destinatario" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Filtro de virus" @@ -1649,8 +1736,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "A" @@ -1661,49 +1748,65 @@ 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:31 msgid "Empty quarantine" msgstr "Vaciar cuarentena" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Mensaje eliminado" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Petición enviada" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Mensaje publicado" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Seleccione un fichero" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Pendiente de publicar las peticiones" @@ -1730,70 +1833,90 @@ msgid "Select" msgstr "Seleccione un fichero" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Correo basura" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 #, fuzzy msgid "Bad Header" msgstr "Mala cabecera" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Mal MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 #, fuzzy 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Marcar mensajes" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +#, fuzzy +msgid "Clean only" +msgstr "Filtro de expulsados" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 #, fuzzy msgid "Spam only" msgstr "Correo basura" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 #, fuzzy msgid "Virus only" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 #, 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:50 #, 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:51 #, fuzzy msgid "Banned only" msgstr "Filtro de expulsados" @@ -1842,7 +1965,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 +2418,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 +2674,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 +2843,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 +3050,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/es/LC_MESSAGES/djangojs.po b/modoboa/locale/es/LC_MESSAGES/djangojs.po index 861ac1cb4..07e2924ad 100644 --- a/modoboa/locale/es/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/es/LC_MESSAGES/djangojs.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2013-06-03 16:32+0000\n" "Last-Translator: Pedro Gracia \n" "Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/" @@ -44,33 +44,51 @@ msgstr "" msgid "No domain administrator defined" msgstr "No hay un administrador de dominio definido" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "No eliminar el directorio del mailbox" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "¿Publicar esta selección?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "¿Eliminar esta selección?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "¿Publicar esta selección?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "¿Publicar esta selección?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "¿Publicar este mensaje?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "¿Eliminar este mensaje?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Ver todas las cabeceras" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Esconder todas las cabeceras" @@ -99,7 +117,7 @@ msgstr "¿Activar este conjunto de filtros?" msgid "active" msgstr "activo" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Buscar un dominio" diff --git a/modoboa/locale/fr/LC_MESSAGES/django.po b/modoboa/locale/fr/LC_MESSAGES/django.po index 8c4da86cd..b923e922b 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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" +msgstr "Domaine 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" @@ -1032,7 +1032,7 @@ msgstr "Ligne invalide : %s" #: extensions/admin/models/alias.py:157 #, python-format msgid "Domain '%s' does not exist" -msgstr "Domain '%s' inexistant" +msgstr "Domaine '%s' inexistant" #: extensions/admin/models/domain.py:28 #: extensions/admin/models/domain_alias.py:10 @@ -1078,23 +1078,23 @@ msgstr "Le domaine vers lequel cet alias pointe" #: extensions/admin/models/domain_alias.py:52 #, python-format msgid "Unknown domain %s" -msgstr "Domain %s inconnu" +msgstr "Domaine %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,17 +1312,17 @@ 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" +msgstr "Suivant" #: extensions/admin/views/domain.py:101 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" +msgstr "Précédent" #: extensions/admin/views/domain.py:125 msgid "Domain created" @@ -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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,125 +1464,211 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Paramètres de quarantaine" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Age maximal des messages" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "Age maximum (en jours) des messages en quarantaine avant suppression" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Libération des messages" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Supprimer les messages libérés" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "" "Supprimer les messages marqués comme relâchés pendant le nettoyage de la " "base de données" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Mode de connexion à Amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Mode utilisé pour accéder au serveur PDP" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "Adresse du serveur PDP" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "Adresse du serveur PDP (en mode inet)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "Port du serveur PDP" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "Port du serveur PDP (en mode inet)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "Socket du serveur PDP" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Emplacement de la socket du serveur PDP (en mode unix)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Intervalle entre deux requêtes de vérification" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Intervalle entre deux vérifications de requêtes en attente" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Autoriser la libération directe" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Autoriser les utilisateurs à relâcher directement leurs messages" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Activer le mode 'libre service'" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Activer le mode 'libre service'" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Emetteur des notifications" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "Apprentissage manuel" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "Activer l'apprentissage manuel" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" +"Autorise les super administrateurs à entrainer manuellement Spamassassin" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "Spamassassin est il local?" + +#: extensions/amavis/app_settings.py:95 +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:100 +msgid "Default user" +msgstr "Utilisateur par défaut" + +#: extensions/amavis/app_settings.py:103 +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:108 +msgid "Spamd address" +msgstr "Adresse de spamd" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "L'adresse IP à laquelle spamd peut etre joint" + +#: extensions/amavis/app_settings.py:114 +msgid "Spamd port" +msgstr "Port de spamd" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "Le port TCP sur lequel écoute spamd" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "Activer l'apprentissage manuel niveau domaine" + +#: extensions/amavis/app_settings.py:123 +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:129 +msgid "Enable per-user manual learning" +msgstr "Activer l'apprentissage manuel par utilisateur" + +#: extensions/amavis/app_settings.py:132 +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:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "Base globale" + +#: extensions/amavis/forms.py:89 +msgid "Domain's database" +msgstr "Base du domaine" + +#: extensions/amavis/forms.py:91 +msgid "User's database" +msgstr "Base de l'utilisateur" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "La connexion avec amavis a échoué : %s" +#: extensions/amavis/lib.py:131 +msgid "No recipient found" +msgstr "Aucun destinataire trouvé" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Filtrage des virus" @@ -1646,8 +1732,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "A" @@ -1658,49 +1744,64 @@ 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:31 msgid "Empty quarantine" msgstr "Quarantaine vide" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Message supprimé" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Requête envoyée" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Message relâché" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +msgid "Select a database" +msgstr "Sélectionner une base" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "Valider" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] requêtes de libération en attente" @@ -1726,64 +1827,82 @@ msgid "Select" msgstr "Sélectionner" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "Propre" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "Mauvais entête" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Mauvais type MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +msgid "Mark as spam" +msgstr "Marquer comme spam" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "Marquer comme non-spam" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "Tout" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +msgid "Clean only" +msgstr "Seulement les propres" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "Seulement le spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "Seulement les virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 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:50 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:51 msgid "Banned only" msgstr "Seulement les bannis" @@ -1831,7 +1950,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 +2388,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 +2645,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 +2813,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 +3020,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/fr/LC_MESSAGES/djangojs.po b/modoboa/locale/fr/LC_MESSAGES/djangojs.po index ee11efc9e..eee7b93bb 100644 --- a/modoboa/locale/fr/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/fr/LC_MESSAGES/djangojs.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:33+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2011-01-07 10:00+0100\n" "Last-Translator: Antoine Nguyen \n" "Language-Team: FR \n" @@ -41,33 +41,49 @@ msgstr "" msgid "No domain administrator defined" msgstr "Aucun administrateur de domaine défini" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Ne pas supprimer le répertoire de la boite aux lettres" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Relâcher cette sélection?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Supprimer cette sélection?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +msgid "Mark this selection as spam?" +msgstr "Marquer cette sélection comme étant du spam?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +msgid "Mark this selection as non-spam?" +msgstr "Marquer cette sélection comme n'étant pas du spam?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Relâcher cette message?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Supprimer ce message?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 -msgid "View full headers" -msgstr "Voir les entêtes complets" +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "Marquer comme spam?" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "Marquer comme non-spam?" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 +msgid "View full headers" +msgstr "Afficher tous les entêtes" + +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Cacher les entêtes complets" @@ -96,7 +112,7 @@ msgstr "Activer ce jeu de filtres?" msgid "active" msgstr "actif" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Checher un domaine" diff --git a/modoboa/locale/it/LC_MESSAGES/django.po b/modoboa/locale/it/LC_MESSAGES/django.po index 40c7c8474..fa6af7ef3 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,124 +1461,211 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Impostazioni quarantena" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Età massima dei messaggi" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "Età massima dei messaggi in quarantena" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Rilascio messaggi" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Rimozione dei messaggi rilasciati" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "" "Rimuovi i messaggi marcati come rilasciati durante la pulizia del database" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Modalità di connessione Amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Modalità utilizzata per accedere al server PDP" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "Indirizzo del server PDP" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "Indirizzo del server PDP (se in modalità inet)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "Porta del server PDP" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "Porta del server PDP (se in modalità inet)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "Socket del server PDP" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Percorso al socket del server PDP (se in modalità UNIX)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Intervallo di controllo delle request " -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Intervallo tra due controlli delle request di rilascio " -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Consenti il rilascio diretto" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Consenti agli utenti di rilasciare direttamente i loro messaggi" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Attiva la modalità self-service" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Attivazione della modalità 'self-service'" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Spedizione notifiche" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Editor predefinito" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "Mittente" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Solo messaggi di spam" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Alias del dominio" + +#: extensions/amavis/forms.py:91 +#, fuzzy +msgid "User's database" +msgstr "Base ricerca per gli utenti" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Connessione ad amavis fallita: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Non è stato definito un destinatario" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Filtro virus" @@ -1642,8 +1729,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "A" @@ -1654,49 +1741,65 @@ 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:31 msgid "Empty quarantine" msgstr "Svuota quarantena" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Messaggio eliminato" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Request inviata" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Messaggio rilasciato" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Seleziona un file" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Richieste di rilascio in sospeso" @@ -1722,64 +1825,84 @@ msgid "Select" msgstr "Seleziona" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "Intestazione errata" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "MIME errato" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Contrassegna i messaggi" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "Tutti" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +#, fuzzy +msgid "Clean only" +msgstr "Solo messaggi banditi" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 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:48 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:49 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:50 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:51 msgid "Banned only" msgstr "Solo messaggi banditi" @@ -1827,7 +1950,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 +2394,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 +2651,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 +2821,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 +3028,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/it/LC_MESSAGES/djangojs.po b/modoboa/locale/it/LC_MESSAGES/djangojs.po index bf8c313fd..0cbcc4fe4 100644 --- a/modoboa/locale/it/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/it/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2013-12-23 00:58+0100\n" "Last-Translator: Alberto Berti \n" "Language-Team: Italiano \n" @@ -41,33 +41,51 @@ msgstr "" msgid "No domain administrator defined" msgstr "Non è stato definito un amministratore di dominio" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Non eliminare la cartella della casella posta" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Rilasciare questa selezione?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Eliminare questa selezione?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Rilasciare questa selezione?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Rilasciare questa selezione?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Rilasciare questo messaggio?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Eliminare questo messaggio?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Visualizza tutte le intestazioni" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Nascondi le intestazioni" @@ -96,7 +114,7 @@ msgstr "Attivare il gruppo di filtri?" msgid "active" msgstr "attivo" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Cerca un dominio" diff --git a/modoboa/locale/nl_NL/LC_MESSAGES/django.po b/modoboa/locale/nl_NL/LC_MESSAGES/django.po index 17b78a3d4..6ff0d9d46 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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):

    \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 "\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 \nde maillijst.

    \n

    Fouten 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 owner" @@ -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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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
    \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" +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
    \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" +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,123 +1466,215 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Quarantaine instellingen" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" 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" - #: extensions/amavis/app_settings.py:19 +msgid "Quarantine messages maximum age (in days) before deletion" +msgstr "" +"Maximum bewaartijd quarantaine berichten (in dagen) voordat ze verwijderd " +"worden" + +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Berichten worden vrijgegeven" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Verwijderde vrijgegeven berichten" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 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 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Modus om met Amavis te verbinden" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Mode die gebruikt word om met de PDP server te verbinden" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "PDP server adres" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "PDP server adres (indien inet mode gebruikt word)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "PDP server poort" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "PDP server poort (indien inet mode gebruikt word)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" 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)" - #: extensions/amavis/app_settings.py:54 +msgid "Path to the PDP server socket (if unix mode)" +msgstr "" +"Locatie naar de PDP server socket (indien unix socket mode gebruikt word)" + +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Controleer tijdspanne tussen verzoeken" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Periode tussen twee vrijgeef verzoeken controles" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Sta toe om direct vrij te geven" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Sta een gebruiker to om zelf berichten vrij te geven" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Activeer de 'zelfbedienings' mode" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Activeer de 'zelfbedienings' mode" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Afzender van notificaties" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Standaard editor" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "Van adres" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Alleen spam" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Domein aliassen" + +#: extensions/amavis/forms.py:91 +#, fuzzy +msgid "User's database" +msgstr "Gebruikers zoekbasis" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Verbinding met amavis mislukt: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Geen ontvanger opgegeven" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Virus filter" @@ -1511,7 +1697,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 +1707,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 +1717,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 +1727,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "Naar" @@ -1556,49 +1750,65 @@ 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:31 msgid "Empty quarantine" msgstr "Niets in quarantaine" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Bericht verwijderd" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Verzoek ingediend" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Bericht vrijgegeven" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Bestand selecteren" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Openstaand quarantaine vrijgeef verzoek" @@ -1624,64 +1834,84 @@ msgid "Select" msgstr "Selecteren" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Ongewenst" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "Ongeldige Header" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Verkeerde MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Markeer berichten" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "Alles" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +#, fuzzy +msgid "Clean only" +msgstr "Alleen geband" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "Alleen spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "Alleen virussen" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 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:50 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:51 msgid "Banned only" msgstr "Alleen geband" @@ -1693,8 +1923,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 +1959,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 +1982,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 +2090,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 +2105,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 +2181,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 +2206,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 +2240,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
  • \n" +"
  • relaydomainalias; name; target; enabled
  • \n" +msgstr "" +"\n" +"
  • relaydomain; name; target host; service; enabled; verify recipients
  • \n" "
  • relaydomainalias; name; target; enabled
  • \n" -msgstr "\n
  • relaydomain; name; target host; service; enabled; verify recipients
  • \n
  • relaydomainalias; 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 +2313,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 +2399,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 +2508,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 +2654,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 +2822,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 +3029,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/nl_NL/LC_MESSAGES/djangojs.po b/modoboa/locale/nl_NL/LC_MESSAGES/djangojs.po index 1aaef7574..588049ea0 100644 --- a/modoboa/locale/nl_NL/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/nl_NL/LC_MESSAGES/djangojs.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: # TuxBrother , 2014 # TuxBrother , 2014 @@ -9,14 +9,15 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2014-04-16 12:58+0000\n" "Last-Translator: TuxBrother \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" #: extensions/admin/static/admin/js/admin.js:32 @@ -29,45 +30,67 @@ msgstr "De map van dit domein niet verwijderen (Zal de data ervan behouden)" #: extensions/admin/static/admin/js/admin.js:173 msgid "This operation will remove ALL data associated to this domain." -msgstr "Deze actie zal ALLE data verwijderen die bij dit domein hoort. Wilt u doorgaan?" +msgstr "" +"Deze actie zal ALLE data verwijderen die bij dit domein hoort. Wilt u " +"doorgaan?" #: extensions/admin/static/admin/js/admin.js:174 msgid "" "This operation will remove all data associated to this domain, excepting " "accounts." -msgstr "Deze actie zal alle data die bij dit domein hoort verwijderen, behalve de gebruikers." +msgstr "" +"Deze actie zal alle data die bij dit domein hoort verwijderen, behalve de " +"gebruikers." #: extensions/admin/static/admin/js/admin.js:222 msgid "No domain administrator defined" msgstr "Geen administrator toegewezen" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Verwijder de map van deze mailbox niet (zal de data ervan behouden)" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Wilt u deze selectie loslaten?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Selectie verwijderen?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Wilt u deze selectie loslaten?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Wilt u deze selectie loslaten?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Dit bericht loslaten?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Dit bericht verwijderen?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Volledige headers weergeven" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Volledige headers verbergen" @@ -96,7 +119,7 @@ msgstr "Wilt u deze filterset activeren?" msgid "active" msgstr "activeren" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Zoek een domein" diff --git a/modoboa/locale/pt_PT/LC_MESSAGES/django.po b/modoboa/locale/pt_PT/LC_MESSAGES/django.po index 535e422f6..692fb6b59 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,127 +1430,213 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Definições de quarentena" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Idade maxima da messagem" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "" "Tempo máximo que as mensagens ficam na quarentena (em dias) até serem " "eliminadas" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Libertar mensagens" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Remover mensagens libertadas" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "" "Remova as mensagens, marcadas como enviadas, durante a limpeza da base de " "dados" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Modo de ligação ao amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Método usado para aceder ao servidor PDP" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "Endereço do servidor PDP" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "Endereço do servidor PDP (método inet)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "Porta do servidor PDP" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "Porta do servidor PDP (método inet)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "Socket do servidor PDP" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Caminho para a socket do servidor PDP (método unix)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Intervalo de verificação de pedidos" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Intervalo entre dois pedidos " -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Permitir envio direto" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Permitir que aos utilizadores libertar mensagens diretamente" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Ativar o modo de self-service" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Ativar o modo 'self-service'" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Notificações de remetente" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Editor predefinido" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "Do endereço" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Importar" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Aliases de domínio" + +#: extensions/amavis/forms.py:91 +msgid "User's database" +msgstr "" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Não foi possível estabelecer ligação com o amavis: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Sem destinatário definido" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Filtro de vírus" @@ -1614,8 +1700,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "Para" @@ -1626,49 +1712,65 @@ 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:31 msgid "Empty quarantine" msgstr "Quarentena vazia" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Mensagem apagada" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Pedido enviado" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Mensagem libertada" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Escolha um ficheiro" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Pedidos de laçamento pendentes" @@ -1694,64 +1796,83 @@ msgid "Select" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Spam" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Vírus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Formato MIME inválido" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Marcar mensagens" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +msgid "Clean only" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 msgid "Bad Header only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:35 +#: extensions/amavis/templates/amavis/main_action_bar.html:50 msgid "Bad MIME only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:36 +#: extensions/amavis/templates/amavis/main_action_bar.html:51 msgid "Banned only" msgstr "" @@ -1799,7 +1920,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 +2346,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 +2601,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 +2769,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 +2976,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/pt_PT/LC_MESSAGES/djangojs.po b/modoboa/locale/pt_PT/LC_MESSAGES/djangojs.po index b89b1754d..752cea653 100644 --- a/modoboa/locale/pt_PT/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/pt_PT/LC_MESSAGES/djangojs.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:33+0200\n" +"POT-Creation-Date: 2014-10-29 20:23+0100\n" "PO-Revision-Date: 2013-12-23 11:22+0000\n" "Last-Translator: lusitan \n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/" @@ -45,33 +45,51 @@ msgstr "" msgid "No domain administrator defined" msgstr "Não está definido nenhum administrador para o domínio" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Não excluir o diretório da caixa de correio" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Libertar itens seleccionados?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Eliminar itens seleccionados?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Libertar itens seleccionados?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Libertar itens seleccionados?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Libertar esta mensagem?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Eliminar esta mensagem?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Ver cabeçalho completo" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Esconder cabeçalho completo" @@ -100,7 +118,7 @@ msgstr "Activar estes filtros?" msgid "active" msgstr "activo" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Pesquisar domínio" diff --git a/modoboa/locale/ru/LC_MESSAGES/django.po b/modoboa/locale/ru/LC_MESSAGES/django.po index 4f04c2f31..4e74b14c7 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,125 +1421,211 @@ 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 "Карантин" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Настройки карантина" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Максимальное время жизни сообщения" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "" "Максимальный срок хранения сообщений в карантине (в днях) перед удалением" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Сообщение деблокировано" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Удалить деблокированные сообщения" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "Удалить сообщения отмеченные как деблокированные при очистке базы" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Режим подключения Amavis" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Режим подключения к PDP серверу" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "Адрес сервера PDP" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "Адрес PDP сервера (интернет режим)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "Порт сервера PDP" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "Порт PDP сервера (интернет режим)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "Сокет сервера PDP" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Путь к PDP сокету сервера (для UNIX режима)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Интервал проверки запросов" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Интервал между запросами на деблокирование для доставки" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Разрешить прямое деблокирование" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "" "Позволить пользователю самостоятельно деблокировать сообщения для доставки" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Разрешить режим самообслуживания" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Активировать режим 'самообслуживания'" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Уведомления отправителю" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Редактор по умолчанию" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "Адрес отправителя" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Импорт" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 msgid "Set the maximum number of messages displayed in a page" msgstr "Установить максимальное количество сообщений показываемых на странице" -#: extensions/amavis/general_callbacks.py:82 +#: extensions/amavis/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Синонимы доменов" + +#: extensions/amavis/forms.py:91 +msgid "User's database" +msgstr "" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Ошибка соединания с Amavis %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Получатель не определен" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Фильтр вирусов" @@ -1603,8 +1689,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "Кому" @@ -1615,21 +1701,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:31 msgid "Empty quarantine" msgstr "очистить карантин" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Сообщение удалено" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, python-format msgid "%(count)d message deleted successfully" msgid_plural "%(count)d messages deleted successfully" @@ -1637,15 +1723,15 @@ msgstr[0] "%(count)d сообщение успешно удалено" msgstr[1] "%(count)d сообщения успешно удалено" msgstr[2] "%(count)d сообщений успешно удалено" -#: extensions/amavis/views.py:191 +#: extensions/amavis/views.py:217 msgid "Request sent" msgstr "Запрос послан" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Сообщение деблокировано" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, python-format msgid "%(count)d request sent" msgid_plural "%(count)d requests sent" @@ -1653,7 +1739,7 @@ msgstr[0] "%(count)d запрос послан" msgstr[1] "%(count)d запроса полано" msgstr[2] "%(count)d запросов послано" -#: extensions/amavis/views.py:246 +#: extensions/amavis/views.py:271 #, python-format msgid "%(count)d message released successfully" msgid_plural "%(count)d messages released successfully" @@ -1661,6 +1747,23 @@ msgstr[0] "%(count)d сообщение успешно деблокирован msgstr[1] "%(count)d сообщения успешно деблокировано" msgstr[2] "%(count)d сообщений успешно деблокировано" +#: extensions/amavis/views.py:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Выберите файл" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Заявки для включения в следующий релиз" @@ -1686,64 +1789,83 @@ msgid "Select" msgstr "" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Спам" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Вирус" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 msgid "Bad Header" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Ошибка MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Пометить сообщение" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +msgid "Clean only" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 msgid "Spam only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 msgid "Virus only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 msgid "Bad Header only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:35 +#: extensions/amavis/templates/amavis/main_action_bar.html:50 msgid "Bad MIME only" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:36 +#: extensions/amavis/templates/amavis/main_action_bar.html:51 msgid "Banned only" msgstr "" @@ -1794,7 +1916,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 +2343,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 +2597,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 +2766,7 @@ msgstr "Ответ сервера" msgid "Unknown action" msgstr "Неизвестное действие" -#: extensions/webmail/forms.py:84 +#: extensions/webmail/forms.py:85 msgid "Cci" msgstr "Скрытая копия" @@ -2853,15 +2975,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/ru/LC_MESSAGES/djangojs.po b/modoboa/locale/ru/LC_MESSAGES/djangojs.po index 90547c2ab..9b548b0b9 100644 --- a/modoboa/locale/ru/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/ru/LC_MESSAGES/djangojs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+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/" @@ -43,33 +43,51 @@ msgstr "" msgid "No domain administrator defined" msgstr "Не указан администратор домена" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Не удаляйте каталог почтовых ящиков" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Деблокировать отмеченные?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Удалить отмеченные?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Деблокировать отмеченные?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Деблокировать отмеченные?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Деблокировать сообщение?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Удалить сообщение?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Просмотр всех заголовков" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Скрыть все заголовки" @@ -98,7 +116,7 @@ msgstr "Активировать набор фильтров?" msgid "active" msgstr "активно" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Найти домен" diff --git a/modoboa/locale/sv/LC_MESSAGES/django.po b/modoboa/locale/sv/LC_MESSAGES/django.po index a78510bb3..0ece68a2c 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-11-04 11:51+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:157 +#: extensions/amavis/templates/amavis/main_action_bar.html:41 #: 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:172 +#: extensions/amavis/views.py:176 extensions/amavis/views.py:207 +#: extensions/amavis/views.py:212 extensions/amavis/views.py:214 #: 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,124 +1457,211 @@ 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" -#: extensions/amavis/app_settings.py:11 +#: extensions/amavis/app_settings.py:14 msgid "Quarantine settings" msgstr "Karantän inställningar" -#: extensions/amavis/app_settings.py:14 +#: extensions/amavis/app_settings.py:17 msgid "Maximum message age" msgstr "Maximal meddelandeålder" -#: extensions/amavis/app_settings.py:16 +#: extensions/amavis/app_settings.py:19 msgid "Quarantine messages maximum age (in days) before deletion" msgstr "Maximalt antal dagar meddelanden behålls i karantän innan radering" -#: extensions/amavis/app_settings.py:19 +#: extensions/amavis/app_settings.py:22 msgid "Messages releasing" msgstr "Meddelanden frisläppta" -#: extensions/amavis/app_settings.py:22 +#: extensions/amavis/app_settings.py:25 msgid "Remove released messages" msgstr "Radera frisläppta meddelanden" -#: extensions/amavis/app_settings.py:24 +#: extensions/amavis/app_settings.py:27 msgid "Remove messages marked as released while cleaning up the database" msgstr "Ta bort meddelanden markerade som släppta när vi städar databasen" -#: extensions/amavis/app_settings.py:28 +#: extensions/amavis/app_settings.py:32 msgid "Amavis connection mode" msgstr "Amavis anslutningsläge" -#: extensions/amavis/app_settings.py:31 +#: extensions/amavis/app_settings.py:35 msgid "Mode used to access the PDP server" msgstr "Läge som används för att komma åt PDP-servern" -#: extensions/amavis/app_settings.py:36 +#: extensions/amavis/app_settings.py:40 msgid "PDP server address" msgstr "PDP server adress" -#: extensions/amavis/app_settings.py:38 +#: extensions/amavis/app_settings.py:42 msgid "PDP server address (if inet mode)" msgstr "PDP-server adress (om inet läge)" -#: extensions/amavis/app_settings.py:42 +#: extensions/amavis/app_settings.py:46 msgid "PDP server port" msgstr "PDP server port" -#: extensions/amavis/app_settings.py:44 +#: extensions/amavis/app_settings.py:48 msgid "PDP server port (if inet mode)" msgstr "PDP serverport (om inet läge)" -#: extensions/amavis/app_settings.py:48 +#: extensions/amavis/app_settings.py:52 msgid "PDP server socket" msgstr "PDP server socket" -#: extensions/amavis/app_settings.py:50 +#: extensions/amavis/app_settings.py:54 msgid "Path to the PDP server socket (if unix mode)" msgstr "Sökväg till PDP-servern uttaget (om Unix-läge)" -#: extensions/amavis/app_settings.py:54 +#: extensions/amavis/app_settings.py:58 msgid "Check requests interval" msgstr "Intervall kontroll begäran" -#: extensions/amavis/app_settings.py:56 +#: extensions/amavis/app_settings.py:60 msgid "Interval between two release requests checks" msgstr "Intervall mellan frisläppskontroller" -#: extensions/amavis/app_settings.py:60 +#: extensions/amavis/app_settings.py:64 msgid "Allow direct release" msgstr "Möjliggör direkt frisläpp" -#: extensions/amavis/app_settings.py:62 +#: extensions/amavis/app_settings.py:66 msgid "Allow users to directly release their messages" msgstr "Tillåt användare att frisläppa sina meddelanden" -#: extensions/amavis/app_settings.py:66 +#: extensions/amavis/app_settings.py:70 msgid "Enable self-service mode" msgstr "Aktivera \"själv-service\" läge" -#: extensions/amavis/app_settings.py:68 +#: extensions/amavis/app_settings.py:72 msgid "Activate the 'self-service' mode" msgstr "Aktivera \"själv-service\" läge" -#: extensions/amavis/app_settings.py:72 +#: extensions/amavis/app_settings.py:76 msgid "Notifications sender" msgstr "Notifierings avsändare" -#: extensions/amavis/app_settings.py:74 +#: extensions/amavis/app_settings.py:78 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:81 +#: extensions/amavis/templates/amavis/main_action_bar.html:28 +msgid "Manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:84 +msgid "Enable manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:87 +msgid "Allow super administrators to manually train Spamassassin" +msgstr "" + +#: extensions/amavis/app_settings.py:92 +msgid "Is Spamassassin local?" +msgstr "" + +#: extensions/amavis/app_settings.py:95 +msgid "Tell if Spamassassin is running on the same server than modoboa" +msgstr "" + +#: extensions/amavis/app_settings.py:100 +#, fuzzy +msgid "Default user" +msgstr "Standard editor" + +#: extensions/amavis/app_settings.py:103 +msgid "Name of the user owning the default bayesian database" +msgstr "" + +#: extensions/amavis/app_settings.py:108 +#, fuzzy +msgid "Spamd address" +msgstr "Från adress" + +#: extensions/amavis/app_settings.py:110 +msgid "The IP address where spamd can be reached" +msgstr "" + +#: extensions/amavis/app_settings.py:114 +#, fuzzy +msgid "Spamd port" +msgstr "Skräp" + +#: extensions/amavis/app_settings.py:116 +msgid "The TCP port spamd is listening on" +msgstr "" + +#: extensions/amavis/app_settings.py:120 +msgid "Enable per-domain manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:123 +msgid "" +"Allow domain administrators to train Spamassassin (within dedicated per-" +"domain databases)" +msgstr "" + +#: extensions/amavis/app_settings.py:129 +msgid "Enable per-user manual learning" +msgstr "" + +#: extensions/amavis/app_settings.py:132 +msgid "" +"Allow simple users to personally train Spamassassin (within a dedicated " +"database)" +msgstr "" + +#: extensions/amavis/app_settings.py:161 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:162 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/forms.py:83 +msgid "Global database" +msgstr "" + +#: extensions/amavis/forms.py:89 +#, fuzzy +msgid "Domain's database" +msgstr "Domän alias" + +#: extensions/amavis/forms.py:91 +#, fuzzy +msgid "User's database" +msgstr "Sök bas" + +#: 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:62 #, python-format msgid "Connection to amavis failed: %s" msgstr "Anslutning till amavis misslyckades: %s" +#: extensions/amavis/lib.py:131 +#, fuzzy +msgid "No recipient found" +msgstr "Ingen mottagare definierad" + #: extensions/amavis/models.py:93 msgid "Virus filter" msgstr "Virus filter" @@ -1638,8 +1725,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:106 +#: extensions/webmail/forms.py:83 msgid "To" msgstr "Till" @@ -1650,49 +1737,65 @@ 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:31 msgid "Empty quarantine" msgstr "Karantän tom" -#: extensions/amavis/views.py:149 +#: extensions/amavis/views.py:177 msgid "Message deleted" msgstr "Meddelande raderat" -#: extensions/amavis/views.py:168 +#: extensions/amavis/views.py:194 #, 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:217 msgid "Request sent" msgstr "Begäran skickad" -#: extensions/amavis/views.py:197 +#: extensions/amavis/views.py:223 msgid "Message released" msgstr "Meddelande släppt" -#: extensions/amavis/views.py:225 +#: extensions/amavis/views.py:250 #, 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:271 #, 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:309 +#, 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/views.py:341 +#, fuzzy +msgid "Select a database" +msgstr "Välj en fil" + +#: extensions/amavis/views.py:345 +msgid "Validate" +msgstr "" + #: extensions/amavis/management/commands/amnotify.py:61 msgid "[modoboa] Pending release requests" msgstr "[modoboa] Väntande release förfrågningar" @@ -1719,70 +1822,90 @@ msgid "Select" msgstr "Välj en fil" #: extensions/amavis/templates/amavis/main_action_bar.html:9 +msgid "Clean" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:10 msgid "Spam" msgstr "Skräp" -#: extensions/amavis/templates/amavis/main_action_bar.html:10 +#: extensions/amavis/templates/amavis/main_action_bar.html:11 msgid "Virus" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:11 +#: extensions/amavis/templates/amavis/main_action_bar.html:12 #, fuzzy msgid "Bad Header" msgstr "Dålig rubrik" -#: extensions/amavis/templates/amavis/main_action_bar.html:12 +#: extensions/amavis/templates/amavis/main_action_bar.html:13 msgid "Bad MIME" msgstr "Dålig MIME" -#: extensions/amavis/templates/amavis/main_action_bar.html:13 +#: extensions/amavis/templates/amavis/main_action_bar.html:14 #, fuzzy 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/templates/amavis/main_action_bar.html:19 +#: extensions/amavis/templatetags/amavis_tags.py:24 +#: extensions/amavis/templatetags/amavis_tags.py:85 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/templates/amavis/main_action_bar.html:24 +#: extensions/amavis/templatetags/amavis_tags.py:30 +#: extensions/amavis/templatetags/amavis_tags.py:92 #: 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:33 +#: extensions/amavis/templatetags/amavis_tags.py:44 +#, fuzzy +msgid "Mark as spam" +msgstr "Markera meddelande" + +#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templatetags/amavis_tags.py:52 +msgid "Mark as non-spam" +msgstr "" + +#: extensions/amavis/templates/amavis/main_action_bar.html:43 #: 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:43 msgid "All" msgstr "" -#: extensions/amavis/templates/amavis/main_action_bar.html:32 +#: extensions/amavis/templates/amavis/main_action_bar.html:45 +#, fuzzy +msgid "Clean only" +msgstr "Förbjudna filter" + +#: extensions/amavis/templates/amavis/main_action_bar.html:47 #, fuzzy msgid "Spam only" msgstr "Skräp" -#: extensions/amavis/templates/amavis/main_action_bar.html:33 +#: extensions/amavis/templates/amavis/main_action_bar.html:48 #, fuzzy msgid "Virus only" msgstr "Virus" -#: extensions/amavis/templates/amavis/main_action_bar.html:34 +#: extensions/amavis/templates/amavis/main_action_bar.html:49 #, 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:50 #, 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:51 #, fuzzy msgid "Banned only" msgstr "Förbjudna filter" @@ -1831,7 +1954,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 +2401,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 +2659,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 +2828,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 +3035,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" diff --git a/modoboa/locale/sv/LC_MESSAGES/djangojs.po b/modoboa/locale/sv/LC_MESSAGES/djangojs.po index 006d844cd..893a81066 100644 --- a/modoboa/locale/sv/LC_MESSAGES/djangojs.po +++ b/modoboa/locale/sv/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-08-24 12:32+0200\n" +"POT-Creation-Date: 2014-10-29 20:22+0100\n" "PO-Revision-Date: 2013-05-23 08:22+0000\n" "Last-Translator: ogg1980 \n" "Language-Team: Swedish (http://www.transifex.com/projects/p/modoboa/language/" @@ -43,33 +43,51 @@ msgstr "" msgid "No domain administrator defined" msgstr "Ingen domänadministratör definierad" -#: extensions/admin/static/admin/js/admin.js:291 +#: extensions/admin/static/admin/js/admin.js:292 msgid "Do not delete mailbox directory" msgstr "Radera inte brevlådans katalog" -#: extensions/amavis/static/amavis/js/quarantine.js:180 +#: extensions/amavis/static/amavis/js/quarantine.js:211 msgid "Release this selection?" msgstr "Släpp markerat urval?" -#: extensions/amavis/static/amavis/js/quarantine.js:184 +#: extensions/amavis/static/amavis/js/quarantine.js:215 msgid "Delete this selection?" msgstr "Radera markerat urval?" -#: extensions/amavis/static/amavis/js/quarantine.js:203 +#: extensions/amavis/static/amavis/js/quarantine.js:255 +#, fuzzy +msgid "Mark this selection as spam?" +msgstr "Släpp markerat urval?" + +#: extensions/amavis/static/amavis/js/quarantine.js:270 +#, fuzzy +msgid "Mark this selection as non-spam?" +msgstr "Släpp markerat urval?" + +#: extensions/amavis/static/amavis/js/quarantine.js:295 #: extensions/amavis/static/amavis/js/selfservice.js:17 msgid "Release this message?" msgstr "Släpp detta meddelande?" -#: extensions/amavis/static/amavis/js/quarantine.js:207 +#: extensions/amavis/static/amavis/js/quarantine.js:299 #: extensions/amavis/static/amavis/js/selfservice.js:21 msgid "Delete this message?" msgstr "Radera detta meddelande?" -#: extensions/amavis/static/amavis/js/quarantine.js:224 +#: extensions/amavis/static/amavis/js/quarantine.js:314 +msgid "Mark as spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:330 +msgid "Mark as non-spam?" +msgstr "" + +#: extensions/amavis/static/amavis/js/quarantine.js:348 msgid "View full headers" msgstr "Visa meddelandehuvud" -#: extensions/amavis/static/amavis/js/quarantine.js:229 +#: extensions/amavis/static/amavis/js/quarantine.js:353 msgid "Hide full headers" msgstr "Göm meddelandehuvud" @@ -98,7 +116,7 @@ msgstr "Aktivera filteruppsättning?" msgid "active" msgstr "aktivera" -#: extensions/stats/static/stats/js/stats.js:37 +#: extensions/stats/static/stats/js/stats.js:38 msgid "Search a domain" msgstr "Sök domän" diff --git a/setup.py b/setup.py index 372d71e2e..926857f96 100644 --- a/setup.py +++ b/setup.py @@ -54,7 +54,7 @@ def read(fname): setup( name="modoboa", - version='1.1.6', + version='1.1.7', url='http://modoboa.org/', license='MIT', description="Mail hosting made simple",