mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-20 06:08:35 +02:00
Merge branch 'master' into refactor/documentation
Conflicts: doc/manual_installation/dovecot.rst
This commit is contained in:
+1
-4
@@ -2,7 +2,7 @@
|
||||
`Modoboa <http://modoboa.org/>`_
|
||||
################################
|
||||
|
||||
|travis| |codecov| |landscape| |latest-version| |downloads|
|
||||
|travis| |codecov| |landscape| |latest-version|
|
||||
|
||||
Modoboa is a mail hosting and management platform including a modern
|
||||
and simplified Web User Interface. It provides useful components such
|
||||
@@ -58,9 +58,6 @@ The following external libraries are provided with Modoboa:
|
||||
.. |landscape| image:: https://landscape.io/github/tonioo/modoboa/master/landscape.svg?style=flat
|
||||
:target: https://landscape.io/github/tonioo/modoboa/master
|
||||
:alt: Code Health
|
||||
.. |downloads| image:: https://img.shields.io/pypi/dm/modoboa.svg
|
||||
:target: https://pypi.python.org/pypi/modoboa/
|
||||
:alt: Downloads from Pypi
|
||||
.. |travis| image:: https://travis-ci.org/tonioo/modoboa.png?branch=master
|
||||
:target: https://travis-ci.org/tonioo/modoboa
|
||||
.. |codecov| image:: http://codecov.io/github/tonioo/modoboa/coverage.svg?branch=master
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ copyright = u'2016, Antoine Nguyen'
|
||||
# The short X.Y version.
|
||||
version = '1.6'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = '1.6.0'
|
||||
release = '1.6.1'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
|
||||
@@ -15,9 +15,12 @@ You first need to create configuration files (or map files) that will
|
||||
be used by Postfix to lookup into Modoboa tables.
|
||||
|
||||
To automaticaly generate the requested map files and store them in a
|
||||
directory, run the following command::
|
||||
directory, run the following command:
|
||||
|
||||
$ modoboa-admin.py postfix_maps --dbtype <mysql|postgres|sqlite> <directory>
|
||||
.. sourcecode:: bash
|
||||
|
||||
> cd <modoboa_instance_path>
|
||||
> python manage.py generate_postfix_maps --destdir <directory>
|
||||
|
||||
``<directory>`` is the directory where the files will be
|
||||
stored. Answer the few questions and you're done.
|
||||
@@ -56,6 +59,7 @@ Use the following configuration in the :file:`/etc/postfix/main.cf` file
|
||||
smtpd_sender_login_maps =
|
||||
<driver>:/etc/postfix/sql-sender-login-mailboxes.cf
|
||||
<driver>:/etc/postfix/sql-sender-login-aliases.cf
|
||||
<driver>:/etc/postfix/sql-sender-login-mailboxes-extra.cf
|
||||
|
||||
smtpd_sender_restrictions =
|
||||
reject_sender_login_mismatch
|
||||
|
||||
+13
-3
@@ -90,24 +90,34 @@ Specific instructions
|
||||
An interesting feature brougth by this version is the capability to
|
||||
make different checks about MX records. For example, Modoboa can
|
||||
query main `DNSBL <https://en.wikipedia.org/wiki/DNSBL>`_ providers
|
||||
for every defined domain. With this, you will quickly now if one the
|
||||
for every defined domain. With this, you will quickly know if one the
|
||||
domains you manage is listed or not. To activate it, add the
|
||||
following line to your crontab::
|
||||
|
||||
*/30 * * * * <modoboa_site>/manage.py modo check_mx
|
||||
*/30 * * * * <optional_virtualenv_path/>python <modoboa_instance_dir>/manage.py modo check_mx
|
||||
|
||||
The communication with Modoboa public API has been reworked. Instead
|
||||
of sending direct synchronous queries (for example to check new
|
||||
versions), a cron job has been added. To activate it, add the
|
||||
following line to your crontab::
|
||||
|
||||
0 * * * * <modoboa_site>/manage.py communicate_with_public_api
|
||||
0 * * * * <optional_virtualenv_path/>python <modoboa_instance_dir>/manage.py communicate_with_public_api
|
||||
|
||||
Please also note that public API now uses TLS so you must update your
|
||||
configuration as follows::
|
||||
|
||||
MODOBOA_API_URL = 'https://api.modoboa.org/1/'
|
||||
|
||||
Finally, it is now possible to declare additional sender addresses on
|
||||
a per-account basis. You need to update your postfix configuration in
|
||||
order to use this functionality. Just edit the :file:`main.cf` file
|
||||
and change the following parameter::
|
||||
|
||||
smtpd_sender_login_maps =
|
||||
<driver>:/etc/postfix/sql-sender-login-mailboxes.cf
|
||||
<driver>:/etc/postfix/sql-sender-login-aliases.cf
|
||||
<driver>:/etc/postfix/sql-sender-login-mailboxes-extra.cf
|
||||
|
||||
1.5.0
|
||||
=====
|
||||
|
||||
|
||||
@@ -56,9 +56,12 @@ class AccountViewSet(viewsets.ModelViewSet):
|
||||
|
||||
def get_serializer_class(self):
|
||||
"""Return a serializer."""
|
||||
if self.request.method == "GET":
|
||||
return serializers.AccountSerializer
|
||||
return serializers.WritableAccountSerializer
|
||||
action_dict = {
|
||||
"list": serializers.AccountSerializer,
|
||||
"retrive": serializers.AccountSerializer
|
||||
}
|
||||
return action_dict.get(
|
||||
self.action, serializers.WritableAccountSerializer)
|
||||
|
||||
def get_queryset(self):
|
||||
"""Filter queryset based on current user."""
|
||||
|
||||
@@ -85,7 +85,7 @@ def grant_access_to_all_objects(user, role):
|
||||
def export_admin_domains(admin):
|
||||
result = [admin.mailbox.quota] \
|
||||
if hasattr(admin, "mailbox") else [""]
|
||||
if admin.group != "DomainAdmins":
|
||||
if admin.role != "DomainAdmins":
|
||||
return result
|
||||
return result + [dom.name for dom in Domain.objects.get_for_admin(admin)]
|
||||
|
||||
@@ -139,7 +139,7 @@ def import_account_mailbox(user, account, row):
|
||||
quota, override_rules=user.has_perm("admin.change_domain")
|
||||
)
|
||||
mb.save(creator=user)
|
||||
if account.group == "DomainAdmins":
|
||||
if account.role == "DomainAdmins":
|
||||
for domname in row[2:]:
|
||||
try:
|
||||
dom = Domain.objects.get(name=domname.strip())
|
||||
@@ -157,7 +157,7 @@ def account_auto_created(user):
|
||||
if parameters.get_admin("AUTO_CREATE_DOMAIN_AND_MAILBOX") == "no":
|
||||
return
|
||||
localpart, domname = split_mailbox(user.username)
|
||||
if user.group != 'SimpleUsers' and domname is None:
|
||||
if user.role != 'SimpleUsers' and domname is None:
|
||||
return
|
||||
sadmins = User.objects.filter(is_superuser=True)
|
||||
try:
|
||||
|
||||
@@ -21,7 +21,6 @@ DNSBL_PROVIDERS = [
|
||||
"dnsbl-3.uceprotect.net",
|
||||
"dnsbl.cyberlogic.net",
|
||||
"dnsbl.inps.de",
|
||||
"dnsbl.njabl.org",
|
||||
"dnsbl.sorbs.net",
|
||||
"drone.abuse.ch",
|
||||
"duinv.aupads.org",
|
||||
|
||||
@@ -38,7 +38,7 @@ class AccountFormGeneral(forms.ModelForm):
|
||||
)
|
||||
role = forms.ChoiceField(
|
||||
label=ugettext_lazy("Role"),
|
||||
choices=[('', ugettext_lazy("Choose"))],
|
||||
choices=[("", ugettext_lazy("Choose"))],
|
||||
help_text=ugettext_lazy("What level of permission this user will have")
|
||||
)
|
||||
password1 = PasswordField(
|
||||
@@ -59,52 +59,63 @@ class AccountFormGeneral(forms.ModelForm):
|
||||
"username", "first_name", "last_name", "role", "is_active",
|
||||
"master_user"
|
||||
)
|
||||
labels = {
|
||||
"is_active": ugettext_lazy("Enabled")
|
||||
}
|
||||
|
||||
def __init__(self, user, *args, **kwargs):
|
||||
super(AccountFormGeneral, self).__init__(*args, **kwargs)
|
||||
self.fields = OrderedDict(
|
||||
(key, self.fields[key]) for key in
|
||||
['role', 'username', 'first_name', 'last_name', 'password1',
|
||||
'password2', 'master_user', 'is_active']
|
||||
["role", "username", "first_name", "last_name", "password1",
|
||||
"password2", "master_user", "is_active"]
|
||||
)
|
||||
self.fields["is_active"].label = _("Enabled")
|
||||
self.user = user
|
||||
if user.group == "DomainAdmins":
|
||||
condition = (
|
||||
user.role == "DomainAdmins" or
|
||||
user.role == "Resellers" and self.instance == user
|
||||
)
|
||||
if condition:
|
||||
self.fields["role"] = forms.CharField(
|
||||
label="",
|
||||
widget=forms.HiddenInput(attrs={"class": "form-control"}),
|
||||
required=False
|
||||
)
|
||||
else:
|
||||
self.fields["role"].choices = [('', ugettext_lazy("Choose"))]
|
||||
self.fields["role"].choices += \
|
||||
get_account_roles(user, kwargs['instance']) \
|
||||
if 'instance' in kwargs else get_account_roles(user)
|
||||
self.fields["role"].choices += (
|
||||
get_account_roles(user, self.instance)
|
||||
if self.instance.pk else get_account_roles(user)
|
||||
)
|
||||
|
||||
if not user.is_superuser:
|
||||
del self.fields["master_user"]
|
||||
|
||||
if "instance" in kwargs:
|
||||
account = kwargs["instance"]
|
||||
domain_disabled = (
|
||||
hasattr(account, "mailbox") and
|
||||
not account.mailbox.domain.enabled
|
||||
)
|
||||
if not self.instance.pk:
|
||||
return
|
||||
|
||||
domain_disabled = (
|
||||
hasattr(self.instance, "mailbox") and
|
||||
not self.instance.mailbox.domain.enabled
|
||||
)
|
||||
if domain_disabled:
|
||||
self.fields["is_active"].widget.attrs["disabled"] = "disabled"
|
||||
if args:
|
||||
empty_password = (
|
||||
args[0].get("password1", "") == "" and
|
||||
args[0].get("password2", "") == "")
|
||||
if empty_password:
|
||||
self.fields["password1"].required = False
|
||||
self.fields["password2"].required = False
|
||||
if domain_disabled:
|
||||
self.fields["is_active"].widget.attrs['disabled'] = "disabled"
|
||||
if args:
|
||||
if args[0].get("password1", "") == "" \
|
||||
and args[0].get("password2", "") == "":
|
||||
self.fields["password1"].required = False
|
||||
self.fields["password2"].required = False
|
||||
if domain_disabled:
|
||||
del self.fields["is_active"]
|
||||
self.fields["role"].initial = account.group
|
||||
if not account.is_local \
|
||||
and parameters.get_admin(
|
||||
"LDAP_AUTH_METHOD", app="core") == "directbind":
|
||||
del self.fields["password1"]
|
||||
del self.fields["password2"]
|
||||
del self.fields["is_active"]
|
||||
self.fields["role"].initial = self.instance.role
|
||||
condition = (
|
||||
not self.instance.is_local and
|
||||
parameters.get_admin(
|
||||
"LDAP_AUTH_METHOD", app="core") == "directbind")
|
||||
if condition:
|
||||
del self.fields["password1"]
|
||||
del self.fields["password2"]
|
||||
|
||||
def domain_is_disabled(self):
|
||||
"""Little shortcut to get the domain's state.
|
||||
@@ -118,10 +129,12 @@ class AccountFormGeneral(forms.ModelForm):
|
||||
return not self.instance.mailbox.domain.enabled
|
||||
|
||||
def clean_role(self):
|
||||
if self.user.group == "DomainAdmins":
|
||||
if self.user.role == "DomainAdmins":
|
||||
if self.instance == self.user:
|
||||
return "DomainAdmins"
|
||||
return "SimpleUsers"
|
||||
elif self.user.role == "Resellers" and self.instance == self.user:
|
||||
return "Resellers"
|
||||
return self.cleaned_data["role"]
|
||||
|
||||
def clean_username(self):
|
||||
@@ -193,8 +206,8 @@ class AccountFormMail(forms.Form, DynamicForm):
|
||||
required=False,
|
||||
help_text=ugettext_lazy(
|
||||
"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)."
|
||||
"press ENTER to add a new input. To create a catchall alias, just "
|
||||
"enter the domain name (@domain.tld)."
|
||||
)
|
||||
)
|
||||
senderaddress = lib_fields.UTF8AndEmptyUserEmailField(
|
||||
@@ -279,7 +292,7 @@ class AccountFormMail(forms.Form, DynamicForm):
|
||||
self.add_error("quota", _("Must be a positive integer"))
|
||||
self.aliases = []
|
||||
self.sender_addresses = []
|
||||
for name, value in cleaned_data.iteritems():
|
||||
for name, value in list(cleaned_data.items()):
|
||||
if value == "":
|
||||
continue
|
||||
if name.startswith("aliases"):
|
||||
@@ -459,10 +472,12 @@ class AccountForm(TabForms):
|
||||
})
|
||||
|
||||
def check_perms(self, account):
|
||||
if account.is_superuser:
|
||||
return False
|
||||
return self.user.has_perm("admin.add_domain") \
|
||||
and account.has_perm("core.add_user")
|
||||
"""Check if perms form must displayed or not."""
|
||||
return (
|
||||
self.user.is_superuser and
|
||||
not account.is_superuser and
|
||||
account.has_perm("core.add_user")
|
||||
)
|
||||
|
||||
def _before_is_valid(self, form):
|
||||
if form["id"] == "general":
|
||||
@@ -480,9 +495,8 @@ class AccountForm(TabForms):
|
||||
return True
|
||||
|
||||
def is_valid(self):
|
||||
"""Two steps validation.
|
||||
"""
|
||||
self.instances["general"].oldgroup = self.instances["general"].group
|
||||
"""Two steps validation."""
|
||||
self.instances["general"].oldgroup = self.instances["general"].role
|
||||
if super(AccountForm, self).is_valid(mandatory_only=True):
|
||||
self.account = self.forms[0]["instance"].save()
|
||||
return super(AccountForm, self).is_valid(optional_only=True)
|
||||
|
||||
@@ -8,7 +8,7 @@ from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
from modoboa.core.models import User
|
||||
from modoboa.core import signals as core_signals
|
||||
from modoboa.lib import events, parameters
|
||||
from modoboa.lib.exceptions import ModoboaException, Conflict
|
||||
from modoboa.lib.exceptions import Conflict
|
||||
from modoboa.lib.fields import DomainNameField
|
||||
from modoboa.lib.form_utils import (
|
||||
YesNoField, WizardForm, WizardStep, DynamicForm, TabForms
|
||||
@@ -279,17 +279,13 @@ class DomainForm(TabForms):
|
||||
super(DomainForm, self).__init__(request, *args, **kwargs)
|
||||
|
||||
def extra_context(self, context):
|
||||
domadmins = [u for u in self.domain.admins
|
||||
if self.request.user.can_access(u) and not u.is_superuser]
|
||||
if not self.request.user.is_superuser:
|
||||
domadmins = [u for u in domadmins if u.group == "DomainAdmins"]
|
||||
"""Add information to template context."""
|
||||
context.update({
|
||||
"title": self.domain.name,
|
||||
"action": reverse(
|
||||
"admin:domain_change", args=[self.domain.pk]),
|
||||
"formid": "domform",
|
||||
"domain": self.domain,
|
||||
"domadmins": domadmins
|
||||
"domain": self.domain
|
||||
})
|
||||
|
||||
def is_valid(self):
|
||||
|
||||
@@ -3,12 +3,15 @@
|
||||
from django.db.models import signals
|
||||
from django.dispatch import receiver
|
||||
|
||||
from modoboa.core import signals as core_signals
|
||||
|
||||
from . import models
|
||||
from . import postfix_maps
|
||||
|
||||
|
||||
@receiver(signals.post_save, sender=models.Domain)
|
||||
def update_domain_mailboxes(sender, instance, **kwargs):
|
||||
"""Update associated mailboxes."""
|
||||
def update_domain_mxs_and_mailboxes(sender, instance, **kwargs):
|
||||
"""Update associated MXs and mailboxes."""
|
||||
if kwargs.get("created"):
|
||||
return
|
||||
instance.mailbox_set.filter(use_domain_quota=True).update(
|
||||
@@ -97,3 +100,14 @@ def remove_alias_for_mailbox(sender, instance, **kwargs):
|
||||
"""Remove "self alias" for this mailbox."""
|
||||
models.Alias.objects.filter(
|
||||
address=instance.full_address).delete()
|
||||
|
||||
|
||||
@receiver(core_signals.register_postfix_maps)
|
||||
def register_postfix_maps(sender, **kwargs):
|
||||
"""Register admin map files."""
|
||||
return [
|
||||
postfix_maps.DomainsMap, postfix_maps.DomainsAliasesMap,
|
||||
postfix_maps.AliasesMap, postfix_maps.MaintainMap,
|
||||
postfix_maps.SenderLoginAliasMap, postfix_maps.SenderLoginMailboxMap,
|
||||
postfix_maps.SenderLoginMailboxExtraMap
|
||||
]
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-01-06 10:05+0000\n"
|
||||
"Last-Translator: Miroslav Abrahám <miris@kunago.com>\n"
|
||||
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/"
|
||||
@@ -51,7 +51,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Schránky"
|
||||
|
||||
@@ -103,7 +103,7 @@ msgstr "Automatické vytvoření domény/schránky"
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr "Při založení účtu automaticky vytvořit doménu a schránku."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Musí se jednat o kladné číslo"
|
||||
@@ -112,13 +112,13 @@ msgstr "Musí se jednat o kladné číslo"
|
||||
msgid "Administration"
|
||||
msgstr "Správa"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identity"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Přeposlat"
|
||||
|
||||
@@ -142,7 +142,7 @@ msgstr "Import účtu selhal (%s): chybná hodnota kvóty"
|
||||
msgid "domain alias"
|
||||
msgstr "doménový alias"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Uživatelské jméno"
|
||||
|
||||
@@ -154,11 +154,11 @@ msgstr ""
|
||||
"Název uživatele. U běžných uživatelů musí být uvedena platná e-mailová "
|
||||
"adresa nebo u administrátorů schránka."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Role"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Vybrat"
|
||||
|
||||
@@ -178,32 +178,32 @@ msgstr "Potvrzení"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Vložte stejné heslo jako v poli výše, pro jeho ověření."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Povoleno"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Obě pole s heslem se neshodují."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Nemůžete zakázat váš vlastní účet"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Kvóta"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -213,28 +213,33 @@ msgstr ""
|
||||
"hodnotu domény. Ponechejte prázdné pro neomezenou kvótu (není povoleno "
|
||||
"správcům domény)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias(y)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias(y) této schránky. Vložte pouze jeden alias na řádek, stiskněte ENTER "
|
||||
"pro vložení dalšího aliasu. Pro vytvoření doménového koše vložte '*' (např. "
|
||||
"*@domena.cz)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Neplatný požadavek"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Mailbox(es) this alias will point to. Indicate only one address per "
|
||||
@@ -248,47 +253,47 @@ msgstr ""
|
||||
"řádek pouze jednu adresu; pro vložení další adresy stiskněte po vložení "
|
||||
"ENTER."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Doména neexistuje"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Doména neexistuje"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Doména(y)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Doména(y) pod správou uživatele"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Obecné"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Mail"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Oprávnění"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Účet aktualizován"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nový účet"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Účet vytvořen"
|
||||
|
||||
@@ -314,7 +319,7 @@ msgstr ""
|
||||
"Alias adresy (bez části označující doménu). Pro vytvoření doménového koše "
|
||||
"vložte znak '*'."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Příjemci"
|
||||
|
||||
@@ -331,26 +336,26 @@ msgstr ""
|
||||
"řádek pouze jednu adresu; pro vložení další adresy stiskněte po vložení "
|
||||
"ENTER."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Doména"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Nemáte oprávnění k přístupu k této doméně"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "Schránka je vyžadována"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Nebyl určen příjemce"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Doména"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
@@ -388,7 +393,7 @@ msgstr "Vytvořit správce domény"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Automaticky vytvořit správce této domény"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -419,19 +424,19 @@ msgstr "Neplatný formát"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "Uživatel '%s' již existuje"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Doména upravena"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Možnosti"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Nová doména"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Doména vytvořena"
|
||||
|
||||
@@ -501,20 +506,20 @@ msgstr "Nemůžete smazat vlastní doménu"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -528,66 +533,66 @@ msgstr "adresa"
|
||||
msgid "The alias address."
|
||||
msgstr "Název aliasu"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "povoleno"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Zatrhněte pole pro povolení tohoto aliasu"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Invalid address"
|
||||
msgstr "Neplatný požadavek"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
#, fuzzy
|
||||
#| msgid "Local recipient %s not found"
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Místní příjemce %s nebyl nalezen"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Neplatný řádek: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Doména '%s' neexistuje"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "název"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Doménové jméno"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Zatrhněte pole pro povolení této domény"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Neplatný řádek"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Neplatná hodnota kvóty u domény '%s'"
|
||||
@@ -627,32 +632,32 @@ msgstr "Zvolená kvóta je větší než povolené omezení domény (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Kvóta je vyžadována"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Oprávnění"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Doména neexistuje"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -790,34 +795,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Statistiky"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Datum vytvoření"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Datum poslední změny"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Doménové aliasy"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Aliasy schránek"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Správci"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Odstranit toto oprávnění"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-09-09 09:33+0000\n"
|
||||
"Last-Translator: controlc.de\n"
|
||||
"Language-Team: German (http://www.transifex.com/tonio/modoboa/language/de/)\n"
|
||||
@@ -52,7 +52,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Postfächer"
|
||||
|
||||
@@ -108,7 +108,7 @@ msgstr ""
|
||||
"Erstelle eine Domain und ein Postfach, wenn ein Konto automatisch erstellt "
|
||||
"wurde."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Muss eine positive Ganzzahl sein"
|
||||
@@ -117,13 +117,13 @@ msgstr "Muss eine positive Ganzzahl sein"
|
||||
msgid "Administration"
|
||||
msgstr "Verwaltung"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identitäten"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Weiterleiten"
|
||||
|
||||
@@ -147,7 +147,7 @@ msgstr "Konto Import fehlgeschlagen (%s): ungültiger Quota-Wert"
|
||||
msgid "domain alias"
|
||||
msgstr "Domain-Alias"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Benutzername"
|
||||
|
||||
@@ -159,11 +159,11 @@ msgstr ""
|
||||
"Der Benutzername. Muss eine gültige E-Mail-Adresse für 'Normale Benutzer' "
|
||||
"oder Administratoren mit einer Mailbox sein."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Rolle"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Auswählen"
|
||||
|
||||
@@ -183,32 +183,32 @@ msgstr "Bestätigung"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Passwort bestätigen"
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiviert"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Die angegebenen Passwörter stimmen nicht überein"
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "Nur Super-Administratoren dürfen diesen Modus benutzen."
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Sie können Ihr eigenes Konto nicht deaktivieren"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -218,28 +218,33 @@ msgstr ""
|
||||
"nutzen Sie den Standardwert der Domain. Lassen Sie das Feld leer für "
|
||||
"unbegrenztes Quota (Domain-Administratoren ist dies nicht gestattet)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias(e)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias(e) für dieses Postfach. Geben Sie jeweils nur eine Adresse pro Eingabe "
|
||||
"an. Bestätigen Sie die Eingabe mit ENTER. Geben Sie '*' an, um einen "
|
||||
"'catchall'-Alias (Bsp: *@example.com) zu erstellen."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid address"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Ungültige Adresse"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Addresses this alias will point to. Indicate only one address per input, "
|
||||
@@ -252,47 +257,47 @@ msgstr ""
|
||||
"Adressen, auf die der Alias verweist. Geben Sie jeweils nur eine Adresse ein "
|
||||
"und bestätigen Sie mit ENTER."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Domain existiert nicht"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Domain existiert nicht"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domain(s)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domain(s), die dieser Benutzer administriert"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "E-Mail"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Konto aktualisiert"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Neues Konto"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Konto erstellt"
|
||||
|
||||
@@ -314,7 +319,7 @@ msgstr ""
|
||||
"Die Alias-Adresse. Geben Sie nur den Domainnamen (@domain.tld) für eine "
|
||||
"'catch-all' Alias an."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Empfänger"
|
||||
|
||||
@@ -326,26 +331,26 @@ msgstr ""
|
||||
"Adressen, auf die der Alias verweist. Geben Sie jeweils nur eine Adresse ein "
|
||||
"und bestätigen Sie mit ENTER."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domain"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Der Zugriff auf diese Domain ist Ihnen nicht gestattet"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "Ein Postfach ist erforderlich"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Keine Empfänger angegeben"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domain"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
@@ -384,7 +389,7 @@ msgstr "Domain-Administrator erstellen"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Automatisch Administrator für diese Domain anlegen"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -416,19 +421,19 @@ msgstr "Ungültiges Format"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "Benutzer %s existiert bereits"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domain verändert"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Optionen"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Neue Domain"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domain erstellt."
|
||||
|
||||
@@ -497,20 +502,20 @@ msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
"Sie verfügen nicht über ausreichend Rechte, um Domain Aliase zu importieren."
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -522,62 +527,62 @@ msgstr "Adresse"
|
||||
msgid "The alias address."
|
||||
msgstr "Die Alias-Adresse"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "aktiviert"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Auswählen, um den Alias zu aktivieren"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "Alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "Ungültige Adresse"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Lokaler Empfänger {}@{} nicht gefunden"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Ungültige Zeile: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Domain '%s' existiert nicht"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "Name"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Name der Domain"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Auswählen, um diese Domain zu aktivieren"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Ungültige Zeile"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Ungültiger Quota-Wert für Domain '%s'"
|
||||
@@ -617,32 +622,32 @@ msgstr "Das Quota ist größer als das maximale Quota der Domain (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Ein Quota ist erforderlich"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Berechtigungen"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Domain existiert nicht"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -780,34 +785,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Statistiken"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Erstellungsdatum"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Datum der letzten Änderung"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Domain-Aliase"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Postfach-Aliase"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administratoren"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Diese Berechtigung entfernen"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -49,7 +49,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr ""
|
||||
|
||||
@@ -97,7 +97,7 @@ msgstr ""
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr ""
|
||||
@@ -106,13 +106,13 @@ msgstr ""
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr ""
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr ""
|
||||
|
||||
@@ -134,7 +134,7 @@ msgstr ""
|
||||
msgid "domain alias"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
@@ -144,11 +144,11 @@ msgid ""
|
||||
"administrators with a mailbox."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr ""
|
||||
|
||||
@@ -168,100 +168,100 @@ msgstr ""
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 ""
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
msgid "Sender addresses"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
msgid ""
|
||||
"Additional sender address(es) for this account. The user will be allowed to "
|
||||
"send emails using this address, even if it does not exist locally. Indicate "
|
||||
"one address per input. Press ENTER to add a new input."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
msgid "Local domain does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr ""
|
||||
|
||||
@@ -279,7 +279,7 @@ msgid ""
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr ""
|
||||
|
||||
@@ -289,24 +289,24 @@ msgid ""
|
||||
"press ENTER to add a new input."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
msgid "This field is required"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
msgid "No recipient defined"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
msgid "This field is required"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
@@ -340,7 +340,7 @@ msgstr ""
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -370,19 +370,19 @@ msgstr ""
|
||||
msgid "User '%s' already exists"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr ""
|
||||
|
||||
@@ -448,20 +448,20 @@ msgstr ""
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -473,62 +473,62 @@ msgstr ""
|
||||
msgid "The alias address."
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr ""
|
||||
@@ -568,28 +568,28 @@ msgstr ""
|
||||
msgid "A quota is required"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
msgid "Permission denied."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
msgid "Domain not found."
|
||||
msgstr ""
|
||||
|
||||
@@ -701,34 +701,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
msgid "No domain administrator defined yet."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-10-01 09:56+0000\n"
|
||||
"Last-Translator: Pedro Gracia <lasarux@neuroomante.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -52,7 +52,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Mailboxes"
|
||||
|
||||
@@ -105,7 +105,7 @@ msgstr "Dominio creado"
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr ""
|
||||
@@ -115,13 +115,13 @@ msgstr ""
|
||||
msgid "Administration"
|
||||
msgstr "Administradores"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identidades"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Siguiente"
|
||||
|
||||
@@ -146,7 +146,7 @@ msgstr "Falló la importación de la cuenta (%s): el dominio no existe"
|
||||
msgid "domain alias"
|
||||
msgstr "Alias del dominio"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Nombre de usuario"
|
||||
|
||||
@@ -157,11 +157,11 @@ msgid ""
|
||||
"administrators with a mailbox."
|
||||
msgstr "El usuario normal '%s' debe tener una dirección de email válida"
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Rol"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Elija"
|
||||
|
||||
@@ -181,32 +181,32 @@ msgstr "Confirmación"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Introduzca la misma contraseña que arriba, para verificación."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Activado"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Las contraseñas no concuerdan"
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "No puede deshabilitar su propia cuenta"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "Email"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Cuota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -216,28 +216,33 @@ msgstr ""
|
||||
"dominio por defecto. Déjelo vacío para definir un valor ilimitado (no "
|
||||
"permitido para los administradores del dominio)"
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias de este mailbox. Indique sólo una dirección por entrada, presione "
|
||||
"ENTER para añadir una nueva entrada. Use el carácter '*' para crear una "
|
||||
"dirección 'catchall' (recogerlos todos, ej. *@domain.tld)"
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Petición inválida"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Mailbox(es) this alias will point to. Indicate only one address per "
|
||||
@@ -250,47 +255,47 @@ msgstr ""
|
||||
"Mailbox(es) a los que apuntará este alias. Indique únicamente una dirección "
|
||||
"por entrada, presione ENTER para añadir una nueva entrada."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "El dominio no existe"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "El dominio no existe"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Dominio(s)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Dominio(s) que el usuario administra"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "General"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Correo"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Permisos"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Cuenta actualizada"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nueva cuenta"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Cuenta creada"
|
||||
|
||||
@@ -316,7 +321,7 @@ msgstr ""
|
||||
"La dirección del alias (sin la parte del dominio). Para una dirección que lo "
|
||||
"recoja todo, ponga un asterisco (*)."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Destinatarios"
|
||||
|
||||
@@ -332,26 +337,26 @@ msgstr ""
|
||||
"Mailbox(es) a los que apuntará este alias. Indique únicamente una dirección "
|
||||
"por entrada, presione ENTER para añadir una nueva entrada."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "No tienes acceso a este dominio"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#, fuzzy
|
||||
msgid "This field is required"
|
||||
msgstr "Una cuota es obligatoria"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
msgid "No recipient defined"
|
||||
msgstr "No ha puesto destinatario"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
#, fuzzy
|
||||
msgid "Domain"
|
||||
msgstr "Dominios"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "No tienes acceso a este dominio"
|
||||
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
msgid "This field is required"
|
||||
msgstr "Una cuota es obligatoria"
|
||||
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "No ha puesto destinatario"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
@@ -389,7 +394,7 @@ msgstr "Crear un administrador del dominio"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Automáticamente crear una administrador para este dominio"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -421,19 +426,19 @@ msgstr "Formato inválido"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "El usuario '%s' ya existe"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Dominio modificado"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Opciones"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Nuevo dominio"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Dominio creado"
|
||||
|
||||
@@ -506,20 +511,20 @@ msgstr "No puedo eliminar su propio dominio"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -533,66 +538,66 @@ msgstr "dirección"
|
||||
msgid "The alias address."
|
||||
msgstr "Nombre del alias"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "activado"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Marcar para activar este alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Invalid address"
|
||||
msgstr "Petición inválida"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
#, fuzzy
|
||||
#| msgid "Local recipient %s not found"
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Destinatario local %s no encontrado"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Línea inválida: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "El dominio '%s' no existe"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "nombre"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Nombre del dominio"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Marcar para activar este dominio"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Línea inválida"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr ""
|
||||
@@ -632,32 +637,32 @@ msgstr "La cuota es mayor que el límite permitido para el dominio (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Una cuota es obligatoria"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Permisos"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "El dominio no existe"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -794,34 +799,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Estadísticas"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Fecha de creación"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Última fecha de modificación"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Alias del dominio"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Alias del mailbox"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administradores"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Eliminar este permiso"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
#
|
||||
# Translators:
|
||||
# Antoine Nguyen <tonio@ngyn.org>, 2015-2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"PO-Revision-Date: 2016-09-16 13:56+0000\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-10-16 19:52+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: French (http://www.transifex.com/tonio/modoboa/language/fr/)\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: admin/app_settings.py:54 admin/callbacks.py:25
|
||||
@@ -38,11 +38,9 @@ msgstr "MX(s) valide(s)"
|
||||
|
||||
#: admin/app_settings.py:68
|
||||
msgid ""
|
||||
"IP(s) or network(s) of the MX that should match with domains' MX records. On "
|
||||
"per line."
|
||||
msgstr ""
|
||||
"IP(s) ou réseau(x) avec lesquels les enregistrements MX des domaines doivent "
|
||||
"correspondre. Un par ligne."
|
||||
"IP(s) or network(s) of the MX that should match with domains' MX records. On"
|
||||
" per line."
|
||||
msgstr "IP(s) ou réseau(x) avec lesquels les enregistrements MX des domaines doivent correspondre. Un par ligne."
|
||||
|
||||
#: admin/app_settings.py:77
|
||||
msgid "Enable DNSBL checks"
|
||||
@@ -52,7 +50,7 @@ msgstr "Activer les vérifications DNSBL"
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr "Vérifie chaque domaine auprès des fournisseurs de DNSBL"
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Boites"
|
||||
|
||||
@@ -64,9 +62,7 @@ msgstr "Gérer les boites sur le système de fichiers"
|
||||
msgid ""
|
||||
"Rename or remove mailboxes on the filesystem when they get renamed or "
|
||||
"removed within Modoboa"
|
||||
msgstr ""
|
||||
"Renommer ou supprimer les boites sur le système de fichiers quand elles sont "
|
||||
"renommées ou supprimées dans Modoboa"
|
||||
msgstr "Renommer ou supprimer les boites sur le système de fichiers quand elles sont renommées ou supprimées dans Modoboa"
|
||||
|
||||
#: admin/app_settings.py:96
|
||||
msgid "Mailboxes owner"
|
||||
@@ -84,9 +80,7 @@ msgstr "Quota de domaine par défaut"
|
||||
msgid ""
|
||||
"Default quota (in MB) applied to freshly created domains with no value "
|
||||
"specified. A value of 0 means no quota."
|
||||
msgstr ""
|
||||
"Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne "
|
||||
"spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
|
||||
msgstr "Quota par défaut (en Mo) appliqué aux domaines fraichement créés et ne spécifiant pas de valeur. 0 signifie qu'aucun quota ne sera appliqué."
|
||||
|
||||
#: admin/app_settings.py:113
|
||||
msgid "Automatic account removal"
|
||||
@@ -94,21 +88,18 @@ msgstr "Suppression automatique de compte"
|
||||
|
||||
#: admin/app_settings.py:116
|
||||
msgid "When a mailbox is removed, also remove the associated account"
|
||||
msgstr ""
|
||||
"Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en "
|
||||
"même temps"
|
||||
msgstr "Lorsqu'une boite aux lettres est supprimée, supprimer le compte associé en même temps"
|
||||
|
||||
#: admin/app_settings.py:120
|
||||
msgid "Automatic domain/mailbox creation"
|
||||
msgstr "Création automatique de domaine/boite aux lettres"
|
||||
|
||||
#: admin/app_settings.py:123
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
"Créer un domaine et une boite aux lettres quand un compte est créé "
|
||||
"automatiquement."
|
||||
msgid ""
|
||||
"Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr "Créer un domaine et une boite aux lettres quand un compte est créé automatiquement."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Doit être un entier positif"
|
||||
@@ -117,13 +108,13 @@ msgstr "Doit être un entier positif"
|
||||
msgid "Administration"
|
||||
msgstr "Administration"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identités"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Transfert"
|
||||
|
||||
@@ -145,7 +136,7 @@ msgstr "L'import du compte a échoué (%s): mauvais quota"
|
||||
msgid "domain alias"
|
||||
msgstr "alias de domaine"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Nom d'utilisateur"
|
||||
|
||||
@@ -153,15 +144,13 @@ msgstr "Nom d'utilisateur"
|
||||
msgid ""
|
||||
"The user's name. Must be a valid e-mail address for simple users or "
|
||||
"administrators with a mailbox."
|
||||
msgstr ""
|
||||
"Le nom de l'utilisateur. Doit être une adresse e-mail valide pour les "
|
||||
"utilisateurs simples ou les administrateurs avec une boite aux lettres."
|
||||
msgstr "Le nom de l'utilisateur. Doit être une adresse e-mail valide pour les utilisateurs simples ou les administrateurs avec une boite aux lettres."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Rôle"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Choisir"
|
||||
|
||||
@@ -181,110 +170,100 @@ msgstr "Confirmation"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Entrer le même mot de passe, pour vérification."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Les deux mots de passe ne correspondent pas."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "Seuls les super administrateurs sont autorisés pour ce mode"
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Vous ne pouvez pas désactiver votre propre compte"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 en Mo pour cette boite. Définir une valeur spécifique ou utiliser la "
|
||||
"valeur par défaut du domaine. Laisser vide pour définir une valeur illimitée "
|
||||
"(interdit pour les admins. de domaine)."
|
||||
msgstr "Quota en Mo pour cette boite. Définir une valeur spécifique ou utiliser la valeur par défaut du domaine. Laisser vide pour définir une valeur illimitée (interdit pour les admins. de domaine)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
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 de cette boite. Indiquer seulement une adresse par champ, appuyer sur "
|
||||
"ENTREE pour ajouter un nouveau champ. Utiliser le caractère '*' pour créer "
|
||||
"une adresse 'attrape tout' (ex: *@domain.tld)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr "Alias de cette boîte aux lettres. Indiquer une adresse par champ, appuyer sur ENTREE pour ajouter un nouveau champ. Pour créer un alias 'fourre-tout', entrer seulement le nom du domaine (@domain.tld)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
msgid "Sender addresses"
|
||||
msgstr "Adresses d'envoi"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
msgid ""
|
||||
"Additional sender address(es) for this account. The user will be allowed to "
|
||||
"send emails using this address, even if it does not exist locally. Indicate "
|
||||
"one address per input. Press ENTER to add a new input."
|
||||
msgstr ""
|
||||
"Adresse(s) d'envoi supplémentaire(s) pour ce compte. L'utilisateur sera "
|
||||
"autorisé à envoyer des e-mails en utilisant la/les adresse(s) déclarée(s), "
|
||||
"même si elle(s) n'existe(nt) pas localement. Indiquer une adresse par champ. "
|
||||
"Appuyer sur ENTREE pour ajouter un nouveau champ."
|
||||
msgstr "Adresse(s) d'envoi supplémentaire(s) pour ce compte. L'utilisateur sera autorisé à envoyer des e-mails en utilisant la/les adresse(s) déclarée(s), même si elle(s) n'existe(nt) pas localement. Indiquer une adresse par champ. Appuyer sur ENTREE pour ajouter un nouveau champ."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Domaine inexistant"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Le domaine local n'existe pas"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domaine(s)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domaine(s) que cet utilisateur administre"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Courrier"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Permissions"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Compte mis à jour"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nouveau compte"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Compte créé"
|
||||
|
||||
@@ -300,11 +279,9 @@ msgstr "Adresse email"
|
||||
msgid ""
|
||||
"The alias address. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"L'adresse de l'alias. Pour créer un alias \"fourre-tout\", saisissez "
|
||||
"uniquement le nom du domaine (@domain.tld)."
|
||||
msgstr "L'adresse de l'alias. Pour créer un alias \"fourre-tout\", saisissez uniquement le nom du domaine (@domain.tld)."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Destinataires"
|
||||
|
||||
@@ -312,28 +289,26 @@ msgstr "Destinataires"
|
||||
msgid ""
|
||||
"Addresses this alias will point to. Indicate only one address per input, "
|
||||
"press ENTER to add a new input."
|
||||
msgstr ""
|
||||
"Les adresses vers lesquelles cet alias pointera. Indiquer une adresse par "
|
||||
"champ, appuyer sur ENTREE pour ajouter un nouveau champ."
|
||||
msgstr "Les adresses vers lesquelles cet alias pointera. Indiquer une adresse par champ, appuyer sur ENTREE pour ajouter un nouveau champ."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Vous n'avez pas accès à ce domaine"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
msgid "This field is required"
|
||||
msgstr "Ce champ est requis."
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
msgid "No recipient defined"
|
||||
msgstr "Aucune destinataire défini"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domaine"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Vous n'avez pas accès à ce domaine"
|
||||
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
msgid "This field is required"
|
||||
msgstr "Ce champ est requis."
|
||||
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Aucune destinataire défini"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
@@ -341,17 +316,13 @@ msgstr "Type"
|
||||
msgid ""
|
||||
"Default quota in MB applied to mailboxes. Leave empty to use the default "
|
||||
"value."
|
||||
msgstr ""
|
||||
"Quota par défaut en Mo appliqué aux boites aux lettres. Laisser vide pour "
|
||||
"utiliser la valeur par défaut."
|
||||
msgstr "Quota par défaut en Mo appliqué aux boites aux lettres. Laisser vide pour utiliser la valeur par défaut."
|
||||
|
||||
#: admin/forms/domain.py:47
|
||||
msgid ""
|
||||
"Alias(es) of this domain. Indicate only one name per input, press ENTER to "
|
||||
"add a new input."
|
||||
msgstr ""
|
||||
"Alias de ce domaine. Indiquer seulement un nom par champ, appuyer sur ENTREE "
|
||||
"pour ajouter un nouveau champ."
|
||||
msgstr "Alias de ce domaine. Indiquer seulement un nom par champ, appuyer sur ENTREE pour ajouter un nouveau champ."
|
||||
|
||||
#: admin/forms/domain.py:101 admin/forms/domain.py:113
|
||||
#: admin/forms/domain.py:121
|
||||
@@ -371,7 +342,7 @@ msgstr "Créer un administrateur de domaine"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Créer automatiquement un administrateur pour ce domaine"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -382,9 +353,7 @@ msgstr "Nom"
|
||||
msgid ""
|
||||
"The administrator's name. Don't include the domain's name here, it will be "
|
||||
"automatically appended."
|
||||
msgstr ""
|
||||
"Le nom de l'administrateur. Ne pas include un nom de domaine ici, il sera "
|
||||
"ajouté automatiquement."
|
||||
msgstr "Le nom de l'administrateur. Ne pas include un nom de domaine ici, il sera ajouté automatiquement."
|
||||
|
||||
#: admin/forms/domain.py:184
|
||||
msgid "Create aliases"
|
||||
@@ -403,19 +372,19 @@ msgstr "Format invalide"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "L'utilisateur '%s' existe déjà"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domaine modifié"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Options"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Nouveau domaine"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domaine créé"
|
||||
|
||||
@@ -447,9 +416,7 @@ msgstr "Transférer les messages et conserver une copie dans votre boite locale"
|
||||
msgid ""
|
||||
"You can't define a forward to a local destination. Please ask your "
|
||||
"administrator to create an alias instead."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas définir un transfert vers une destination locale. "
|
||||
"Veuillez plutôt demander à votre administrateur de créer un alias"
|
||||
msgstr "Vous ne pouvez pas définir un transfert vers une destination locale. Veuillez plutôt demander à votre administrateur de créer un alias"
|
||||
|
||||
#: admin/forms/import_.py:11
|
||||
msgid "Select a file"
|
||||
@@ -469,9 +436,7 @@ msgstr "Chiffrer les mots de passe"
|
||||
|
||||
#: admin/forms/import_.py:40
|
||||
msgid "Check this option if passwords contained in your file are not crypted"
|
||||
msgstr ""
|
||||
"Cocher cette option si les mots de passe contenus dans votre fichier ne sont "
|
||||
"pas chiffrés"
|
||||
msgstr "Cocher cette option si les mots de passe contenus dans votre fichier ne sont pas chiffrés"
|
||||
|
||||
#: admin/lib.py:31
|
||||
msgid "A mailbox is required"
|
||||
@@ -485,20 +450,20 @@ msgstr "Vous n'êtes pas autorisé à importer des domaines"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr "Vous n'êtes pas autorisé à importer des alias de domaine."
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr "[modoboa] Problème(s) DNSBL pour le domaine {}"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
msgstr "Le domaine {} n'a aucun enregistrement MX"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr "Le domaine {} n'a pas d'enregistrement MX"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgstr "L'enregistrement MX du domaine {0} n'est pas bon : {1}."
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr "Enregistrement MX invalide pour le domaine {0} : {1}"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr "[modoboa] problème(s) de MX pour le domaine {}"
|
||||
|
||||
@@ -510,62 +475,62 @@ msgstr "Adresse"
|
||||
msgid "The alias address."
|
||||
msgstr "L'adresse de l'alias"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Cocher pour activer cet alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr "Expire le"
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "Adresse invalide"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Destinataire local {}@{} introuvable"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Ligne invalide : %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Domaine '%s' inexistant"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Le nom du domaine"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Cocher pour activer ce domaine"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Ligne invalide"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Quota invalide pour le domaine '%s'"
|
||||
@@ -605,30 +570,28 @@ msgstr "Le quota est supérieur à la limité autorisée pour le domaine (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Un quota est requis"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
msgid "Permission denied."
|
||||
msgstr "Permission refusée."
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
"Liste des domaines administrés (revendeurs et administrateurs de domaine "
|
||||
"seulement)."
|
||||
msgstr "Liste des domaines administrés (revendeurs et administrateurs de domaine seulement)."
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr "Non autorisé pour ce rôle."
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr "Doit être égale au champ full_address dans mailbox"
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Le domaine local {} n'existe pas"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
msgid "Domain not found."
|
||||
msgstr "Domaine introuvable."
|
||||
|
||||
@@ -740,34 +703,39 @@ msgstr "Aucune information disponible pour ce domaine."
|
||||
msgid "DNS status"
|
||||
msgstr "Statut DNS"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr "En attente de vérification"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Date de création"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Date de dernière modification"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Alias de domaine"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Alias de boite."
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administrateurs"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Supprimer cette permission"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
msgid "No domain administrator defined yet."
|
||||
msgstr "Aucun administrateur de domaine défini."
|
||||
|
||||
@@ -859,9 +827,7 @@ msgstr "Mis à jour"
|
||||
|
||||
#: admin/templates/admin/mx_domain_detail.html:23
|
||||
msgid "This IP does not match any of the valid MXs defined in parameters"
|
||||
msgstr ""
|
||||
"Cette IP ne correspond à un aucun des MX valides déclarés dans les "
|
||||
"paramètres."
|
||||
msgstr "Cette IP ne correspond à un aucun des MX valides déclarés dans les paramètres."
|
||||
|
||||
#: admin/templates/admin/mx_domain_detail.html:36
|
||||
msgid "No MX record found for this domain."
|
||||
@@ -872,26 +838,19 @@ msgstr "Aucun enregistrement MX trouvé pour ce domaine."
|
||||
msgid ""
|
||||
"Modoboa detected that domain %(domain)s is listed by the following DNSBL "
|
||||
"providers:"
|
||||
msgstr ""
|
||||
"Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs "
|
||||
"de DNSBL suivants :"
|
||||
msgstr "Modoboa a détecté que le domaine %(domain)s est listé par les fournisseurs de DNSBL suivants :"
|
||||
|
||||
#: admin/templates/admin/notifications/domain_in_dnsbl.html:11
|
||||
msgid ""
|
||||
"The domain's reputation will be affected and there is a chance that emails "
|
||||
"coming from it are considered as spam. You should contact those providers "
|
||||
"and ask them to unlist detected IP address(es)."
|
||||
msgstr ""
|
||||
"La réputation de ce domaine sera affectée et il est probable que les emails "
|
||||
"venant de lui soient considérés comme du spam. Vous devriez contacter ces "
|
||||
"fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
|
||||
msgstr "La réputation de ce domaine sera affectée et il est probable que les emails venant de lui soient considérés comme du spam. Vous devriez contacter ces fournisseurs pour leur demander de délister la/les adresse(s) détectée(s)."
|
||||
|
||||
#: admin/templates/admin/notifications/domain_invalid_mx.html:3
|
||||
#, python-format
|
||||
msgid "Modoboa detected that domain %(domain)s has no valid MX record:"
|
||||
msgstr ""
|
||||
"Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX "
|
||||
"valide :"
|
||||
msgstr "Modoboa a détecté que le domain %(domain)s n'a aucun enregistrement MX valide :"
|
||||
|
||||
#: admin/templates/admin/quota_headers.html:3
|
||||
msgid "Value"
|
||||
@@ -1037,19 +996,9 @@ msgid ""
|
||||
" <li><em>domainalias; name; targeted domain; enabled</em></li>\n"
|
||||
" %s\n"
|
||||
"</ul>\n"
|
||||
"<p>The first element of each line is mandatory and must be equal to one of "
|
||||
"the previous values.</p>\n"
|
||||
"<p>The first element of each line is mandatory and must be equal to one of the previous values.</p>\n"
|
||||
"<p>You can use a different character as separator.</p>\n"
|
||||
msgstr ""
|
||||
"Fournir un fichier CSV ou chaque ligne respècte un des formats suivants :\n"
|
||||
"<ul>\n"
|
||||
" <li><em>domain; nom; quota; activé</em></li>\n"
|
||||
" <li><em>domainalias; nom; domaine cible; activé</em></li>\n"
|
||||
" %s\n"
|
||||
"</ul>\n"
|
||||
"<p>Le premier élément de chaque ligne est obligatoire et doit être égal à "
|
||||
"l'une des valeurs précédentes.</p>\n"
|
||||
"<p>Vous pouvez utiliser un caractère différent comme séparateur.</p>\n"
|
||||
msgstr "Fournir un fichier CSV ou chaque ligne respècte un des formats suivants :\n<ul>\n <li><em>domain; nom; quota; activé</em></li>\n <li><em>domainalias; nom; domaine cible; activé</em></li>\n %s\n</ul>\n<p>Le premier élément de chaque ligne est obligatoire et doit être égal à l'une des valeurs précédentes.</p>\n<p>Vous pouvez utiliser un caractère différent comme séparateur.</p>\n"
|
||||
|
||||
#: admin/views/import_.py:98
|
||||
msgid "Import domains"
|
||||
@@ -1059,26 +1008,13 @@ msgstr "Importer des domaines"
|
||||
msgid ""
|
||||
"Provide a CSV file where lines respect one of the following formats:\n"
|
||||
"<ul>\n"
|
||||
"<li><em>account; loginname; password; first name; last name; enabled; group; "
|
||||
"address; quota; [, domain, ...]</em></li>\n"
|
||||
"<li><em>account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]</em></li>\n"
|
||||
"<li><em>alias; address; enabled; recipient; recipient; ...</em></li>\n"
|
||||
"</ul>\n"
|
||||
"<p>The first element of each line is mandatory and must be equal to one of "
|
||||
"the previous values.</p>\n"
|
||||
"<p>The first element of each line is mandatory and must be equal to one of the previous values.</p>\n"
|
||||
"\n"
|
||||
"<p>You can use a different character as separator.</p>\n"
|
||||
msgstr ""
|
||||
"Fournir un fichier CSV dans lequel les lignes respectent un des formats "
|
||||
"suivants :\n"
|
||||
"<ul>\n"
|
||||
"<li><em>account; loginname; password; first name; last name; enabled; group; "
|
||||
"address; quota; [, domain, ...]</em></li>\n"
|
||||
"<li><em>alias; address; enabled; recipient; recipient; ...</em></li>\n"
|
||||
"</ul>\n"
|
||||
"<p>Le premier élément de chaque ligne est obligatoire et doit être égal à "
|
||||
"l'une des valeurs précédentes..</p>\n"
|
||||
"\n"
|
||||
"<p>Vous pouvez utiliser un caractère différent comme séparateur.</p>\n"
|
||||
msgstr "Fournir un fichier CSV dans lequel les lignes respectent un des formats suivants :\n<ul>\n<li><em>account; loginname; password; first name; last name; enabled; group; address; quota; [, domain, ...]</em></li>\n<li><em>alias; address; enabled; recipient; recipient; ...</em></li>\n</ul>\n<p>Le premier élément de chaque ligne est obligatoire et doit être égal à l'une des valeurs précédentes..</p>\n\n<p>Vous pouvez utiliser un caractère différent comme séparateur.</p>\n"
|
||||
|
||||
#: admin/views/import_.py:130
|
||||
msgid "Import identities"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-10-11 11:48+0000\n"
|
||||
"Last-Translator: Rocco <mors10@hotmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/"
|
||||
@@ -52,7 +52,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Caselle di posta"
|
||||
|
||||
@@ -107,7 +107,7 @@ msgstr ""
|
||||
"Crea un dominio ed una casella di posta elettronica quando si crea un "
|
||||
"account utente"
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Dev'essere un intero positivo"
|
||||
@@ -116,13 +116,13 @@ msgstr "Dev'essere un intero positivo"
|
||||
msgid "Administration"
|
||||
msgstr "Amministrazione"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identità"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Inoltra"
|
||||
|
||||
@@ -146,7 +146,7 @@ msgstr "Importazione account fallito(%s): valore della quota errato"
|
||||
msgid "domain alias"
|
||||
msgstr "alias del dominio"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Nome utente"
|
||||
|
||||
@@ -158,11 +158,11 @@ msgstr ""
|
||||
"Il nome dell'utente. Dev'essere un indirizzo e-mail per gli utenti semplici "
|
||||
"o gli amministratori che posseggono una casella"
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Ruolo"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Scegli"
|
||||
|
||||
@@ -183,32 +183,32 @@ msgid "Enter the same password as above, for verification."
|
||||
msgstr ""
|
||||
"Inserisci la medesima password che hai inserito sopra, per la verifica."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Abilitato"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Le password nei due campi non corrispondono"
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "Solo i super amministratori possono operare in questa modalità"
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Tu non puoi disabilitare il tuo account"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -218,28 +218,33 @@ msgstr ""
|
||||
"quello predefinito. Lasciare vuoto per non impostare limiti (non consentito "
|
||||
"per gli amministratori di dominio)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias per questa casella di posta. Inserire un solo indirizzo alla volta, "
|
||||
"premere INVIO per aggiungere un nuovo elemento. Utilizzare il carattere '*' "
|
||||
"per creare un alias 'prenditutto' (p.es.: *@dominio.org)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid address"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Indirizzo non valido"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Addresses this alias will point to. Indicate only one address per input, "
|
||||
@@ -252,47 +257,47 @@ msgstr ""
|
||||
"Indirizzi verso il quale questo alias punterà . Indicare un solo indirizzo "
|
||||
"per ogni ingresso , premere INVIO per aggiungere un nuovo input ."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Il dominio non esiste"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Il dominio non esiste"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Dominio(i)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Dominio(i) amministrato(i) dall'utente"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Posta"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Permessi"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Account aggiornato"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nuovo account"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Account creato"
|
||||
|
||||
@@ -314,7 +319,7 @@ msgstr ""
|
||||
"Indirizzi email alias. Per creare un alias catchall specifica il nome del "
|
||||
"dominio (@domain.tld)."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Destinatari"
|
||||
|
||||
@@ -326,26 +331,26 @@ msgstr ""
|
||||
"Indirizzi verso il quale questo alias punterà . Indicare un solo indirizzo "
|
||||
"per ogni ingresso , premere INVIO per aggiungere un nuovo input ."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Dominio"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Non hai accesso a questo dominio"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "É necessaria una casella"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Non è stato definito un destinatario"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Dominio"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
@@ -383,7 +388,7 @@ msgstr "Crea un amministratore di dominio"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Crea automaticamente un amministratore per questo dominio"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -415,19 +420,19 @@ msgstr "Formato non valido"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "L'utente '%s' esiste già"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Dominio modificato"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Opzioni"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Nuovo dominio"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Dominio creato"
|
||||
|
||||
@@ -497,20 +502,20 @@ msgstr "Non hai i permessi di importare domini"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr "Non hai i permessi di importare gli alias dominio"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -522,62 +527,62 @@ msgstr "indirizzo"
|
||||
msgid "The alias address."
|
||||
msgstr "Indirizzi Alias."
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "Attivato"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Seleziona per attivare questo alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "Indirizzo non valido"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Destinatario locale {}@{} non trovato"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Riga non valida: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Il dominio '%s' non esiste"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Il nome del dominio"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Seleziona per attivare questo dominio"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Riga non valida"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Valore della quota non valido per il dominio '%s'"
|
||||
@@ -617,32 +622,32 @@ msgstr "La quota è maggiore del limite stabilito per il dominio (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "È richiesta una quota"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Permessi"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Il dominio non esiste"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -780,34 +785,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Statistiche"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Data di creazione"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Data dell'ultima modifica"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Alias del dominio"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Alias delle caselle di posta"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Amministratori"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Rimuovi questo permesso"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-09-14 17:06+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Japanese (Japan) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -51,7 +51,7 @@ msgstr "DNSBL チェックを有効にする"
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr "すべてのドメインを 主な DNSBL プロバイダーでチェックする"
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "メールボックス"
|
||||
|
||||
@@ -105,7 +105,7 @@ msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
"アカウントが自動的に作成されたとき、ドメインとメールボックを作成します。"
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "正の整数でなければいけません"
|
||||
@@ -114,13 +114,13 @@ msgstr "正の整数でなければいけません"
|
||||
msgid "Administration"
|
||||
msgstr "管理"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "ID"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "転送先"
|
||||
|
||||
@@ -142,7 +142,7 @@ msgstr "アカウントのインポートに失敗しました (%s): 不正な
|
||||
msgid "domain alias"
|
||||
msgstr "ドメインエイリアス"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "ユーザー名"
|
||||
|
||||
@@ -155,11 +155,11 @@ msgstr ""
|
||||
"メールボックスを持つユーザーもしくは管理者の有効な電子メールアドレスでなけれ"
|
||||
"ばなりません。"
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "ロール"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "選ぶ"
|
||||
|
||||
@@ -179,32 +179,32 @@ msgstr "確認"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "確認のため、上記と同じパスワードを入力します。"
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "有効化"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "2つのパスワード項目が一致しません"
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "スーパー管理者だけが、このモードのために許可されています。"
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "あなた自身のアカウントは無効化できません"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "電子メール"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "クォータ"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -215,16 +215,21 @@ msgstr ""
|
||||
"無制限の値を定義する場合は空白のままにします\n"
|
||||
"(ドメイン管理者には許可されていません)"
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "エイリアス"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"メールボックスのエイリアス\n"
|
||||
"input ごとに1つだけのアドレスを記入し、 ENTER キーを押して、新しい input を追"
|
||||
@@ -232,56 +237,56 @@ msgstr ""
|
||||
" 「キャッチオール」エイリアスを作成するには、 ' * '文字を使用してください "
|
||||
"(例: *@domain.tld)"
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
msgid "Sender addresses"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
msgid ""
|
||||
"Additional sender address(es) for this account. The user will be allowed to "
|
||||
"send emails using this address, even if it does not exist locally. Indicate "
|
||||
"one address per input. Press ENTER to add a new input."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "ドメインは存在しません"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "ローカルドメインは存在しません"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "ドメイン"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "ユーザーに管理されたドメイン"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "全般"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "メール"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "アクセス許可"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "アカウントを更新しました"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "新しいアカウト"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "アカウントを作成しました"
|
||||
|
||||
@@ -304,7 +309,7 @@ msgstr ""
|
||||
"キャッチオールエイリアスを作成するためには、ドメイン名だけを入力します "
|
||||
"(@domain.tld)"
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "受信者"
|
||||
|
||||
@@ -317,24 +322,24 @@ msgstr ""
|
||||
"input ごとに1つだけのアドレスを記入し、 ENTER キーを押して、新しい input を追"
|
||||
"加します"
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "このドメインにアクセスする権限がありません"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
msgid "This field is required"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
msgid "No recipient defined"
|
||||
msgstr "受信者が定義されていません"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "ドメイン"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "このドメインにアクセスする権限がありません"
|
||||
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
msgid "This field is required"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "受信者が定義されていません"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "タイプ"
|
||||
|
||||
@@ -373,7 +378,7 @@ msgstr "ドメイン管理者を作成する"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "自動的にドメインの管理者を作成する"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -405,19 +410,19 @@ msgstr "不正なフォーマット"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "ユーザー %s はすでに存在します"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "ドメインが修正されました"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "オプション"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "新しいドメイン"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "ドメインが作成されました"
|
||||
|
||||
@@ -487,20 +492,20 @@ msgstr "ドメインのインポートは許可されていません"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr "ドメインエイリアスのインポートは許可されていません"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr "[modoboa] ドメイン {} の DNSBL結果"
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -512,62 +517,62 @@ msgstr "アドレス"
|
||||
msgid "The alias address."
|
||||
msgstr "エイリアスアドレス"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "有効"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "このエイリアスをアクティブにするために確認してください"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "エイリアス"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "不正なアドレス"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "ローカル受信者 {}@{} は見つかりません"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "不正な行: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "ドメイン %s は、存在しません"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "名前"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "ドメイン名"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "このドメインをアクティブするために確認してください"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "不正な行"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "不正なドメイン %s のクォータ値"
|
||||
@@ -607,28 +612,28 @@ msgstr "クォータが、ドメインに許可された制限 (%dM) より大
|
||||
msgid "A quota is required"
|
||||
msgstr "クォータは必須です"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
msgid "Permission denied."
|
||||
msgstr "アクセス拒否"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr "管理しているドメインのリスト (リセーラーとドメイン管理者のみ)"
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr "このロールには許可されていません"
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr "メールボックス full_address に等しくなければなりません"
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "ローカルドメイン {} は、存在しません"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
msgid "Domain not found."
|
||||
msgstr "ドメインが見つかりません"
|
||||
|
||||
@@ -742,34 +747,39 @@ msgstr "このドメインに関する情報がありません。"
|
||||
msgid "DNS status"
|
||||
msgstr "ステータス"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "作成日時"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "最終修正日時"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "ドメインエイリアス"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "メールボックスエイリアス"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "管理者"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "このパーミッションを削除"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
msgid "No domain administrator defined yet."
|
||||
msgstr "ドメイン管理者が指定されていません"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-31 11:37+0000\n"
|
||||
"Last-Translator: TuxBrother <vrijwilligerswerk@wij.rs>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
@@ -52,7 +52,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Mailboxen"
|
||||
|
||||
@@ -107,7 +107,7 @@ msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
"Maak een domein en mailbox aan wanneer een account automatisch is aangemaakt."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Dit moet een positive integer zijn."
|
||||
@@ -116,13 +116,13 @@ msgstr "Dit moet een positive integer zijn."
|
||||
msgid "Administration"
|
||||
msgstr "Administratie"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identiteiten"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Doorsturen"
|
||||
|
||||
@@ -146,7 +146,7 @@ msgstr "Account import is mislukt (%s): verkeerd quotum waarde"
|
||||
msgid "domain alias"
|
||||
msgstr "domein alias"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Gebruikersnaam"
|
||||
|
||||
@@ -158,11 +158,11 @@ msgstr ""
|
||||
"De naam van de gebruiker. Moet een geldig e-mail adres zijn voor gebruikers "
|
||||
"of administrators met een mailbox."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Regel"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Kiezen"
|
||||
|
||||
@@ -182,32 +182,32 @@ msgstr "Bevestiging"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Herhaal wachtwoord (voor verificatie)"
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Actief"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "De wachtwoorden komen niet overeen."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "U kunt uw eigen account niet uitschakelen"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -217,28 +217,33 @@ msgstr ""
|
||||
"stanaard waarde van het domein. Laat leeg om een ongelimiteerde waarde te "
|
||||
"definieren (niet toegestaan voor domein administrators)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias(sen)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@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)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Ongeldig verzoek"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Mailbox(es) this alias will point to. Indicate only one address per "
|
||||
@@ -251,47 +256,47 @@ msgstr ""
|
||||
"Mailbox(en) waarnaar deze alias zal verwijzen. Geef slechts een adres per "
|
||||
"regel op, en toets ENTER om een nieuwe regel te krijgen."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Domein bestaat niet"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Domein bestaat niet"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domein(en)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domein(en) die gebruiker mag beheren"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Algemeen"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Mail"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Rechten"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Account aangepast"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nieuwe account"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Account aangemaakt"
|
||||
|
||||
@@ -317,7 +322,7 @@ msgstr ""
|
||||
"Het alias adres (zonder het domein deel). Voor een 'catch-all' adres, vul "
|
||||
"een * in."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Ontvangers"
|
||||
|
||||
@@ -333,26 +338,26 @@ msgstr ""
|
||||
"Mailbox(en) waarnaar deze alias zal verwijzen. Geef slechts een adres per "
|
||||
"regel op, en toets ENTER om een nieuwe regel te krijgen."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domein"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "U heeft geen toegang tot dit domein"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "Een mailbox is benodigd"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Geen ontvanger opgegeven"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domein"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
@@ -390,7 +395,7 @@ msgstr "Maak een domein administrator aan"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Automatisch een administrator aanmaken voor dit domein"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -421,19 +426,19 @@ msgstr "Verkeerd formaat"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "Gebruiker '%s' bestaat al"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domein gewijzigd"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Opties"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Nieuw domein"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domein aangemaakt"
|
||||
|
||||
@@ -504,20 +509,20 @@ msgstr "U kunt uw eigen domein niet verwijderen"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -531,66 +536,66 @@ msgstr "adres"
|
||||
msgid "The alias address."
|
||||
msgstr "De alias naam"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "actief"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Aanvinken om deze alias te activeren"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Invalid address"
|
||||
msgstr "Ongeldig verzoek"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
#, fuzzy
|
||||
#| msgid "Local recipient %s not found"
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Lokale ontvanger %s niet gevonden"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Ongeldige regel: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Domein '%s' bestaat niet"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "naam"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "De domeinnaam"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Aanvinken om dit domein te activeren"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Verkeerde regel"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Verkeerde quota waarde voor domein '%s'"
|
||||
@@ -630,32 +635,32 @@ msgstr "Quota is groter dan de maximaal toegestane domein limiet (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Een quota is vereist"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Rechten"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Domein bestaat niet"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -793,34 +798,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Statistieken"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Datum van aanmaken"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Laatst gewijzigd"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Domein aliassen"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Mailbox aliassen"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administrators"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Deze bevoegdheid verwijderen"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-17 12:28+0000\n"
|
||||
"Last-Translator: Jose Marcos Araujo <jmaraujo@avancetec.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -54,7 +54,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Caixas de correios"
|
||||
|
||||
@@ -109,7 +109,7 @@ msgstr ""
|
||||
"Criar um domínio e uma caixa de correio quando uma conta é automaticamente "
|
||||
"criada."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Deve ser um inteiro positivo"
|
||||
@@ -118,13 +118,13 @@ msgstr "Deve ser um inteiro positivo"
|
||||
msgid "Administration"
|
||||
msgstr "Administração"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identidades"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Encaminhar"
|
||||
|
||||
@@ -146,7 +146,7 @@ msgstr "Falha na importação de conta (%s): valor de cota errado"
|
||||
msgid "domain alias"
|
||||
msgstr "alias de domínio"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Nome de usuário"
|
||||
|
||||
@@ -158,11 +158,11 @@ msgstr ""
|
||||
"O nome de usuário. Deve ser um endereço de e-mail válido para usuários "
|
||||
"simples ou administradores com uma caixa de mensagens."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Papel"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Escolher"
|
||||
|
||||
@@ -182,32 +182,32 @@ msgstr "Confirmação"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Para verificação, digite a mesma senha que a anterior."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Ativado"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Os dois campos de senha não coincidiram."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "Apenas super administradores estão liberados para este modo"
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Você não pode desabilitar seu própria conta"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Cota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -217,28 +217,33 @@ msgstr ""
|
||||
"o padrão do domínio. Deixe em branco para definir um valor ilimitado (não "
|
||||
"permitido para administradores de domínios)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias(es)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias(es) para essa caixa de correio. Indique apenas um endereço por "
|
||||
"entrada, pressione ENTER para adicionar uma nova entrada. Use o caractere "
|
||||
"'*' para criar um alias 'pega-todos' (ex: *@exemplo.com)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid address"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Endereço inválido"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Addresses this alias will point to. Indicate only one address per input, "
|
||||
@@ -251,45 +256,45 @@ msgstr ""
|
||||
"Endereços que este alias vai apontar. Indique apenas um endereço por "
|
||||
"entrada, pressione ENTER para adicionar uma nova entrada."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Domínio não existe"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Domínio local não existe"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domínio(s)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domínio(s) que o usuário administra"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Correio"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Permissões"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Conta atualizada"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nova conta"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Conta criada"
|
||||
|
||||
@@ -311,7 +316,7 @@ msgstr ""
|
||||
"O endereço alias. Para criar um alias de captura, basta digitar o nome de "
|
||||
"domínio (@domain.tld)."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Destinatários"
|
||||
|
||||
@@ -323,26 +328,26 @@ msgstr ""
|
||||
"Endereços que este alias vai apontar. Indique apenas um endereço por "
|
||||
"entrada, pressione ENTER para adicionar uma nova entrada."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domínio"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Você não tem acesso a esse domínio"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "Um caixa de mensagens é obrigatória"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Nenhum destinatário definido"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domínio"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
@@ -380,7 +385,7 @@ msgstr "Criar um administrador de domínio"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Criar automaticamente um administrador para este domínio"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -412,19 +417,19 @@ msgstr "Formato inválido"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "O usuário '%s' já existe"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domínio alterado"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Novo domínio"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domínio criado"
|
||||
|
||||
@@ -493,20 +498,20 @@ msgstr "Você não tem permissão para importar domínios"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr "Você não tem permissão para importar aliases de domínio."
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -518,62 +523,62 @@ msgstr "endereço"
|
||||
msgid "The alias address."
|
||||
msgstr "O endereço alias."
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "ativado"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Verificar para ativar o alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "Endereço inválido"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Destinatário local {}@{} não encontrado"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Linha inválida: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "O domínio '%s' não existe"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Nome do domínio"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Marque para ativar esse domínio"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Linha inválida"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Valor de cota inválido para o domínio '%s'"
|
||||
@@ -613,30 +618,30 @@ msgstr "A cota é maior que o permitido pelo limite do domínio (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "Uma cota é requerida"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
msgid "Permission denied."
|
||||
msgstr "Permissão negada"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
"Lista dos domínios administrados (somente revendedores e administradores de "
|
||||
"domínio)"
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr "Não permitido para este perfil (role)"
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr "Deve ser igual ao endereço completo da conta"
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Domínio local {} não existe"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
msgid "Domain not found."
|
||||
msgstr "Domínio não encontrado"
|
||||
|
||||
@@ -772,34 +777,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Estatísticas"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Data de criação"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Data da última modificação"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Alias de domínios"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Alias de caixas de correio"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administradores"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Remover essa persmissão"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-29 12:51+0000\n"
|
||||
"Last-Translator: Mike C. <miguelmclara@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
|
||||
@@ -56,7 +56,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Caixas de Correio"
|
||||
|
||||
@@ -111,7 +111,7 @@ msgstr ""
|
||||
"Criar um dominio e uma caixa de correio quando uma conta é criada "
|
||||
"automátiamente."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Tem de ser um inteiro, positivo"
|
||||
@@ -120,13 +120,13 @@ msgstr "Tem de ser um inteiro, positivo"
|
||||
msgid "Administration"
|
||||
msgstr "Administração"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Identidades"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Reencaminhar"
|
||||
|
||||
@@ -150,7 +150,7 @@ msgstr "Importação da conta falhou (%s): valor para quota inválido"
|
||||
msgid "domain alias"
|
||||
msgstr "'Alias' de domínio"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Nome de Utilizador"
|
||||
|
||||
@@ -160,11 +160,11 @@ msgid ""
|
||||
"administrators with a mailbox."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Papel"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Escolher"
|
||||
|
||||
@@ -184,32 +184,32 @@ msgstr "Confirmação"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Repita a password acima, para verificação."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Ativo"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Os dois campos de password não são idênticos."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Não pode desativar a sua própria conta"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-mail"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Quota"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -219,28 +219,33 @@ msgstr ""
|
||||
"usar o valor predefinido pelo domínio. Deixar em branco para definir uma "
|
||||
"valor ilimitado (não permitido para administradores do domínio)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias(es)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias(es) desta caixa de correio. Indique apenas um endereço por entrada, "
|
||||
"clique ENTER para adicionar uma nova entrada. Use o '*' para criar um alias "
|
||||
"'catchall' (ex: *@domain.tld)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Pedido inválido"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Mailbox(es) this alias will point to. Indicate only one address per "
|
||||
@@ -253,47 +258,47 @@ msgstr ""
|
||||
"Caixa(s) de correio para o qual este 'alias' aponta. Indicar apenas um "
|
||||
"endereço por entrada, pressionar ENTER para acrescentar uma nova entrada."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "O domínio não existe"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "O domínio não existe"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domínio(s)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domínio(s) administrado pelo utilizador"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Correio"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Permissões"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Conta actualizada"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nova conta"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Conta criada"
|
||||
|
||||
@@ -319,7 +324,7 @@ msgstr ""
|
||||
"O endereço do alias (sem a parte do domínio). Para um endereço 'cath-all', "
|
||||
"digite apenas o caractere *"
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Destinatários"
|
||||
|
||||
@@ -335,26 +340,26 @@ msgstr ""
|
||||
"Caixa(s) de correio para o qual este 'alias' aponta. Indicar apenas um "
|
||||
"endereço por entrada, pressionar ENTER para acrescentar uma nova entrada."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domínio"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Não tem acesso a este domínio"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "É necessária uma caixa de correio"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Sem destinatário definido"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domínio"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
@@ -392,7 +397,7 @@ msgstr "Criar um administrador de domínio"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Criar automaticamente um administrador para este domínio"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -424,19 +429,19 @@ msgstr "Formato inválido"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "O utilizador '%s' já existe"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domínio alterado"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Novo domínio"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domínio criado"
|
||||
|
||||
@@ -507,20 +512,20 @@ msgstr "Não é possível eliminar o seu próprio domínio"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -534,66 +539,66 @@ msgstr "endereços"
|
||||
msgid "The alias address."
|
||||
msgstr "O nome do 'alias'"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "ativo"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Marcar para ativar este alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Invalid address"
|
||||
msgstr "Pedido inválido"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
#, fuzzy
|
||||
#| msgid "Local recipient %s not found"
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "O destinatário local %s não foi encontrado"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Linha inválida: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "O domínio '%s' não existe"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "nome"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "O nome do domínio"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Marcar para ativar este domínio"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Linha inválida"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Valor de quota inválido para o dominio '%s'"
|
||||
@@ -633,32 +638,32 @@ msgstr "A quota excede o limite permitido pelo domínio (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "É necessário uma quota"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Permissões"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "O domínio não existe"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -796,34 +801,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Estatísticas"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Data de criação"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Data da última modificação"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Aliases de domínio"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Aliases para caixas de correio"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administradores"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Remover esta permissão"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-03 09:35+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -51,7 +51,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Почтовые ящики"
|
||||
|
||||
@@ -103,7 +103,7 @@ msgstr "Домен создан"
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr ""
|
||||
@@ -112,13 +112,13 @@ msgstr ""
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Пользователи"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Перенаправленые"
|
||||
|
||||
@@ -142,7 +142,7 @@ msgstr "Ошибка импорта аккаунта (%s): домен долже
|
||||
msgid "domain alias"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Логин пользователя"
|
||||
|
||||
@@ -152,11 +152,11 @@ msgid ""
|
||||
"administrators with a mailbox."
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Роль"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Выбрать"
|
||||
|
||||
@@ -176,32 +176,32 @@ msgstr "Подтверждение"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Введите такой же пароль как выше. Для проверки."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Разрешено"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Пароли не совпадают"
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Вы не можете запретить собственный аккаунт"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "Е-майл"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Квота"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -212,27 +212,32 @@ msgstr ""
|
||||
"Оставьте пустым для неограниченного значения. (Не разрешено администраторам "
|
||||
"домена)"
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Синоним(ы)"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Синонимы этого почтового ящика. Вводите один адрес за раз. Нажмите ENTER для "
|
||||
"добавления. Используйте '*' для создания синонима 'для всех' (*@domain.tld)"
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Ошибочный запрос"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Mailbox(es) this alias will point to. Indicate only one address per "
|
||||
@@ -245,47 +250,47 @@ msgstr ""
|
||||
"Этот синоним почтового ящика. Вводите один адрес за раз. Нажмите ENTER для "
|
||||
"добавления."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Домен не существует"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Домен не существует"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Домен(ы)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Домен(ы) администрируемые пользователем"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Основные"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Почта"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Права"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "аккаунт изменен"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Новый аккаунт"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Аккаунт создан"
|
||||
|
||||
@@ -311,7 +316,7 @@ msgstr ""
|
||||
"Адреса синонимов (без доменной части). Для указания адреса 'для всех' "
|
||||
"введите символ *"
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Получатели"
|
||||
|
||||
@@ -327,26 +332,26 @@ msgstr ""
|
||||
"Этот синоним почтового ящика. Вводите один адрес за раз. Нажмите ENTER для "
|
||||
"добавления."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Вы не имеете права доступа к этому домену"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A quota is required"
|
||||
msgid "This field is required"
|
||||
msgstr "Требуется квота"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Получатель не определен"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
@@ -382,7 +387,7 @@ msgstr "Создание администратора домена"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Автоматически создаст администратора для этого домена"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -414,19 +419,19 @@ msgstr "Неверный формат"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "Пользователь '%s' уже существует"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Домен изменен"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Опции"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Новый домен"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Домен создан"
|
||||
|
||||
@@ -498,20 +503,20 @@ msgstr "Вы не можете удалить собственный домен"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -525,66 +530,66 @@ msgstr "адрес"
|
||||
msgid "The alias address."
|
||||
msgstr "Имя синонима"
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "Разрешен"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Отметить для активации синонима"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "Синоним"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
#, fuzzy
|
||||
#| msgid "Invalid request"
|
||||
msgid "Invalid address"
|
||||
msgstr "Ошибочный запрос"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
#, fuzzy
|
||||
#| msgid "Local recipient %s not found"
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Локальный получатель %s не найден"
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Неверная строка %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Домен '%s' не существует"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "имя"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Имя домена"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Отметить для активации этого домена"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Ошибочная строка"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr ""
|
||||
@@ -624,32 +629,32 @@ msgstr "Квота больше чем разрешено на уровне до
|
||||
msgid "A quota is required"
|
||||
msgstr "Требуется квота"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
#, fuzzy
|
||||
#| msgid "Permissions"
|
||||
msgid "Permission denied."
|
||||
msgstr "Права"
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr ""
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
#, fuzzy
|
||||
#| msgid "Domain does not exist"
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Домен не существует"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
#, fuzzy
|
||||
#| msgid "Domain modified"
|
||||
msgid "Domain not found."
|
||||
@@ -786,34 +791,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Статистика"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Дата создания"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Дата последней модификации"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Синонимы доменов"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Синонимы почтового ящика"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Администраторы"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Удалить это разрешение"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-30 18:05+0000\n"
|
||||
"Last-Translator: Olle Gustafsson <olle@dalnix.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/tonio/modoboa/language/"
|
||||
@@ -52,7 +52,7 @@ msgstr ""
|
||||
msgid "Check every domain against major DNSBL providers"
|
||||
msgstr ""
|
||||
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html.py:40
|
||||
#: admin/app_settings.py:84 admin/templates/admin/domain_detail.html:44
|
||||
msgid "Mailboxes"
|
||||
msgstr "Brevlådor"
|
||||
|
||||
@@ -104,7 +104,7 @@ msgstr "Automatisk skapande av domän/brevlåda"
|
||||
msgid "Create a domain and a mailbox when an account is automatically created."
|
||||
msgstr "Skapa en domän och en brevlåda när ett konto skapas automatiskt."
|
||||
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:279
|
||||
#: admin/app_settings.py:170 admin/forms/account.py:292
|
||||
#: admin/forms/domain.py:81
|
||||
msgid "Must be a positive integer"
|
||||
msgstr "Måste vara ett positivt heltal"
|
||||
@@ -113,13 +113,13 @@ msgstr "Måste vara ett positivt heltal"
|
||||
msgid "Administration"
|
||||
msgstr "Administration"
|
||||
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html.py:36
|
||||
#: admin/callbacks.py:35 admin/templates/admin/domain_statistics.html:36
|
||||
#: admin/templates/admin/domain_statistics.html:50
|
||||
#: admin/templates/admin/identities.html:5
|
||||
msgid "Identities"
|
||||
msgstr "Konton"
|
||||
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html.py:2
|
||||
#: admin/callbacks.py:50 admin/templates/admin/forward.html:2
|
||||
msgid "Forward"
|
||||
msgstr "Vidarebefordra"
|
||||
|
||||
@@ -141,7 +141,7 @@ msgstr "Importering av konto misslyckades (%s): Fel kvota värde"
|
||||
msgid "domain alias"
|
||||
msgstr "domän alias"
|
||||
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/account.py:33 admin/templates/admin/domain_detail.html:72
|
||||
msgid "Username"
|
||||
msgstr "Användarnamn"
|
||||
|
||||
@@ -153,11 +153,11 @@ msgstr ""
|
||||
"Användarens namn. Måste vara en giltig e-postadress för vanliga användare "
|
||||
"eller för administratörer med brevlåda."
|
||||
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html.py:29
|
||||
#: admin/forms/account.py:40 admin/templates/admin/account_detail.html:29
|
||||
msgid "Role"
|
||||
msgstr "Roll"
|
||||
|
||||
#: admin/forms/account.py:41 admin/forms/account.py:79
|
||||
#: admin/forms/account.py:41
|
||||
msgid "Choose"
|
||||
msgstr "Välj"
|
||||
|
||||
@@ -177,32 +177,32 @@ msgstr "Bekräftelse"
|
||||
msgid "Enter the same password as above, for verification."
|
||||
msgstr "Ange samma lösenord som ovan för verifiering."
|
||||
|
||||
#: admin/forms/account.py:70
|
||||
#: admin/forms/account.py:63
|
||||
msgid "Enabled"
|
||||
msgstr "Aktiverad"
|
||||
|
||||
#: admin/forms/account.py:142
|
||||
#: admin/forms/account.py:155
|
||||
msgid "The two password fields didn't match."
|
||||
msgstr "Dessa två lösnordsfält matchar inte."
|
||||
|
||||
#: admin/forms/account.py:157
|
||||
#: admin/forms/account.py:170
|
||||
msgid "Only super administrators are allowed for this mode"
|
||||
msgstr "Endast superadmininstratörer tillåts åtkomst till det här läget"
|
||||
|
||||
#: admin/forms/account.py:165
|
||||
#: admin/forms/account.py:178
|
||||
msgid "You can't disable your own account"
|
||||
msgstr "Du kan inte inaktivera ditt eget konto"
|
||||
|
||||
#: admin/forms/account.py:180
|
||||
#: admin/forms/account.py:193
|
||||
msgid "E-mail"
|
||||
msgstr "E-post"
|
||||
|
||||
#: admin/forms/account.py:182 admin/forms/domain.py:36
|
||||
#: admin/forms/account.py:195 admin/forms/domain.py:36
|
||||
#: admin/templates/admin/account_detail.html:45
|
||||
msgid "Quota"
|
||||
msgstr "Kvot"
|
||||
|
||||
#: admin/forms/account.py:184
|
||||
#: admin/forms/account.py:197
|
||||
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 "
|
||||
@@ -212,28 +212,33 @@ 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)."
|
||||
|
||||
#: admin/forms/account.py:192 admin/forms/domain.py:44
|
||||
#: admin/forms/account.py:205 admin/forms/domain.py:44
|
||||
#: admin/templates/admin/domains.html:35
|
||||
msgid "Alias(es)"
|
||||
msgstr "Alias"
|
||||
|
||||
#: admin/forms/account.py:195
|
||||
#: admin/forms/account.py:208
|
||||
#, fuzzy
|
||||
#| 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)."
|
||||
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)."
|
||||
"to add a new input. To create a catchall alias, just enter the domain name "
|
||||
"(@domain.tld)."
|
||||
msgstr ""
|
||||
"Alias för denna brevlåda. Ange endast en adress per rad, tryck ENTER för att "
|
||||
"lägga till ny rad. Använd '*' för att skapa ett 'catchall' alias (ex: "
|
||||
"*@domain.tld)."
|
||||
|
||||
#: admin/forms/account.py:201
|
||||
#: admin/forms/account.py:214
|
||||
#, fuzzy
|
||||
#| msgid "Invalid address"
|
||||
msgid "Sender addresses"
|
||||
msgstr "Ogiltigt adress"
|
||||
|
||||
#: admin/forms/account.py:204
|
||||
#: admin/forms/account.py:217
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Addresses this alias will point to. Indicate only one address per input, "
|
||||
@@ -246,45 +251,45 @@ msgstr ""
|
||||
"Adresser detta alias kommer peka på. Ange bara en adress per fält, tryck "
|
||||
"RETUR för att lägga till ytterligare."
|
||||
|
||||
#: admin/forms/account.py:258 admin/forms/alias.py:89
|
||||
#: admin/forms/account.py:271 admin/forms/alias.py:92
|
||||
#: admin/models/mailbox.py:293
|
||||
msgid "Domain does not exist"
|
||||
msgstr "Domän existerar inte"
|
||||
|
||||
#: admin/forms/account.py:288
|
||||
#: admin/forms/account.py:301
|
||||
msgid "Local domain does not exist"
|
||||
msgstr "Lokal domän existerar inte"
|
||||
|
||||
#: admin/forms/account.py:386
|
||||
#: admin/forms/account.py:399
|
||||
msgid "Domain(s)"
|
||||
msgstr "Domän(er)"
|
||||
|
||||
#: admin/forms/account.py:388
|
||||
#: admin/forms/account.py:401
|
||||
msgid "Domain(s) that user administrates"
|
||||
msgstr "Domän(er) användaren administrerar"
|
||||
|
||||
#: admin/forms/account.py:434 admin/forms/account.py:518
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:336
|
||||
#: admin/forms/account.py:447 admin/forms/account.py:532
|
||||
#: admin/forms/domain.py:266 admin/forms/domain.py:332
|
||||
msgid "General"
|
||||
msgstr "Generellt"
|
||||
|
||||
#: admin/forms/account.py:439 admin/forms/account.py:524
|
||||
#: admin/forms/account.py:452 admin/forms/account.py:538
|
||||
msgid "Mail"
|
||||
msgstr "Post"
|
||||
|
||||
#: admin/forms/account.py:441
|
||||
#: admin/forms/account.py:454
|
||||
msgid "Permissions"
|
||||
msgstr "Rättigheter"
|
||||
|
||||
#: admin/forms/account.py:507
|
||||
#: admin/forms/account.py:521
|
||||
msgid "Account updated"
|
||||
msgstr "Konto uppdaterat"
|
||||
|
||||
#: admin/forms/account.py:531
|
||||
#: admin/forms/account.py:545
|
||||
msgid "New account"
|
||||
msgstr "Nytt konto"
|
||||
|
||||
#: admin/forms/account.py:543
|
||||
#: admin/forms/account.py:557
|
||||
msgid "Account created"
|
||||
msgstr "Konto skapat"
|
||||
|
||||
@@ -305,7 +310,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Alias adress. För en \"catch-all\"-alias, ange bara domännamnet (@domän.tld)."
|
||||
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html.py:37
|
||||
#: admin/forms/alias.py:35 admin/templates/admin/alias_detail.html:37
|
||||
msgid "Recipients"
|
||||
msgstr "Mottagare"
|
||||
|
||||
@@ -317,26 +322,26 @@ msgstr ""
|
||||
"Adresser detta alias kommer peka på. Ange bara en adress per fält, tryck "
|
||||
"RETUR för att lägga till ytterligare."
|
||||
|
||||
#: admin/forms/alias.py:92
|
||||
#: admin/forms/alias.py:47 admin/forms/domain.py:24 admin/models/domain.py:90
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domän"
|
||||
|
||||
#: admin/forms/alias.py:95
|
||||
msgid "You don't have access to this domain"
|
||||
msgstr "Du har inte åtkomst till denna domän"
|
||||
|
||||
#: admin/forms/alias.py:109 admin/forms/alias.py:111
|
||||
#: admin/forms/alias.py:112 admin/forms/alias.py:114
|
||||
#, fuzzy
|
||||
#| msgid "A mailbox is required"
|
||||
msgid "This field is required"
|
||||
msgstr "En brevlåda krävs"
|
||||
|
||||
#: admin/forms/alias.py:115
|
||||
#: admin/forms/alias.py:118
|
||||
msgid "No recipient defined"
|
||||
msgstr "Ingen mottagare definierad"
|
||||
|
||||
#: admin/forms/domain.py:24 admin/models/alias.py:37 admin/models/domain.py:87
|
||||
#: admin/templates/admin/domain_statistics.html:49
|
||||
msgid "Domain"
|
||||
msgstr "Domän"
|
||||
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html.py:26
|
||||
#: admin/forms/domain.py:33 admin/templates/admin/domain_statistics.html:26
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
@@ -374,7 +379,7 @@ msgstr "Skapa en domän administratör"
|
||||
msgid "Automatically create an administrator for this domain"
|
||||
msgstr "Skapa en domän administratör automatiskt för denna domän"
|
||||
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html.py:68
|
||||
#: admin/forms/domain.py:174 admin/templates/admin/domain_detail.html:72
|
||||
#: admin/templates/admin/domains.html:34
|
||||
#: admin/templates/admin/identity_headers.html:2
|
||||
#: admin/templates/admin/mx_domain_detail.html:9
|
||||
@@ -406,19 +411,19 @@ msgstr "Ogiltigt format"
|
||||
msgid "User '%s' already exists"
|
||||
msgstr "Användare '%s' finns redan"
|
||||
|
||||
#: admin/forms/domain.py:325
|
||||
#: admin/forms/domain.py:321
|
||||
msgid "Domain modified"
|
||||
msgstr "Domän ändrad"
|
||||
|
||||
#: admin/forms/domain.py:345
|
||||
#: admin/forms/domain.py:341
|
||||
msgid "Options"
|
||||
msgstr "Inställningar"
|
||||
|
||||
#: admin/forms/domain.py:353
|
||||
#: admin/forms/domain.py:349
|
||||
msgid "New domain"
|
||||
msgstr "Ny domän"
|
||||
|
||||
#: admin/forms/domain.py:366
|
||||
#: admin/forms/domain.py:362
|
||||
msgid "Domain created"
|
||||
msgstr "Domän skapad"
|
||||
|
||||
@@ -486,20 +491,20 @@ msgstr "Du tillåts inte att importera domäner"
|
||||
msgid "You are not allowed to import domain aliases."
|
||||
msgstr "Du tillåts inte att importera domän alias."
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:155
|
||||
#: admin/management/commands/subcommands/_mx.py:159
|
||||
msgid "[modoboa] DNSBL issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:176
|
||||
msgid "Domain {} as no MX record"
|
||||
#: admin/management/commands/subcommands/_mx.py:180
|
||||
msgid "Domain {} has no MX record"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:187
|
||||
#: admin/management/commands/subcommands/_mx.py:191
|
||||
#, python-brace-format
|
||||
msgid "Domain {0} got an invalid MX record. Got {1}"
|
||||
msgid "MX record for domain {0} is invalid: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: admin/management/commands/subcommands/_mx.py:203
|
||||
#: admin/management/commands/subcommands/_mx.py:207
|
||||
msgid "[modoboa] MX issue(s) for domain {}"
|
||||
msgstr ""
|
||||
|
||||
@@ -511,62 +516,62 @@ msgstr "adress"
|
||||
msgid "The alias address."
|
||||
msgstr "Alias adressen."
|
||||
|
||||
#: admin/models/alias.py:39 admin/models/domain.py:42
|
||||
#: admin/models/alias.py:38 admin/models/domain.py:45
|
||||
#: admin/models/domain_alias.py:44
|
||||
msgid "enabled"
|
||||
msgstr "aktiverad"
|
||||
|
||||
#: admin/models/alias.py:40 admin/models/domain_alias.py:45
|
||||
#: admin/models/alias.py:39 admin/models/domain_alias.py:45
|
||||
msgid "Check to activate this alias"
|
||||
msgstr "Markera för aktivera detta alias"
|
||||
|
||||
#: admin/models/alias.py:45 admin/templates/admin/alias_detail.html.py:32
|
||||
#: admin/models/alias.py:44 admin/templates/admin/alias_detail.html:32
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:47 admin/templates/admin/alias_detail.html.py:29
|
||||
#: admin/models/alias.py:46 admin/templates/admin/alias_detail.html:29
|
||||
msgid "Expire at"
|
||||
msgstr ""
|
||||
|
||||
#: admin/models/alias.py:90
|
||||
#: admin/models/alias.py:89
|
||||
msgid "alias"
|
||||
msgstr "alias"
|
||||
|
||||
#: admin/models/alias.py:122
|
||||
#: admin/models/alias.py:121
|
||||
msgid "Invalid address"
|
||||
msgstr "Ogiltigt adress"
|
||||
|
||||
#: admin/models/alias.py:143
|
||||
#: admin/models/alias.py:142
|
||||
msgid "Local recipient {}@{} not found"
|
||||
msgstr "Lokal mottagare {}@{} kunde inte hittas."
|
||||
|
||||
#: admin/models/alias.py:173
|
||||
#: admin/models/alias.py:172
|
||||
#, python-format
|
||||
msgid "Invalid line: %s"
|
||||
msgstr "Ogiltig rad: %s"
|
||||
|
||||
#: admin/models/alias.py:179
|
||||
#: admin/models/alias.py:178
|
||||
#, python-format
|
||||
msgid "Domain '%s' does not exist"
|
||||
msgstr "Domänen '%s' existerar inte"
|
||||
|
||||
#: admin/models/domain.py:38 admin/models/domain_alias.py:37
|
||||
#: admin/models/domain.py:41 admin/models/domain_alias.py:37
|
||||
msgid "name"
|
||||
msgstr "namn"
|
||||
|
||||
#: admin/models/domain.py:39
|
||||
#: admin/models/domain.py:42
|
||||
msgid "The domain name"
|
||||
msgstr "Domännamnet"
|
||||
|
||||
#: admin/models/domain.py:43
|
||||
#: admin/models/domain.py:46
|
||||
msgid "Check to activate this domain"
|
||||
msgstr "Markera för att aktivera denna domän"
|
||||
|
||||
#: admin/models/domain.py:198 admin/models/domain_alias.py:71
|
||||
#: admin/models/domain.py:211 admin/models/domain_alias.py:71
|
||||
msgid "Invalid line"
|
||||
msgstr "Ogiltig rad"
|
||||
|
||||
#: admin/models/domain.py:206
|
||||
#: admin/models/domain.py:219
|
||||
#, python-format
|
||||
msgid "Invalid quota value for domain '%s'"
|
||||
msgstr "Ogiltig kvota värde för domänen '%s'"
|
||||
@@ -606,30 +611,30 @@ msgstr "Kvotan är större än domänens gräns (%dM)"
|
||||
msgid "A quota is required"
|
||||
msgstr "En kvota krävs"
|
||||
|
||||
#: admin/serializers.py:44 admin/serializers.py:224 admin/serializers.py:313
|
||||
#: admin/serializers.py:45 admin/serializers.py:228 admin/serializers.py:317
|
||||
msgid "Permission denied."
|
||||
msgstr "Åtskomst nekad."
|
||||
|
||||
#: admin/serializers.py:82
|
||||
#: admin/serializers.py:83
|
||||
msgid ""
|
||||
"List of administered domains (resellers and domain administrators only)."
|
||||
msgstr ""
|
||||
"Lista över administrerade domäner (endast återförsäljare och "
|
||||
"domänadministratörer)."
|
||||
|
||||
#: admin/serializers.py:189
|
||||
#: admin/serializers.py:193
|
||||
msgid "Not allowed for this role."
|
||||
msgstr "Inte tillåtet för denna roll."
|
||||
|
||||
#: admin/serializers.py:199
|
||||
#: admin/serializers.py:203
|
||||
msgid "Must be equal to mailbox full_address"
|
||||
msgstr "Måste vara lika med brevlådans full_address"
|
||||
|
||||
#: admin/serializers.py:211
|
||||
#: admin/serializers.py:215
|
||||
msgid "Local domain {} does not exist"
|
||||
msgstr "Lokal domän {} finns inte"
|
||||
|
||||
#: admin/serializers.py:311
|
||||
#: admin/serializers.py:315
|
||||
msgid "Domain not found."
|
||||
msgstr "Domän kunde ej hittas."
|
||||
|
||||
@@ -765,34 +770,39 @@ msgstr ""
|
||||
msgid "DNS status"
|
||||
msgstr "Statistik"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:36
|
||||
#: admin/templates/admin/domain_detail.html:28
|
||||
#: admin/templates/admin/domains_table.html:12
|
||||
msgid "Awaiting checks"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:40
|
||||
msgid "Creation date"
|
||||
msgstr "Skapelsedatum"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:38
|
||||
#: admin/templates/admin/domain_detail.html:42
|
||||
msgid "Last modification date"
|
||||
msgstr "Senast ändrad"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:39
|
||||
#: admin/templates/admin/domain_detail.html:48
|
||||
#: admin/templates/admin/domain_detail.html:43
|
||||
#: admin/templates/admin/domain_detail.html:52
|
||||
#: admin/templates/admin/domain_statistics.html:33
|
||||
msgid "Domain aliases"
|
||||
msgstr "Domän alias"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:41
|
||||
#: admin/templates/admin/domain_detail.html:45
|
||||
msgid "Mailbox aliases"
|
||||
msgstr "Brevlåde alias"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:65
|
||||
#: admin/templates/admin/domain_detail.html:69
|
||||
msgid "Administrators"
|
||||
msgstr "Administratörer"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:75
|
||||
#: admin/templates/admin/domain_detail.html:79
|
||||
#: admin/templatetags/admin_tags.py:252
|
||||
msgid "Remove this permission"
|
||||
msgstr "Radera detta tillstånd"
|
||||
|
||||
#: admin/templates/admin/domain_detail.html:80
|
||||
#: admin/templates/admin/domain_detail.html:84
|
||||
#, fuzzy
|
||||
#| msgid "No domain administrator defined"
|
||||
msgid "No domain administrator defined yet."
|
||||
|
||||
@@ -57,6 +57,9 @@ class CheckMXRecords(BaseCommand):
|
||||
"--skip-admin-emails", action="store_true",
|
||||
default=False,
|
||||
help="Skip domain's admins email notification.")
|
||||
parser.add_argument(
|
||||
"--domain", type=str, action="append", default=[],
|
||||
help="Domain name or id to update.")
|
||||
parser.add_argument(
|
||||
"--timeout", type=int, default=3,
|
||||
help="Timeout used for queries.")
|
||||
@@ -80,28 +83,29 @@ class CheckMXRecords(BaseCommand):
|
||||
models.MXRecord.objects.filter(domain=domain).delete()
|
||||
try:
|
||||
answers = dns.resolver.query(domain.name, "MX")
|
||||
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN):
|
||||
except (dns.resolver.NoAnswer, dns.resolver.NXDOMAIN,
|
||||
dns.resolver.NoNameservers):
|
||||
raise StopIteration()
|
||||
|
||||
delta = timedelta(seconds=ttl)
|
||||
|
||||
for answer in answers:
|
||||
address = None
|
||||
try:
|
||||
ipaddress.ip_address(str(answer.exchange))
|
||||
except ValueError:
|
||||
try:
|
||||
address = socket.gethostbyname(str(answer.exchange))
|
||||
except socket.gaierror:
|
||||
pass
|
||||
# work if .exchange is a name or IP
|
||||
address = socket.gethostbyname(str(answer.exchange))
|
||||
except socket.gaierror:
|
||||
pass
|
||||
else:
|
||||
address = str(answer.exchange)
|
||||
finally:
|
||||
if address is not None:
|
||||
try:
|
||||
# we must have a valid IP
|
||||
address = ipaddress.ip_address(u"{}".format(address))
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
record = models.MXRecord.objects.create(
|
||||
domain=domain,
|
||||
name=str(answer.exchange).strip("."),
|
||||
address=address,
|
||||
name=u"{}".format(str(answer.exchange).strip(".")),
|
||||
address=u"{}".format(address),
|
||||
updated=now + delta)
|
||||
yield record
|
||||
|
||||
@@ -110,7 +114,7 @@ class CheckMXRecords(BaseCommand):
|
||||
results = {}
|
||||
for mx in mx_list:
|
||||
reverse = ".".join(reversed(mx.address.split(".")))
|
||||
pattern = "{}.{}".format(reverse, provider)
|
||||
pattern = "{}.{}.".format(reverse, provider)
|
||||
try:
|
||||
results[mx] = socket.gethostbyname(pattern)
|
||||
except socket.gaierror:
|
||||
@@ -173,7 +177,7 @@ class CheckMXRecords(BaseCommand):
|
||||
for mx in mx_list]
|
||||
valid_mxs = self.valid_mxs
|
||||
if not mxs:
|
||||
alerts.append(_("Domain {} as no MX record").format(domain))
|
||||
alerts.append(_("Domain {} has no MX record").format(domain))
|
||||
elif valid_mxs:
|
||||
for subnet in valid_mxs:
|
||||
for mx, addr in mxs:
|
||||
@@ -184,7 +188,7 @@ class CheckMXRecords(BaseCommand):
|
||||
mx_names = [
|
||||
"{0.name} ({0.address})".format(mx) for mx in mx_list]
|
||||
alerts.append(
|
||||
_("Domain {0} got an invalid MX record. Got {1}").format(
|
||||
_("MX record for domain {0} is invalid: {1}").format(
|
||||
domain, ", ".join(mx_names))
|
||||
)
|
||||
if not alerts:
|
||||
@@ -237,5 +241,20 @@ class CheckMXRecords(BaseCommand):
|
||||
models.DNSBLResult.objects.exclude(
|
||||
provider__in=self.providers).delete()
|
||||
|
||||
for domain in models.Domain.objects.filter(enabled=True):
|
||||
if options["domain"]:
|
||||
domains = []
|
||||
for domain in options["domain"]:
|
||||
try:
|
||||
if domain.isdigit():
|
||||
domains.append(models.Domain.objects.get(pk=domain))
|
||||
else:
|
||||
domains.append(models.Domain.objects.get(name=domain))
|
||||
except models.Domain.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
domains = models.Domain.objects.filter(enabled=True)
|
||||
|
||||
options.pop("domain")
|
||||
|
||||
for domain in domains:
|
||||
self.check_domain(domain, **options)
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
"""Models related to domains management."""
|
||||
|
||||
import datetime
|
||||
|
||||
from django.db import models
|
||||
from django.db.models.manager import Manager
|
||||
from django.utils import timezone
|
||||
from django.utils.encoding import python_2_unicode_compatible, smart_text
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import ugettext as _, ugettext_lazy
|
||||
@@ -103,8 +106,18 @@ class Domain(AdminObject):
|
||||
return self.domainalias_set
|
||||
|
||||
@property
|
||||
def mx_records(self):
|
||||
self.mxrecord_set
|
||||
def just_created(self):
|
||||
"""return true if the domain was created in the latest 24h"""
|
||||
now = timezone.now()
|
||||
delta = datetime.timedelta(days=1)
|
||||
return self.creation + delta > now
|
||||
|
||||
def awaiting_checks(self):
|
||||
"""return true if the domain has no valid MX records and was created
|
||||
in the latest 24h"""
|
||||
if (not self.mxrecord_set.has_valids()) and self.just_created:
|
||||
return True
|
||||
return False
|
||||
|
||||
@cached_property
|
||||
def dnsbl_status_color(self):
|
||||
|
||||
@@ -283,7 +283,7 @@ class Mailbox(AdminObject):
|
||||
newaddress = None
|
||||
if values["email"] != self.full_address:
|
||||
newaddress = values["email"]
|
||||
elif (self.user.group == "SimpleUsers" and
|
||||
elif (self.user.role == "SimpleUsers" and
|
||||
self.user.username != self.full_address):
|
||||
newaddress = self.user.username
|
||||
if newaddress is not None:
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
"""Map file definitions for postfix."""
|
||||
|
||||
from modoboa.core.commands.postfix_maps import registry
|
||||
|
||||
|
||||
class DomainsMap(object):
|
||||
|
||||
@@ -127,13 +125,13 @@ class SenderLoginMailboxExtraMap(object):
|
||||
"WHERE sad.address='%s'"
|
||||
)
|
||||
postgres = (
|
||||
"SELECT mb.address || '@' || dom.name) FROM admin_mailbox mb "
|
||||
"SELECT mb.address || '@' || dom.name FROM admin_mailbox mb "
|
||||
"INNER JOIN admin_senderaddress sad ON sad.mailbox_id=mb.id "
|
||||
"INNER JOIN admin_domain dom ON dom.id=mb.domain_id "
|
||||
"WHERE sad.address='%s'"
|
||||
)
|
||||
sqlite = (
|
||||
"SELECT mb.address || '@' || dom.name) FROM admin_mailbox mb "
|
||||
"SELECT mb.address || '@' || dom.name FROM admin_mailbox mb "
|
||||
"INNER JOIN admin_senderaddress sad ON sad.mailbox_id=mb.id "
|
||||
"INNER JOIN admin_domain dom ON dom.id=mb.domain_id "
|
||||
"WHERE sad.address='%s'"
|
||||
@@ -166,8 +164,3 @@ class SenderLoginAliasMap(object):
|
||||
" INNER JOIN admin_alias al ON alr.alias_id=al.id "
|
||||
"WHERE al.enabled=1 AND al.address='%s'"
|
||||
)
|
||||
|
||||
registry.add_files([
|
||||
DomainsMap, DomainsAliasesMap, AliasesMap, MaintainMap,
|
||||
SenderLoginAliasMap, SenderLoginMailboxMap, SenderLoginMailboxExtraMap
|
||||
])
|
||||
|
||||
@@ -8,6 +8,7 @@ from rest_framework import serializers
|
||||
from passwords import validators
|
||||
|
||||
from modoboa.admin import models as admin_models
|
||||
from modoboa.core import constants as core_constants
|
||||
from modoboa.core import models as core_models
|
||||
from modoboa.core import signals as core_signals
|
||||
from modoboa.lib import exceptions as lib_exceptions
|
||||
@@ -102,7 +103,7 @@ class AccountSerializer(serializers.ModelSerializer):
|
||||
|
||||
def get_role(self, account):
|
||||
"""Return role."""
|
||||
return account.group
|
||||
return account.role
|
||||
|
||||
def get_domains(self, account):
|
||||
"""Return domains administered by this account."""
|
||||
@@ -154,6 +155,8 @@ class AccountPasswordSerializer(serializers.ModelSerializer):
|
||||
class WritableAccountSerializer(AccountSerializer):
|
||||
"""Serializer to create account."""
|
||||
|
||||
role = serializers.ChoiceField(choices=core_constants.ROLES)
|
||||
|
||||
class Meta(AccountSerializer.Meta):
|
||||
fields = AccountSerializer.Meta.fields + (
|
||||
"password", )
|
||||
@@ -184,11 +187,12 @@ class WritableAccountSerializer(AccountSerializer):
|
||||
def validate(self, data):
|
||||
"""Check constraints."""
|
||||
master_user = data.get("master_user", False)
|
||||
if master_user and data["role"] != "SuperAdmins":
|
||||
role = data.get("role")
|
||||
if master_user and role != "SuperAdmins":
|
||||
raise serializers.ValidationError({
|
||||
"master_user": _("Not allowed for this role.")
|
||||
})
|
||||
if data["role"] == "SimpleUsers":
|
||||
if role == "SimpleUsers":
|
||||
mailbox = data.get("mailbox")
|
||||
if mailbox is None:
|
||||
data["mailbox"] = {
|
||||
|
||||
@@ -24,11 +24,15 @@
|
||||
{% if enable_mx_checks == "yes" or enable_dnsbl_checks == "yes" %}
|
||||
<div class="row">
|
||||
<span class="title">{% trans "DNS status" %}</span>
|
||||
{% if enable_mx_checks == "yes" %}
|
||||
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
|
||||
{% endif %}
|
||||
{% if enable_dnsbl_checks == "yes" %}
|
||||
<span class="label label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
|
||||
{% if domain.awaiting_checks %}
|
||||
<span class="label label-mini label-info">{% trans "Awaiting checks" %}</span>
|
||||
{% else %}
|
||||
{% if enable_mx_checks == "yes" %}
|
||||
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
|
||||
{% endif %}
|
||||
{% if enable_dnsbl_checks == "yes" %}
|
||||
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<hr>
|
||||
|
||||
<div class="row">
|
||||
{% if user.group == "SuperAdmins" %}
|
||||
{% if user.role == "SuperAdmins" %}
|
||||
<div class="col-xs-12 col-sm-6">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-heading"><h3 class="panel-title">{% trans "Global counters" %}</h3></div>
|
||||
|
||||
@@ -8,11 +8,15 @@
|
||||
{% if enable_mx_checks == "yes" or enable_dnsbl_checks == "yes" %}
|
||||
<td name="dns">
|
||||
<small>
|
||||
{% if enable_mx_checks == "yes" %}
|
||||
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
|
||||
{% endif %}
|
||||
{% if enable_dnsbl_checks == "yes" %}
|
||||
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
|
||||
{% if domain.awaiting_checks %}
|
||||
<span class="label label-mini label-info">{% trans "Awaiting checks" %}</span>
|
||||
{% else %}
|
||||
{% if enable_mx_checks == "yes" %}
|
||||
<span class="label label-mini label-{% if not domain.mxrecord_set.has_valids %}danger{% else %}success{% endif %}"><a href="{% url 'admin:mx_domain_detail' domain.pk %}" data-toggle="ajaxmodal">MX</a></span>
|
||||
{% endif %}
|
||||
{% if enable_dnsbl_checks == "yes" %}
|
||||
<span class="label label-mini label-{{ domain.dnsbl_status_color }}"><a href="{% url 'admin:dnsbl_domain_detail' domain.pk %}" data-toggle="ajaxmodal">DNSBL</a></span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</small>
|
||||
</td>
|
||||
|
||||
@@ -5,8 +5,9 @@ from unittest import skipIf
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import override_settings
|
||||
|
||||
from modoboa.core.models import User
|
||||
from modoboa.core import factories as core_factories
|
||||
from modoboa.core import tests as core_tests
|
||||
from modoboa.core.models import User
|
||||
from modoboa.lib import parameters
|
||||
from modoboa.lib.tests import ModoTestCase
|
||||
from modoboa.lib.tests import NO_LDAP
|
||||
@@ -73,6 +74,24 @@ class AccountTestCase(ModoTestCase):
|
||||
alias__internal=True).exists()
|
||||
)
|
||||
|
||||
def test_delete_default_superadmin(self):
|
||||
"""Delete default superadmin."""
|
||||
sadmin2 = core_factories.UserFactory(
|
||||
username="admin2", is_superuser=True)
|
||||
sadmin = User.objects.get(username="admin")
|
||||
self.client.force_login(sadmin2)
|
||||
self.ajax_post(
|
||||
reverse("admin:account_delete", args=[sadmin.pk]), {}
|
||||
)
|
||||
values = {
|
||||
"username": "user@test.com", "role": "DomainAdmins",
|
||||
"is_active": True, "email": "user@test.com"
|
||||
}
|
||||
account = User.objects.get(username="user@test.com")
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[account.pk]), values
|
||||
)
|
||||
|
||||
def test_sender_address(self):
|
||||
"""Check if sender addresses are saved."""
|
||||
account = User.objects.get(username="user@test.com")
|
||||
@@ -197,7 +216,7 @@ class AccountTestCase(ModoTestCase):
|
||||
self.assertIn("Resources usage", response.content)
|
||||
|
||||
|
||||
@skipIf(NO_LDAP, 'No ldap module installed')
|
||||
@skipIf(NO_LDAP, "No ldap module installed")
|
||||
@override_settings(AUTHENTICATION_BACKENDS=(
|
||||
'modoboa.lib.authbackends.LDAPBackend',
|
||||
'modoboa.lib.authbackends.SimpleBackend',
|
||||
@@ -233,7 +252,9 @@ class PermissionsTestCase(ModoTestCase):
|
||||
app="limits"
|
||||
)
|
||||
factories.populate_database()
|
||||
cls.user = User.objects.get(username='user@test.com')
|
||||
cls.reseller = core_factories.UserFactory(username="reseller")
|
||||
cls.reseller.role = "Resellers"
|
||||
cls.user = User.objects.get(username="user@test.com")
|
||||
cls.values = dict(
|
||||
username=cls.user.username, role="DomainAdmins",
|
||||
is_active=cls.user.is_active, email="user@test.com",
|
||||
@@ -248,14 +269,15 @@ class PermissionsTestCase(ModoTestCase):
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertEqual(self.user.group, "DomainAdmins")
|
||||
self.assertEqual(self.user.role, "DomainAdmins")
|
||||
|
||||
self.values["role"] = "SimpleUsers"
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.user.id]),
|
||||
self.values
|
||||
)
|
||||
self.assertNotEqual(self.user.group, 'DomainAdmins')
|
||||
self.assertNotEqual(
|
||||
self.user.groups.first().name, "DomainAdmins")
|
||||
|
||||
def test_superusers(self):
|
||||
self.values["role"] = "SuperAdmins"
|
||||
@@ -281,16 +303,16 @@ class PermissionsTestCase(ModoTestCase):
|
||||
self.client.login(username="admin@test.com", password="toto")
|
||||
)
|
||||
admin = User.objects.get(username="admin@test.com")
|
||||
values = dict(
|
||||
username="admin@test.com", first_name="Admin",
|
||||
password1="", password2="",
|
||||
quota=10, is_active=True, email="admin@test.com"
|
||||
)
|
||||
values = {
|
||||
"username": "admin@test.com", "first_name": "Admin",
|
||||
"password1": "", "password2": "",
|
||||
"quota": 10, "is_active": True, "email": "admin@test.com"
|
||||
}
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[admin.id]),
|
||||
values
|
||||
)
|
||||
self.assertEqual(admin.group, "DomainAdmins")
|
||||
self.assertEqual(admin.role, "DomainAdmins")
|
||||
self.assertTrue(admin.can_access(
|
||||
models.Domain.objects.get(name="test.com")))
|
||||
|
||||
@@ -299,8 +321,28 @@ class PermissionsTestCase(ModoTestCase):
|
||||
reverse("admin:account_change", args=[admin.id]),
|
||||
values
|
||||
)
|
||||
admin = User.objects.get(username="admin@test.com")
|
||||
self.assertEqual(admin.group, "DomainAdmins")
|
||||
admin.refresh_from_db()
|
||||
self.assertEqual(admin.role, "DomainAdmins")
|
||||
|
||||
self.client.logout()
|
||||
self.client.login(username=self.reseller.username, password="toto")
|
||||
self.assertTrue(self.reseller.can_access(self.reseller))
|
||||
values = {
|
||||
"username": self.reseller.username, "first_name": "Reseller",
|
||||
"password1": "", "password2": "",
|
||||
"is_active": True
|
||||
}
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.reseller.pk]),
|
||||
values
|
||||
)
|
||||
self.assertEqual(self.reseller.role, "Resellers")
|
||||
values["role"] = "SuperAdmins"
|
||||
self.ajax_post(
|
||||
reverse("admin:account_change", args=[self.reseller.pk]),
|
||||
values
|
||||
)
|
||||
self.assertEqual(self.reseller.role, "Resellers")
|
||||
|
||||
def test_domadmin_access(self):
|
||||
self.client.logout()
|
||||
|
||||
@@ -22,7 +22,7 @@ class AliasTestCase(ModoTestCase):
|
||||
def test_alias(self):
|
||||
user = User.objects.get(username="user@test.com")
|
||||
values = dict(
|
||||
username="user@test.com", role=user.group,
|
||||
username="user@test.com", role=user.role,
|
||||
is_active=user.is_active, email="user@test.com",
|
||||
aliases="toto@test.com", aliases_1="titi@test.com"
|
||||
)
|
||||
@@ -64,7 +64,7 @@ class AliasTestCase(ModoTestCase):
|
||||
"""Try to create an upper case alias."""
|
||||
user = User.objects.get(username="user@test.com")
|
||||
values = dict(
|
||||
username="user@test.com", role=user.group,
|
||||
username="user@test.com", role=user.role,
|
||||
is_active=user.is_active, email="user@test.com",
|
||||
aliases="Toto@test.com"
|
||||
)
|
||||
@@ -94,7 +94,7 @@ class AliasTestCase(ModoTestCase):
|
||||
"""Try to create a alias with tag in recipient address"""
|
||||
user = User.objects.get(username="user@test.com")
|
||||
values = dict(
|
||||
username="user@test.com", role=user.group,
|
||||
username="user@test.com", role=user.role,
|
||||
is_active=user.is_active, email="user@test.com"
|
||||
)
|
||||
self.ajax_post(
|
||||
|
||||
@@ -162,3 +162,18 @@ class DomainTestCase(ModoTestCase):
|
||||
"ENABLE_DOMAIN_LIMITS", "yes", app="limits")
|
||||
response = self.client.get(url)
|
||||
self.assertIn("Resources usage", response.content)
|
||||
|
||||
def test_domain_statitics_view(self):
|
||||
"""Test statistics display."""
|
||||
url = reverse("admin:domain_statistics")
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertIn("Global counters", response.content)
|
||||
self.assertIn("Per-domain counters", response.content)
|
||||
|
||||
self.client.force_login(
|
||||
User.objects.get(username="admin@test.com"))
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertNotIn("Global counters", response.content)
|
||||
self.assertIn("Per-domain counters", response.content)
|
||||
|
||||
@@ -75,7 +75,7 @@ dlist; dlist@test.com; True; user1@test.com; user@extdomain.com
|
||||
self.assertEqual(u1.first_name, "User")
|
||||
self.assertEqual(u1.last_name, "One")
|
||||
self.assertTrue(u1.is_active)
|
||||
self.assertEqual(u1.group, "SimpleUsers")
|
||||
self.assertEqual(u1.role, "SimpleUsers")
|
||||
self.assertTrue(mb1.use_domain_quota)
|
||||
self.assertEqual(mb1.quota, 0)
|
||||
self.assertTrue(admin.is_owner(mb1))
|
||||
@@ -87,7 +87,7 @@ dlist; dlist@test.com; True; user1@test.com; user@extdomain.com
|
||||
da = User.objects.get(username="truc@test.com")
|
||||
damb = da.mailbox
|
||||
self.assertEqual(da.first_name, u"René")
|
||||
self.assertEqual(da.group, "DomainAdmins")
|
||||
self.assertEqual(da.role, "DomainAdmins")
|
||||
self.assertEqual(damb.quota, 5)
|
||||
self.assertFalse(damb.use_domain_quota)
|
||||
self.assertEqual(damb.full_address, "truc@test.com")
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
"""Test map files generation."""
|
||||
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management import call_command
|
||||
from django.test import TestCase
|
||||
|
||||
from modoboa.core.utils import parse_map_file
|
||||
from modoboa.lib.test_utils import MapFilesTestCaseMixin
|
||||
|
||||
|
||||
@@ -14,3 +19,38 @@ class MapFilesTestCase(MapFilesTestCaseMixin, TestCase):
|
||||
"sql-maintain.cf", "sql-sender-login-mailboxes.cf",
|
||||
"sql-sender-login-mailboxes-extra.cf", "sql-sender-login-aliases.cf"
|
||||
]
|
||||
|
||||
def test_map_upgrade(self):
|
||||
"""Check that map content is used."""
|
||||
dburl = "postgres://user:password@localhost/testdb"
|
||||
call_command(
|
||||
"generate_postfix_maps",
|
||||
"--dburl", dburl, "--destdir", self.workdir)
|
||||
|
||||
# Now upgrade files. Map credentials should be preserved.
|
||||
call_command("generate_postfix_maps", "--destdir", self.workdir)
|
||||
for f in self.MAP_FILES:
|
||||
mapcontent = parse_map_file(os.path.join(self.workdir, f))
|
||||
self.assertEqual(mapcontent["user"], "user")
|
||||
self.assertEqual(mapcontent["password"], "password")
|
||||
self.assertEqual(mapcontent["dbname"], "testdb")
|
||||
|
||||
# Now force overwrite, credentials should be different
|
||||
call_command(
|
||||
"generate_postfix_maps", "--destdir", self.workdir,
|
||||
"--force-overwrite")
|
||||
dbsettings = settings.DATABASES["default"]
|
||||
for f in self.MAP_FILES:
|
||||
mapcontent = parse_map_file(os.path.join(self.workdir, f))
|
||||
self.assertEqual(mapcontent["user"], dbsettings["USER"])
|
||||
self.assertEqual(mapcontent["password"], dbsettings["PASSWORD"])
|
||||
self.assertEqual(mapcontent["dbname"], dbsettings["NAME"])
|
||||
|
||||
# Now modify a file manually
|
||||
path = os.path.join(self.workdir, "sql-domains.cf")
|
||||
with open(path, "a") as fp:
|
||||
fp.write("pouet")
|
||||
call_command("generate_postfix_maps", "--destdir", self.workdir)
|
||||
with open(path) as fp:
|
||||
content = fp.read()
|
||||
self.assertIn("pouet", content)
|
||||
|
||||
@@ -19,8 +19,10 @@ class MXTestCase(ModoTestCase):
|
||||
"""Create some data."""
|
||||
super(MXTestCase, cls).setUpTestData()
|
||||
cls.domain = factories.DomainFactory(name="modoboa.org")
|
||||
factories.DomainFactory(name="pouet.com") # should not exist
|
||||
parameters.save_admin('VALID_MXS', '127.0.0.1', app='admin')
|
||||
# should not exist
|
||||
cls.bad_domain = factories.DomainFactory(name="pouet.com")
|
||||
parameters.save_admin("VALID_MXS", "127.0.0.1")
|
||||
models.MXRecord.objects.all().delete()
|
||||
|
||||
def test_management_command(self):
|
||||
"""Check that command works fine."""
|
||||
@@ -43,6 +45,23 @@ class MXTestCase(ModoTestCase):
|
||||
qs = models.MXRecord.objects.filter(domain=self.domain)
|
||||
self.assertEqual(id, qs[0].id)
|
||||
|
||||
def test_single_domain_update(self):
|
||||
"""Update only one domain."""
|
||||
management.call_command(
|
||||
"modo", "check_mx", "--domain", self.domain.name)
|
||||
self.assertTrue(
|
||||
models.MXRecord.objects.filter(domain=self.domain).exists())
|
||||
self.assertFalse(
|
||||
models.MXRecord.objects.filter(domain=self.bad_domain).exists())
|
||||
|
||||
management.call_command(
|
||||
"modo", "check_mx", "--domain", str(self.bad_domain.pk))
|
||||
self.assertFalse(
|
||||
models.MXRecord.objects.filter(domain=self.bad_domain).exists())
|
||||
|
||||
management.call_command(
|
||||
"modo", "check_mx", "--domain", "toto.com")
|
||||
|
||||
|
||||
class DNSBLTestCase(ModoTestCase):
|
||||
"""TestCase for DNSBL related features."""
|
||||
@@ -53,6 +72,7 @@ class DNSBLTestCase(ModoTestCase):
|
||||
super(DNSBLTestCase, cls).setUpTestData()
|
||||
cls.domain = factories.DomainFactory(name="modoboa.org")
|
||||
factories.DomainFactory(name="pouet.com") # should not exist
|
||||
models.DNSBLResult.objects.all().delete()
|
||||
|
||||
@override_settings(DNSBL_PROVIDERS=["zen.spamhaus.org"])
|
||||
def test_management_command(self):
|
||||
|
||||
@@ -18,7 +18,8 @@ urlpatterns = patterns(
|
||||
name="mx_domain_detail"),
|
||||
url(r'^domains/list/$', '_domains', name="_domain_list"),
|
||||
url(r'^domains/flatlist/$', 'domains_list', name="domain_flat_list"),
|
||||
url(r'^domains/stats/$', 'domain_statistics', name="domain_statistics"),
|
||||
url(r'^domains/stats/$', views.DomainStatisticsView.as_view(),
|
||||
name="domain_statistics"),
|
||||
url(r'^domains/new/', 'newdomain', name='domain_add'),
|
||||
url(r'^domains/(?P<dom_id>\d+)/edit/$', 'editdomain',
|
||||
name="domain_change"),
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
from .alias import AliasDetailView
|
||||
from .identity import AccountDetailView
|
||||
from .dns import DNSBLDomainDetailView, MXDomainDetailView
|
||||
from .domain import DomainDetailView
|
||||
from .domain import DomainDetailView, DomainStatisticsView
|
||||
|
||||
|
||||
__all__ = [
|
||||
@@ -11,5 +11,6 @@ __all__ = [
|
||||
"AliasDetailView",
|
||||
"DNSBLDomainDetailView",
|
||||
"DomainDetailView",
|
||||
"DomainStatisticsView",
|
||||
"MXDomainDetailView",
|
||||
]
|
||||
|
||||
@@ -147,21 +147,27 @@ def deldomain(request, dom_id):
|
||||
return render_to_json_response(msg)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required("admin.view_domains")
|
||||
def domain_statistics(request):
|
||||
class DomainStatisticsView(
|
||||
auth_mixins.PermissionRequiredMixin, generic.TemplateView):
|
||||
"""A simple page to present domain statistics."""
|
||||
context = {}
|
||||
if request.user.group == "SuperAdmins":
|
||||
|
||||
template_name = "admin/domain_statistics.html"
|
||||
permission_required = "admin.view_domains"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""Add counters."""
|
||||
context = super(DomainStatisticsView, self).get_context_data(**kwargs)
|
||||
if self.request.user.role == "SuperAdmins":
|
||||
context.update({
|
||||
"domains_counter": Domain.objects.count(),
|
||||
"domain_aliases_counter": DomainAlias.objects.count(),
|
||||
"identities_counter": (
|
||||
User.objects.count() +
|
||||
Alias.objects.filter(internal=False).count()),
|
||||
})
|
||||
context.update({
|
||||
"domains_counter": Domain.objects.count(),
|
||||
"domain_aliases_counter": DomainAlias.objects.count(),
|
||||
"identities_counter": (
|
||||
User.objects.count() +
|
||||
Alias.objects.filter(internal=False).count()),
|
||||
})
|
||||
context.update({"domains": Domain.objects.get_for_admin(request.user)})
|
||||
return render(request, "admin/domain_statistics.html", context)
|
||||
"domains": Domain.objects.get_for_admin(self.request.user)})
|
||||
return context
|
||||
|
||||
|
||||
class DomainDetailView(
|
||||
|
||||
@@ -1,185 +0,0 @@
|
||||
# coding: utf-8
|
||||
|
||||
"""postfix_maps command."""
|
||||
|
||||
import datetime
|
||||
import getpass
|
||||
import os
|
||||
import sys
|
||||
|
||||
import django
|
||||
from django.template import Context, Template
|
||||
|
||||
import dj_database_url
|
||||
|
||||
from . import Command
|
||||
|
||||
MAP_FILE_TEMPLATE = """user = {{ dbuser }}
|
||||
password = {{ dbpass }}
|
||||
dbname = {{ dbname }}
|
||||
hosts = {{ dbhost }}
|
||||
query = {{ query|safe }}
|
||||
"""
|
||||
|
||||
|
||||
class MapFilesRegistry(object):
|
||||
|
||||
"""A registry of all map files."""
|
||||
|
||||
def __init__(self):
|
||||
self.files = []
|
||||
|
||||
def add_files(self, files):
|
||||
"""Add map files to registry."""
|
||||
self.files += files
|
||||
|
||||
|
||||
registry = MapFilesRegistry()
|
||||
|
||||
|
||||
class MapFilesGenerator(object):
|
||||
|
||||
"""Map files generator."""
|
||||
|
||||
def __init__(self, dbinfo=None):
|
||||
"""Constructor."""
|
||||
self.template = Template(MAP_FILE_TEMPLATE)
|
||||
if dbinfo is None:
|
||||
self.tpl_context = {
|
||||
'dbhost': raw_input('Database host: '),
|
||||
'dbname': raw_input('Database name: '),
|
||||
'dbuser': raw_input('Username: '),
|
||||
'dbpass': getpass.getpass('Password: ')
|
||||
}
|
||||
else:
|
||||
self.tpl_context = {
|
||||
'dbhost': dbinfo['HOST'],
|
||||
'dbname': dbinfo['NAME'],
|
||||
'dbuser': dbinfo['USER'],
|
||||
'dbpass': dbinfo['PASSWORD']
|
||||
}
|
||||
if not self.tpl_context['dbhost']:
|
||||
self.tpl_context['dbhost'] = '127.0.0.1'
|
||||
|
||||
def __render_map(self, args, mapobject):
|
||||
"""Render a map file.
|
||||
|
||||
:param args: command line arguments
|
||||
:param mapobject: a ``MapFile`` subclass
|
||||
"""
|
||||
content = self.template.render(
|
||||
Context(dict(
|
||||
self.tpl_context.items(),
|
||||
query=getattr(mapobject, args.dbtype)
|
||||
))
|
||||
)
|
||||
with open("%s/%s" % (args.destdir, mapobject.filename), "w") as fp:
|
||||
fp.write("""# This file was generated on {} by running:
|
||||
# {} {}
|
||||
# DO NOT EDIT!
|
||||
"""
|
||||
.format(datetime.datetime.now().isoformat(),
|
||||
os.path.basename(sys.argv[0]),
|
||||
' '.join(sys.argv[1:])))
|
||||
fp.write("{}\n".format(content))
|
||||
|
||||
def __load_applications(self, applications):
|
||||
"""Load specified applications."""
|
||||
for app in applications:
|
||||
extension = app.replace("-", "_")
|
||||
try:
|
||||
__import__(extension, locals(), globals(), ["postfix_maps"])
|
||||
except ImportError:
|
||||
sys.stderr.write("Unknown application {0}".format(extension))
|
||||
|
||||
def render(self, args):
|
||||
"""Render all map files.
|
||||
|
||||
:param args: arguments received from the command line
|
||||
"""
|
||||
try:
|
||||
os.mkdir(args.destdir)
|
||||
except OSError:
|
||||
pass
|
||||
applications = ["modoboa.admin", "modoboa.relaydomains"]
|
||||
if args.extensions:
|
||||
if "all" in applications:
|
||||
from modoboa.lib.api_client import ModoAPIClient
|
||||
|
||||
# Retrieve extension list from the API
|
||||
url = "http://api.modoboa.org/"
|
||||
official_exts = ModoAPIClient(url).list_extensions()
|
||||
extensions = [
|
||||
extension["name"] for extension in official_exts]
|
||||
else:
|
||||
extensions = args.extensions
|
||||
applications += extensions
|
||||
self.__load_applications(applications)
|
||||
for mapfile in registry.files:
|
||||
self.__render_map(args, mapfile)
|
||||
|
||||
|
||||
class SQLiteMapFilesGenerator(MapFilesGenerator):
|
||||
|
||||
"""SQLite special generator."""
|
||||
|
||||
def __init__(self, dbinfo=None):
|
||||
self.template = Template("""dbpath = {{ dbpath }}
|
||||
query = {{ query|safe }}
|
||||
""")
|
||||
if dbinfo is None:
|
||||
self.tpl_context = {
|
||||
'dbpath': raw_input('Database path: ')
|
||||
}
|
||||
else:
|
||||
self.tpl_context = {
|
||||
'dbpath': dbinfo['NAME']
|
||||
}
|
||||
|
||||
|
||||
class PostfixMapsCommand(Command):
|
||||
|
||||
"""Base command to generate map files."""
|
||||
|
||||
help = "Generate ready-to-use postfix map files"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(PostfixMapsCommand, self).__init__(*args, **kwargs)
|
||||
self._parser.add_argument(
|
||||
'destdir', type=str,
|
||||
help='Directory that will contain generated map files'
|
||||
)
|
||||
self._parser.add_argument(
|
||||
'--dbtype', type=str, choices=['mysql', 'postgres', 'sqlite'],
|
||||
default='mysql',
|
||||
help='Used database type'
|
||||
)
|
||||
self._parser.add_argument(
|
||||
'--dburl', type=str, nargs=1, default=None,
|
||||
help="url of Modoboa's database"
|
||||
)
|
||||
self._parser.add_argument(
|
||||
'--extensions', type=str, nargs='+',
|
||||
help=(
|
||||
'Generate map files for this extensions '
|
||||
'("all" shortcut available)'
|
||||
)
|
||||
)
|
||||
|
||||
def handle(self, parsed_args):
|
||||
"""Command entry point."""
|
||||
django.setup()
|
||||
dbinfo = None
|
||||
if parsed_args.dburl:
|
||||
dbinfo = dj_database_url.config(default=parsed_args.dburl[0])
|
||||
if 'sqlite' in dbinfo['ENGINE']:
|
||||
parsed_args.dbtype = 'sqlite'
|
||||
elif 'psycopg2' in dbinfo['ENGINE']:
|
||||
parsed_args.dbtype = 'postgres'
|
||||
else:
|
||||
parsed_args.dbtype = 'mysql'
|
||||
if parsed_args.dbtype == 'sqlite':
|
||||
generator = SQLiteMapFilesGenerator(dbinfo)
|
||||
else:
|
||||
generator = MapFilesGenerator(dbinfo)
|
||||
generator.render(parsed_args)
|
||||
@@ -167,8 +167,12 @@ SWAGGER_SETTINGS = {
|
||||
"exclude_namespaces": [],
|
||||
"info": {
|
||||
"contact": "contact@modoboa.com",
|
||||
"description": ("Modoboa API, requires a valid token."),
|
||||
"title": "Modoboa API",
|
||||
"description": (
|
||||
"Modoboa API, requires a valid token. To obtain a token, login "
|
||||
"as super administrator, go to 'User settings > API' and enable "
|
||||
"API access. Click on 'Update' and wait for page refresh."
|
||||
),
|
||||
"title": "Modoboa API documentation",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class GroupFactory(factory.DjangoModelFactory):
|
||||
class Meta:
|
||||
model = Group
|
||||
|
||||
name = 'DefaultGroup'
|
||||
name = "DefaultGroup"
|
||||
|
||||
|
||||
class UserFactory(PermissionFactory):
|
||||
@@ -40,7 +40,7 @@ class UserFactory(PermissionFactory):
|
||||
django_get_or_create = ("username", )
|
||||
|
||||
email = factory.LazyAttribute(lambda a: a.username)
|
||||
password = '{PLAIN}toto'
|
||||
password = "{PLAIN}toto"
|
||||
|
||||
@factory.post_generation
|
||||
def groups(self, create, extracted, **kwargs):
|
||||
|
||||
@@ -0,0 +1,162 @@
|
||||
"""Management command to generate/update postfix map files."""
|
||||
|
||||
import copy
|
||||
import hashlib
|
||||
import os
|
||||
import sys
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.template import Context, Template
|
||||
from django.utils import timezone
|
||||
|
||||
import dj_database_url
|
||||
|
||||
from ... import signals
|
||||
from ... import utils
|
||||
|
||||
MAP_FILE_TEMPLATE = """# This file was generated on {{ date }} by running:
|
||||
# {{ commandline }}
|
||||
# DO NOT EDIT!
|
||||
"""
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
"""Command class."""
|
||||
|
||||
help = "Generate/update postfix map files."
|
||||
|
||||
def add_arguments(self, parser):
|
||||
"""Add extra arguments."""
|
||||
parser.add_argument(
|
||||
"--dburl", help="Custom database url")
|
||||
parser.add_argument(
|
||||
"--destdir", default=".",
|
||||
help="Directory where files will be created")
|
||||
parser.add_argument(
|
||||
"--force-overwrite", action="store_true", default=False,
|
||||
help="Force overwrite of existing map files")
|
||||
|
||||
def __load_checksums(self, destdir):
|
||||
"""Load existing checksums if possible."""
|
||||
self.__checksums_file = os.path.join(
|
||||
destdir, "modoboa-postfix-maps.chk")
|
||||
self.__checksums = {}
|
||||
if not os.path.exists(self.__checksums_file):
|
||||
return
|
||||
with open(self.__checksums_file) as fp:
|
||||
for line in fp:
|
||||
fname, dbtype, checksum = line.split(":")
|
||||
self.__checksums[fname.strip()] = {
|
||||
"dbtype": dbtype, "checksum": checksum.strip()
|
||||
}
|
||||
|
||||
def __register_map_files(self):
|
||||
"""Load specified applications."""
|
||||
responses = signals.register_postfix_maps.send(sender=self.__class__)
|
||||
mapfiles = []
|
||||
for response in responses:
|
||||
mapfiles += response[1]
|
||||
return mapfiles
|
||||
|
||||
def __check_file(self, path):
|
||||
"""Check if map file has been modified."""
|
||||
fname = os.path.basename(path)
|
||||
condition = (
|
||||
not self.__checksums or
|
||||
fname not in self.__checksums)
|
||||
if condition:
|
||||
return True
|
||||
with open(path) as fp:
|
||||
checksum = hashlib.md5(fp.read()).hexdigest()
|
||||
return checksum == self.__checksums[fname]["checksum"]
|
||||
|
||||
def get_template(self, dbtype):
|
||||
"""Return map file template."""
|
||||
tplcontent = MAP_FILE_TEMPLATE
|
||||
if dbtype == "sqlite":
|
||||
tplcontent += """dbpath = {{ dbname }}
|
||||
query = {{ query|safe }}
|
||||
"""
|
||||
else:
|
||||
tplcontent += """user = {{ dbuser }}
|
||||
password = {{ dbpass }}
|
||||
dbname = {{ dbname }}
|
||||
hosts = {{ dbhost }}
|
||||
query = {{ query|safe }}
|
||||
"""
|
||||
return Template(tplcontent)
|
||||
|
||||
def get_template_context(self, options):
|
||||
"""Build the context used to render templates."""
|
||||
dburl = options.get("dburl")
|
||||
db_settings = (
|
||||
dj_database_url.config(default=dburl)
|
||||
if dburl else settings.DATABASES["default"])
|
||||
if "sqlite" in db_settings["ENGINE"]:
|
||||
dbtype = "sqlite"
|
||||
elif "psycopg2" in db_settings["ENGINE"]:
|
||||
dbtype = "postgres"
|
||||
else:
|
||||
dbtype = "mysql"
|
||||
commandline = "{} {}".format(
|
||||
os.path.basename(sys.argv[0]), " ".join(sys.argv[1:]))
|
||||
context = {
|
||||
"date": timezone.now(),
|
||||
"commandline": commandline,
|
||||
"dbtype": dbtype,
|
||||
"dbuser": db_settings["USER"],
|
||||
"dbpass": db_settings["PASSWORD"],
|
||||
"dbname": db_settings["NAME"],
|
||||
"dbhost": db_settings.get("HOST", "127.0.0.1"),
|
||||
}
|
||||
return context
|
||||
|
||||
def __render_map_file(
|
||||
self, mapobject, destdir, context, force_overwrite=False):
|
||||
"""Render a map file."""
|
||||
fullpath = os.path.join(destdir, mapobject.filename)
|
||||
if os.path.exists(fullpath) and not force_overwrite:
|
||||
if not self.__check_file(fullpath):
|
||||
print(
|
||||
"Cannot upgrade '{}' map because it has been modified."
|
||||
.format(mapobject.filename))
|
||||
return self.__checksums[mapobject.filename]
|
||||
mapcontent = utils.parse_map_file(fullpath)
|
||||
context = copy.deepcopy(context)
|
||||
context["dbtype"] = self.__checksums[mapobject.filename]["dbtype"]
|
||||
context["dbuser"] = mapcontent["user"]
|
||||
context["dbpass"] = mapcontent["password"]
|
||||
context["dbname"] = mapcontent["dbname"]
|
||||
context["dbhost"] = mapcontent["hosts"]
|
||||
content = self.get_template(context["dbtype"]).render(
|
||||
Context(
|
||||
dict(context.items(),
|
||||
query=getattr(mapobject, context["dbtype"]))
|
||||
)
|
||||
)
|
||||
fullpath = os.path.join(destdir, mapobject.filename)
|
||||
with open(fullpath, "w") as fp:
|
||||
fp.write(content)
|
||||
return hashlib.md5(content).hexdigest()
|
||||
|
||||
def handle(self, *args, **options):
|
||||
"""Command entry point."""
|
||||
mapfiles = self.__register_map_files()
|
||||
destdir = os.path.realpath(options["destdir"])
|
||||
try:
|
||||
os.mkdir(destdir)
|
||||
except OSError:
|
||||
pass
|
||||
self.__load_checksums(destdir)
|
||||
context = self.get_template_context(options)
|
||||
checksums = {}
|
||||
for mapobject in mapfiles:
|
||||
checksum = self.__render_map_file(
|
||||
mapobject, destdir, context,
|
||||
force_overwrite=options["force_overwrite"])
|
||||
checksums[mapobject.filename] = checksum
|
||||
with open(self.__checksums_file, "w") as fp:
|
||||
for fname, checksum in checksums.items():
|
||||
fp.write("{}:{}:{}\n".format(
|
||||
fname, context["dbtype"], checksum))
|
||||
+12
-32
@@ -62,12 +62,12 @@ class User(PermissionsMixin):
|
||||
"Allow this administrator to access user mailboxes"
|
||||
)
|
||||
)
|
||||
password = models.CharField(ugettext_lazy('password'), max_length=256)
|
||||
password = models.CharField(ugettext_lazy("password"), max_length=256)
|
||||
last_login = models.DateTimeField(
|
||||
ugettext_lazy('last login'), blank=True, null=True
|
||||
)
|
||||
|
||||
language = models.CharField(
|
||||
language = models.CharField(ugettext_lazy("language"),
|
||||
max_length=10, default="en", choices=constants.LANGUAGES,
|
||||
help_text=ugettext_lazy(
|
||||
"Prefered language to display pages."
|
||||
@@ -118,6 +118,9 @@ class User(PermissionsMixin):
|
||||
raise PermDeniedException
|
||||
|
||||
owner = get_object_owner(self)
|
||||
if owner == self:
|
||||
# The default admin is being removed...
|
||||
owner = fromuser
|
||||
for ooentry in self.objectaccess_set.filter(is_owner=True):
|
||||
if ooentry.content_object is not None:
|
||||
grant_access_to_object(owner, ooentry.content_object, True)
|
||||
@@ -220,7 +223,7 @@ class User(PermissionsMixin):
|
||||
@property
|
||||
def tags(self):
|
||||
return [{"name": "account", "label": _("account"), "type": "idt"},
|
||||
{"name": self.group, "label": self.group,
|
||||
{"name": self.role, "label": self.role,
|
||||
"type": "grp", "color": "info"}]
|
||||
|
||||
@property
|
||||
@@ -239,16 +242,6 @@ class User(PermissionsMixin):
|
||||
return "%s %s" % (self.first_name, self.last_name)
|
||||
return "----"
|
||||
|
||||
@property
|
||||
def group(self):
|
||||
"""FIXME: DEPRECATED"""
|
||||
if self.is_superuser:
|
||||
return "SuperAdmins"
|
||||
try:
|
||||
return self.groups.all()[0].name
|
||||
except IndexError:
|
||||
return "---"
|
||||
|
||||
@property
|
||||
def enabled(self):
|
||||
return self.is_active
|
||||
@@ -258,22 +251,9 @@ class User(PermissionsMixin):
|
||||
from email.header import Header
|
||||
if self.first_name != "" or self.last_name != "":
|
||||
return "%s <%s>" % \
|
||||
(Header(self.fullname, 'utf8').encode(), self.email)
|
||||
(Header(self.fullname, "utf8").encode(), self.email)
|
||||
return self.email
|
||||
|
||||
def belongs_to_group(self, name):
|
||||
"""Simple shortcut to check if this user is a member of a
|
||||
specific group.
|
||||
|
||||
:param name: the group's name
|
||||
:return: a boolean
|
||||
"""
|
||||
try:
|
||||
self.groups.get(name=name)
|
||||
except Group.DoesNotExist:
|
||||
return False
|
||||
return True
|
||||
|
||||
def is_owner(self, obj):
|
||||
"""Tell is the user is the unique owner of this object
|
||||
|
||||
@@ -339,7 +319,7 @@ class User(PermissionsMixin):
|
||||
|
||||
:param string role: the role to set
|
||||
"""
|
||||
if role is None or self.group == role:
|
||||
if role is None or self.role == role:
|
||||
return
|
||||
events.raiseEvent("RoleChanged", self, role)
|
||||
self.groups.clear()
|
||||
@@ -353,7 +333,7 @@ class User(PermissionsMixin):
|
||||
self.groups.add(Group.objects.get(name=role))
|
||||
except Group.DoesNotExist:
|
||||
self.groups.add(Group.objects.get(name="SimpleUsers"))
|
||||
if self.group != "SimpleUsers" and not self.can_access(self):
|
||||
if role != "SimpleUsers" and not self.can_access(self):
|
||||
from modoboa.lib.permissions import grant_access_to_object
|
||||
grant_access_to_object(self, self)
|
||||
self.save()
|
||||
@@ -392,7 +372,7 @@ class User(PermissionsMixin):
|
||||
|
||||
The expected order is the following::
|
||||
|
||||
"account", loginname, password, first name, last name, enabled, group
|
||||
"account", loginname, password, first name, last name, enabled, role
|
||||
|
||||
Additional fields can be added using the *AccountImported* event.
|
||||
|
||||
@@ -463,7 +443,7 @@ class User(PermissionsMixin):
|
||||
self.first_name.encode("utf-8"),
|
||||
self.last_name.encode("utf-8"),
|
||||
self.is_active,
|
||||
self.group,
|
||||
self.role,
|
||||
self.email.encode("utf-8")
|
||||
]
|
||||
row += events.raiseQueryEvent("AccountExported", self)
|
||||
@@ -472,7 +452,7 @@ class User(PermissionsMixin):
|
||||
reversion.register(User)
|
||||
|
||||
|
||||
def populate_callback(user, group='SimpleUsers'):
|
||||
def populate_callback(user, group="SimpleUsers"):
|
||||
"""Populate callback
|
||||
|
||||
If the LDAP authentication backend is in use, this callback will
|
||||
|
||||
@@ -4,3 +4,4 @@ import django.dispatch
|
||||
|
||||
can_create_object = django.dispatch.Signal(
|
||||
providing_args=["context", "object_type", "count"])
|
||||
register_postfix_maps = django.dispatch.Signal()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "Name" %}</th>
|
||||
<th>{% trans "Group name" %}</th>
|
||||
<th>{% trans "Role" %}</th>
|
||||
<th>{% trans "Last login" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -42,7 +42,7 @@
|
||||
{% connected_users as users %}{% for u in users %}
|
||||
<tr>
|
||||
<td>{{ u.username }}</td>
|
||||
<td>{{ u.group }}</td>
|
||||
<td>{{ u.role }}</td>
|
||||
<td>{{ u.last_login }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
@@ -159,7 +159,7 @@ class LDAPAuthenticationTestCase(LDAPTestCaseMixin, ModoTestCase):
|
||||
def check_created_user(self, username, group="SimpleUsers", with_mb=True):
|
||||
"""Check that created user is valid."""
|
||||
user = models.User.objects.get(username=username)
|
||||
self.assertEqual(user.group, group)
|
||||
self.assertEqual(user.role, group)
|
||||
if with_mb:
|
||||
self.assertEqual(user.email, username)
|
||||
self.assertEqual(user.mailbox.domain.name, "example.com")
|
||||
|
||||
@@ -11,6 +11,18 @@ from modoboa.lib.api_client import ModoAPIClient
|
||||
from . import models
|
||||
|
||||
|
||||
def parse_map_file(path):
|
||||
"""Parse a postfix map file and return values."""
|
||||
content = {}
|
||||
with open(path) as fp:
|
||||
for line in fp:
|
||||
if not line or line.startswith("#"):
|
||||
continue
|
||||
name, value = line.split("=", 1)
|
||||
content[name.strip()] = value.strip()
|
||||
return content
|
||||
|
||||
|
||||
def check_for_updates(request):
|
||||
"""Check if a new version of Modoboa is available."""
|
||||
local_config = models.LocalConfig.objects.first()
|
||||
|
||||
@@ -38,7 +38,7 @@ def dologin(request):
|
||||
request.user.language)
|
||||
|
||||
logger.info(
|
||||
_("User '%s' successfully logged in" % user.username)
|
||||
_("User '%s' successfully logged in") % user.username
|
||||
)
|
||||
events.raiseEvent("UserLogin", request,
|
||||
form.cleaned_data["username"],
|
||||
@@ -73,6 +73,6 @@ def dologout(request):
|
||||
if not request.user.is_anonymous():
|
||||
events.raiseEvent("UserLogout", request)
|
||||
logger = logging.getLogger("modoboa.auth")
|
||||
logger.info(_("User '%s' logged out" % request.user.username))
|
||||
logger.info(_("User '%s' logged out") % request.user.username)
|
||||
logout(request)
|
||||
return HttpResponseRedirect(reverse("core:login"))
|
||||
|
||||
@@ -6,6 +6,7 @@ from datetime import datetime
|
||||
from django import template
|
||||
from django.template import Template, Context
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from modoboa.lib import events
|
||||
|
||||
@@ -94,3 +95,10 @@ def extra_static_content(caller, st_type, user):
|
||||
"GetStaticContent", caller, st_type, user)
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
@register.filter(name='localize_header_name')
|
||||
def localize_header_name(headername):
|
||||
""" Localizes the header names """
|
||||
names = {"From": _("From"), "To": _("To"), "Date": _("Date"), "Subject": _("Subject")}
|
||||
return names.get(headername, headername)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
"""Tools for top level testing (ie. when ran by Travis)."""
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from .sysutils import exec_cmd
|
||||
from django.core.management import call_command
|
||||
|
||||
|
||||
class MapFilesTestCaseMixin(object):
|
||||
|
||||
"""A generic test case to check map files generation."""
|
||||
|
||||
MAP_FILES = None
|
||||
@@ -18,17 +18,13 @@ class MapFilesTestCaseMixin(object):
|
||||
self.workdir = tempfile.mkdtemp()
|
||||
|
||||
def tearDown(self):
|
||||
exec_cmd("rm -rf {0}".format(self.workdir))
|
||||
shutil.rmtree(self.workdir)
|
||||
|
||||
def _test_maps_generation(self, engine):
|
||||
dburl = "{0}://user:password@localhost/testdb".format(engine)
|
||||
code, output = exec_cmd(
|
||||
"modoboa-admin.py postfix_maps {0}--dburl {1} {2}".format(
|
||||
"--extensions {} ".format(self.extension)
|
||||
if self.extension else "", dburl, self.workdir
|
||||
)
|
||||
)
|
||||
self.assertEqual(code, 0)
|
||||
call_command(
|
||||
"generate_postfix_maps",
|
||||
"--dburl", dburl, "--destdir", self.workdir)
|
||||
|
||||
for mapfile in self.MAP_FILES:
|
||||
path = "{0}/{1}".format(self.workdir, mapfile)
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
"""
|
||||
u2u_decode.py
|
||||
|
||||
unstructured rfc2047 header to unicode
|
||||
"""
|
||||
import re
|
||||
"""Unstructured rfc2047 header to unicode."""
|
||||
|
||||
from email.header import decode_header, make_header
|
||||
import re
|
||||
|
||||
# check spaces between encoded_words (and strip them)
|
||||
sre = re.compile(r'\?=[ \t]+=\?')
|
||||
@@ -15,7 +12,7 @@ mre = re.compile(r'=\?[^?]*?\?[bq]\?[^?\t]*?\?=', re.I)
|
||||
|
||||
|
||||
def clean_spaces(m):
|
||||
"""Replace unencoded spaces in string
|
||||
"""Replace unencoded spaces in string.
|
||||
|
||||
:param str m: a match object
|
||||
:return: the cleaned string
|
||||
@@ -24,12 +21,11 @@ def clean_spaces(m):
|
||||
|
||||
|
||||
def decode_mime(m):
|
||||
"""substitute matching encoded_word with unicode equiv.
|
||||
"""
|
||||
"""Substitute matching encoded_word with unicode equiv."""
|
||||
h = decode_header(clean_spaces(m))
|
||||
try:
|
||||
u = unicode(make_header(h))
|
||||
except UnicodeDecodeError:
|
||||
except (LookupError, UnicodeDecodeError):
|
||||
return m.group(0)
|
||||
return u
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ def user_can_set_role(user, role, account=None):
|
||||
)
|
||||
if condition:
|
||||
return [True]
|
||||
if account is not None and account.group == role:
|
||||
if account is not None and account.role == role:
|
||||
return [True]
|
||||
return [False]
|
||||
|
||||
@@ -60,18 +60,18 @@ def user_can_set_role(user, role, account=None):
|
||||
def on_account_modified(old, new):
|
||||
"""Update limits when roles are updated"""
|
||||
owner = get_object_owner(old)
|
||||
if owner.group not in ["SuperAdmins", "Resellers"]:
|
||||
if owner.role not in ["SuperAdmins", "Resellers"]:
|
||||
# Domain admins can't change the role so nothing to check.
|
||||
return
|
||||
|
||||
if new.group not in ["DomainAdmins", "Resellers"]:
|
||||
if new.role not in ["DomainAdmins", "Resellers"]:
|
||||
move_pool_resource(owner, new)
|
||||
|
||||
|
||||
@events.observe("AccountDeleted")
|
||||
def on_account_deleted(account, byuser, **kwargs):
|
||||
owner = get_object_owner(account)
|
||||
if owner.group not in ["SuperAdmins", "Resellers"]:
|
||||
if owner.role not in ["SuperAdmins", "Resellers"]:
|
||||
return
|
||||
|
||||
move_pool_resource(owner, account)
|
||||
|
||||
@@ -21,7 +21,7 @@ class ResourcePoolForm(forms.Form):
|
||||
if "required_role" in tpl:
|
||||
condition = (
|
||||
self.account is not None and
|
||||
self.account.group != tpl["required_role"]
|
||||
self.account.role != tpl["required_role"]
|
||||
)
|
||||
if condition:
|
||||
continue
|
||||
|
||||
@@ -26,7 +26,7 @@ def display_pool_usage(user, target, currentpage):
|
||||
name for name, tpl in utils.get_user_limit_templates()
|
||||
if name not in exceptions and
|
||||
("required_role" not in tpl or
|
||||
tpl["required_role"] == user.group)
|
||||
tpl["required_role"] == user.role)
|
||||
]
|
||||
|
||||
limits = user.userobjectlimit_set.filter(name__in=names, max_value__gt=0)
|
||||
@@ -42,10 +42,14 @@ def display_pool_usage(user, target, currentpage):
|
||||
def extra_account_form(user, account=None):
|
||||
if parameters.get_admin("ENABLE_ADMIN_LIMITS") == "no":
|
||||
return []
|
||||
if user.group not in ["SuperAdmins", "Resellers"]:
|
||||
if user.role not in ["SuperAdmins", "Resellers"]:
|
||||
return []
|
||||
if account is not None and \
|
||||
account.group not in ["Resellers", "DomainAdmins"]:
|
||||
condition = (
|
||||
(account is not None and
|
||||
account.role not in ["Resellers", "DomainAdmins"]) or
|
||||
user == account
|
||||
)
|
||||
if condition:
|
||||
return []
|
||||
|
||||
return [{
|
||||
@@ -81,8 +85,7 @@ def fill_domain_instances(user, domain, instances):
|
||||
def check_form_access(account, form):
|
||||
if form["id"] != "resources":
|
||||
return [True]
|
||||
if not account.belongs_to_group("Resellers") and \
|
||||
not account.belongs_to_group("DomainAdmins"):
|
||||
if account.role not in ["Resellers", "DomainAdmins"]:
|
||||
return [False]
|
||||
return [True]
|
||||
|
||||
@@ -91,11 +94,11 @@ def check_form_access(account, form):
|
||||
def fill_account_instances(user, account, instances):
|
||||
condition = (
|
||||
parameters.get_admin("ENABLE_ADMIN_LIMITS") == "no" or
|
||||
(not user.is_superuser and user.group != "Resellers")
|
||||
(not user.is_superuser and user.role != "Resellers")
|
||||
)
|
||||
if condition:
|
||||
return
|
||||
if account.group not in ["Resellers", "DomainAdmins"]:
|
||||
if account.role not in ["Resellers", "DomainAdmins"]:
|
||||
return
|
||||
instances["resources"] = account
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-01-06 10:05+0000\n"
|
||||
"Last-Translator: Miroslav Abrahám <miris@kunago.com>\n"
|
||||
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/"
|
||||
@@ -209,7 +209,7 @@ msgstr "Neplatné omezení"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Nemáte oprávnění nastavovat neomezené hodnoty"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Zdroje"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-03 11:02+0000\n"
|
||||
"Last-Translator: Arvedui <arvedui@posteo.de>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -210,7 +210,7 @@ msgstr ""
|
||||
"Sie verfügen nicht über die erforderlichen Rechte, um unbegrenzte Werte "
|
||||
"anzugeben"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Ressourcen"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -167,7 +167,7 @@ msgstr ""
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr ""
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-10-01 09:56+0000\n"
|
||||
"Last-Translator: Pedro Gracia <lasarux@neuroomante.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -210,7 +210,7 @@ msgstr "Límite inválido"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "No está autorizado definir valores ilimitados"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Recursos"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-04-27 20:12+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: French (http://www.transifex.com/tonio/modoboa/language/fr/)\n"
|
||||
@@ -187,7 +187,7 @@ msgstr "Limite invalide"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Vous n'êtes pas autorisé à définir des valeurs illimitées"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Ressources"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-23 00:56+0100\n"
|
||||
"Last-Translator: Alberto Berti <alberto@metapensiero.it>\n"
|
||||
"Language-Team: ITALIANO <LL@li.org>\n"
|
||||
@@ -211,7 +211,7 @@ msgstr "Limite non valido"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Non ti è consentito definire valori non limitati"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Risorse"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-06-07 07:16+0000\n"
|
||||
"Last-Translator: cwatanab <chihiro.watanabe@live.jp>\n"
|
||||
"Language-Team: Japanese (Japan) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -187,7 +187,7 @@ msgstr "不正な制限"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "無制限な値に設定するのは許可されていません"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "リソース"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-31 11:37+0000\n"
|
||||
"Last-Translator: TuxBrother <vrijwilligerswerk@wij.rs>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
@@ -204,7 +204,7 @@ msgstr "Ongeldige limiet"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "U mag geen ongelimiteerde waardes opgeven"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Capaciteiten"
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-17 12:19+0000\n"
|
||||
"Last-Translator: Jose Marcos Araujo <jmaraujo@avancetec.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -193,7 +193,7 @@ msgstr "Limite inválido"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Você não tem permissão para definir valores ilimitados"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Recursos"
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-29 12:51+0000\n"
|
||||
"Last-Translator: Mike C. <miguelmclara@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
|
||||
@@ -216,7 +216,7 @@ msgstr "Limite inválido"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Não está autorizado a definir valores ilimitados"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Recursos"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-03 09:35+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -217,7 +217,7 @@ msgstr "Ошибочный лимит"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Вам не позволено определять нелимитированные значения"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Ресурсы"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-30 18:08+0000\n"
|
||||
"Last-Translator: Olle Gustafsson <olle@dalnix.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/tonio/modoboa/language/"
|
||||
@@ -187,7 +187,7 @@ msgstr "Ogiltig gräns"
|
||||
msgid "You're not allowed to define unlimited values"
|
||||
msgstr "Du har inte tillåtelse att definiera obegränsat värden"
|
||||
|
||||
#: limits/general_callbacks.py:52 limits/general_callbacks.py:65
|
||||
#: limits/general_callbacks.py:56 limits/general_callbacks.py:69
|
||||
msgid "Resources"
|
||||
msgstr "Resurser"
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ class DomainLimitsTestCase(lib_tests.ModoTestCase):
|
||||
self.assertFalse(limit.is_exceeded())
|
||||
user = User.objects.get(username="admin@test2.com")
|
||||
values = {
|
||||
"username": user.username, "role": user.group,
|
||||
"username": user.username, "role": user.role,
|
||||
"is_active": user.is_active, "email": user.email,
|
||||
"quota_act": True, "domains": "test2.com",
|
||||
"domains_1": "test.com"
|
||||
@@ -130,7 +130,7 @@ class DomainLimitsTestCase(lib_tests.ModoTestCase):
|
||||
limit.save()
|
||||
self.assertFalse(limit.is_exceeded())
|
||||
values = {
|
||||
"username": user.username, "role": user.group,
|
||||
"username": user.username, "role": user.role,
|
||||
"is_active": user.is_active, "email": user.email,
|
||||
"quota_act": True,
|
||||
"aliases": "alias@test.com", "aliases_1": "alias1@test.com"
|
||||
|
||||
@@ -162,7 +162,7 @@ class DomainAdminTestCase(ResourceTestCase):
|
||||
def test_aliases_limit_through_account_form(self):
|
||||
user = User.objects.get(username='user@test.com')
|
||||
values = dict(
|
||||
username=user.username, role=user.group,
|
||||
username=user.username, role=user.role,
|
||||
is_active=user.is_active, email=user.email, quota_act=True,
|
||||
aliases="alias1@test.com", aliases_1="alias2@test.com"
|
||||
)
|
||||
@@ -245,12 +245,12 @@ class ResellerTestCase(ResourceTestCase):
|
||||
|
||||
self.user.userobjectlimit_set.filter(
|
||||
name="mailboxes").update(max_value=3)
|
||||
self._create_account('user1@domain.tld')
|
||||
user = User.objects.get(username='user1@domain.tld')
|
||||
self._create_account("user1@domain.tld")
|
||||
user = User.objects.get(username="user1@domain.tld")
|
||||
values = {
|
||||
'username': user.username, 'role': 'DomainAdmins',
|
||||
'quota_act': True, 'is_active': user.is_active,
|
||||
'email': user.email
|
||||
"username": user.username, "role": "DomainAdmins",
|
||||
"quota_act": True, "is_active": user.is_active,
|
||||
"email": user.email
|
||||
}
|
||||
resp = self.ajax_post(
|
||||
reverse("admin:account_change", args=[user.id]),
|
||||
@@ -320,7 +320,7 @@ class ResellerTestCase(ResourceTestCase):
|
||||
|
||||
# Give 1 mailbox and 2 aliases to the admin -> should work
|
||||
values = {
|
||||
'username': user.username, 'role': user.group, 'quota_act': True,
|
||||
'username': user.username, 'role': user.role, 'quota_act': True,
|
||||
'is_active': user.is_active, 'email': user.email,
|
||||
'mailboxes_limit': 1, 'mailbox_aliases_limit': 2
|
||||
}
|
||||
@@ -347,7 +347,7 @@ class ResellerTestCase(ResourceTestCase):
|
||||
self._create_account('admin1@domain.tld', role='DomainAdmins')
|
||||
user = User.objects.get(username='admin1@domain.tld')
|
||||
values = {
|
||||
'username': user.username, 'role': user.group, 'quota_act': True,
|
||||
'username': user.username, 'role': user.role, 'quota_act': True,
|
||||
'is_active': user.is_active, 'email': user.email,
|
||||
'mailboxes_limit': 1, 'mailbox_aliases_limit': 2
|
||||
}
|
||||
@@ -379,7 +379,7 @@ class ResellerTestCase(ResourceTestCase):
|
||||
|
||||
# Give 1 mailbox and 2 aliases to the admin -> should work
|
||||
values = {
|
||||
'username': user.username, 'role': user.group, 'quota_act': True,
|
||||
'username': user.username, 'role': user.role, 'quota_act': True,
|
||||
'is_active': user.is_active, 'email': user.email,
|
||||
'mailboxes_limit': 1, 'mailbox_aliases_limit': 2
|
||||
}
|
||||
@@ -411,7 +411,7 @@ class ResellerTestCase(ResourceTestCase):
|
||||
|
||||
# Give 2 mailboxes and 3 aliases to the admin -> should fail.
|
||||
values = {
|
||||
'username': user.username, 'role': user.group, 'quota_act': True,
|
||||
'username': user.username, 'role': user.role, 'quota_act': True,
|
||||
'is_active': user.is_active, 'email': user.email,
|
||||
'mailboxes_limit': 2, 'mailbox_aliases_limit': 3
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-01-06 10:05+0000\n"
|
||||
"Last-Translator: Miroslav Abrahám <miris@kunago.com>\n"
|
||||
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/"
|
||||
@@ -434,6 +434,12 @@ msgstr "heslo"
|
||||
msgid "last login"
|
||||
msgstr "poslední přihlášení"
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Preferovaný jazyk"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -456,32 +462,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Nemůžete smazat vlastní účet"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Nebylo možné změnit heslo: LDAP modul není instalován"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "účet"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Neplatný řádek"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr "Nemůžete importvat účet s vyšším oprávněním, než máte vy sám"
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr "Běžný uživatel '%s' musí mít nastavenou platnou emailovou adresu"
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "pole uživatelského jména a emailu se nesmí pro '%s' lišit"
|
||||
@@ -566,8 +572,8 @@ msgid "Active users"
|
||||
msgstr "Aktivní uživatelé"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Název skupiny"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -581,7 +587,7 @@ msgstr "Záznamy"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Dříve v Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -653,7 +659,7 @@ msgstr "Odhlásit se"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
#, fuzzy
|
||||
#| msgid "Welcome to Modoboa"
|
||||
msgid "The core part of Modoboa"
|
||||
@@ -738,7 +744,19 @@ msgstr "Ne"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Nebylo možné změnit heslo: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Předmět"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Omlouváme se"
|
||||
|
||||
@@ -758,10 +776,6 @@ msgstr "Hledat..."
|
||||
msgid "From address"
|
||||
msgstr "Z adresy"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Předmět"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Obojí"
|
||||
@@ -801,8 +815,8 @@ msgstr "Zapamatovat si"
|
||||
msgid "Log in"
|
||||
msgstr "Přihlásit"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Název skupiny"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Zobrazení"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Preferovaný jazyk"
|
||||
|
||||
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-07-09 14:03+0000\n"
|
||||
"Last-Translator: controlc.de\n"
|
||||
"Language-Team: German (http://www.transifex.com/tonio/modoboa/language/de/)\n"
|
||||
@@ -214,10 +214,8 @@ msgstr ""
|
||||
"angelegt werden. Nutzen Sie ';', um Gruppen zu separieren."
|
||||
|
||||
#: core/app_settings.py:196
|
||||
#, fuzzy
|
||||
#| msgid "Group name"
|
||||
msgid "Group type"
|
||||
msgstr "Gruppenname"
|
||||
msgstr "Gruppentyp"
|
||||
|
||||
#: core/app_settings.py:200
|
||||
msgid "The LDAP group type to use with your directory."
|
||||
@@ -399,16 +397,12 @@ msgid "deleted"
|
||||
msgstr "entfernt"
|
||||
|
||||
#: core/models.py:51
|
||||
#, fuzzy
|
||||
#| msgid "Group name"
|
||||
msgid "First name"
|
||||
msgstr "Gruppenname"
|
||||
msgstr "Vorname"
|
||||
|
||||
#: core/models.py:53
|
||||
#, fuzzy
|
||||
#| msgid "Last login"
|
||||
msgid "Last name"
|
||||
msgstr "Letzte Anmeldung"
|
||||
msgstr "Nachname"
|
||||
|
||||
#: core/models.py:60
|
||||
msgid "Allow mailboxes access"
|
||||
@@ -426,55 +420,57 @@ msgstr "Passwort"
|
||||
msgid "last login"
|
||||
msgstr "Letzte Anmeldung"
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr "Sprache"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr "Bevorzugte Sprache für Seitendarstellung"
|
||||
|
||||
#: core/models.py:77
|
||||
msgid "Phone number"
|
||||
msgstr ""
|
||||
msgstr "Telefonnummer"
|
||||
|
||||
#: core/models.py:79
|
||||
msgid "Secondary email"
|
||||
msgstr ""
|
||||
msgstr "Alternative Email-Adresse"
|
||||
|
||||
#: core/models.py:82
|
||||
msgid "An alternative e-mail address, can be used for recovery needs."
|
||||
msgstr ""
|
||||
msgstr "Eine alternative e-mail Adresse zur Widerherstellung."
|
||||
|
||||
#: core/models.py:114
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Sie können Ihr eigenes Konto nicht entfernen"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Konnte Passwort nicht aktualisieren: LDAP-Modul nicht installiert"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "Konto"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Ungültige Zeile"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr ""
|
||||
"Sie können kein Konto mit einer höheren Rolle als Ihrer eigenen importieren"
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr "Der normale Benutzer '%s' muss eine gültige E-Mail-Adresse besitzen"
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "Benutzername und E-Mail für '%s' dürfen sich nicht unterscheiden"
|
||||
@@ -499,11 +495,11 @@ msgstr "Aktualisieren"
|
||||
#: core/templates/core/dashboard.html:9
|
||||
#, python-format
|
||||
msgid "Hello %(user)s."
|
||||
msgstr ""
|
||||
msgstr "Hallo %(user)s."
|
||||
|
||||
#: core/templates/core/dashboard.html:15
|
||||
msgid "Latest news"
|
||||
msgstr ""
|
||||
msgstr "Neueste Nachrichten"
|
||||
|
||||
#: core/templates/core/dashboard.html:29
|
||||
msgid ""
|
||||
@@ -555,8 +551,8 @@ msgid "Active users"
|
||||
msgstr "Aktive Benutzer"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Gruppenname"
|
||||
msgid "Role"
|
||||
msgstr "Rolle"
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -570,7 +566,7 @@ msgstr "Logs"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Vorher auf Modoboa…"
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -642,7 +638,7 @@ msgstr "Logout"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Der Kern von Modoboa"
|
||||
|
||||
@@ -721,12 +717,22 @@ msgid "No"
|
||||
msgstr "Nein"
|
||||
|
||||
#: lib/ldap_utils.py:124
|
||||
#, fuzzy
|
||||
#| msgid "Failed to update password: %s"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Konnte Passwort nicht aktualisieren: %s"
|
||||
msgstr "Konnte Passwort nicht aktualisieren: {}"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr "Absender"
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr "Empfänger"
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Betreff"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Entschuldigung"
|
||||
|
||||
@@ -746,10 +752,6 @@ msgstr "Suchen..."
|
||||
msgid "From address"
|
||||
msgstr "Absender-Adresse"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Betreff"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Beide"
|
||||
@@ -791,6 +793,3 @@ msgstr "Anmelden"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Darstellung"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Bevorzugte Sprache"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -401,6 +401,10 @@ msgstr ""
|
||||
msgid "last login"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:73
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr ""
|
||||
@@ -421,32 +425,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr ""
|
||||
@@ -525,7 +529,7 @@ msgid "Active users"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
@@ -540,7 +544,7 @@ msgstr ""
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
@@ -610,7 +614,7 @@ msgstr ""
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr ""
|
||||
|
||||
@@ -686,7 +690,19 @@ msgstr ""
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr ""
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr ""
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr ""
|
||||
|
||||
@@ -706,10 +722,6 @@ msgstr ""
|
||||
msgid "From address"
|
||||
msgstr ""
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr ""
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr ""
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-10-01 09:56+0000\n"
|
||||
"Last-Translator: Pedro Gracia <lasarux@neuroomante.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -436,6 +436,12 @@ msgstr "Contraseña"
|
||||
msgid "last login"
|
||||
msgstr "Última entrada"
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Idioma preferido"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -458,32 +464,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "No puede eliminar su propia cuenta"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Falló al actualizar la contraseña: módulo LDAP no instalado"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "cuenta"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Línea inválida"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr ""
|
||||
@@ -568,8 +574,8 @@ msgid "Active users"
|
||||
msgstr "Usuarios activos"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Nombre del grupo"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -583,7 +589,7 @@ msgstr "Logs"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Anteriormente en Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
@@ -655,7 +661,7 @@ msgstr "Salir"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
#, fuzzy
|
||||
#| msgid "Welcome to Modoboa"
|
||||
msgid "The core part of Modoboa"
|
||||
@@ -741,7 +747,19 @@ msgstr "No "
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Falló la actualización de la contraseña: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Tema"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Lo siento"
|
||||
|
||||
@@ -761,10 +779,6 @@ msgstr "Buscar..."
|
||||
msgid "From address"
|
||||
msgstr "De la dirección"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Tema"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Ambos"
|
||||
@@ -804,8 +818,8 @@ msgstr "Recuerdame"
|
||||
msgid "Log in"
|
||||
msgstr "Entrar"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Nombre del grupo"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Mostrar"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Idioma preferido"
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"PO-Revision-Date: 2016-09-16 14:04+0000\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-10-16 19:46+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: French (http://www.transifex.com/tonio/modoboa/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -402,6 +402,10 @@ msgstr "mot de passe"
|
||||
msgid "last login"
|
||||
msgstr "dernière connexion"
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr "langue"
|
||||
|
||||
#: core/models.py:73
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr "Langage préféré pour afficher les pages"
|
||||
@@ -422,32 +426,32 @@ msgstr "Une adresse e-mail alternative ou de secours."
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Vous ne pouvez pas supprimer votre propre compte"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
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:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "compte"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Ligne invalide"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, 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"
|
||||
@@ -526,8 +530,8 @@ msgid "Active users"
|
||||
msgstr "Utilisateurs actifs"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Nom du groupe"
|
||||
msgid "Role"
|
||||
msgstr "Rôle"
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -541,7 +545,7 @@ msgstr "Journaux"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Précédemment dans Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Date"
|
||||
|
||||
@@ -611,7 +615,7 @@ msgstr "Déconnexion"
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Le coeur de Modoboa"
|
||||
|
||||
@@ -687,7 +691,19 @@ msgstr "Non"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Impossible de mettre à jour le mot de passe : {}"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr "De"
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr "À"
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Sujet"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Désolé"
|
||||
|
||||
@@ -707,10 +723,6 @@ msgstr "Chercher..."
|
||||
msgid "From address"
|
||||
msgstr "Emetteur"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Sujet"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Tous"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-10-11 11:47+0000\n"
|
||||
"Last-Translator: Rocco <mors10@hotmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/tonio/modoboa/language/"
|
||||
@@ -436,6 +436,12 @@ msgstr "password"
|
||||
msgid "last login"
|
||||
msgstr "ultimo login"
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Lingua preferita"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -458,32 +464,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Non puoi cancellare il tuo account"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Aggiornamento della password fallito: il modulo LDAP non è installato"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "account"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Riga non valida"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, 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"
|
||||
@@ -564,8 +570,8 @@ msgid "Active users"
|
||||
msgstr "Utenti attivi"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Nome gruppo"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -579,7 +585,7 @@ msgstr "Log"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Precedentemente su Modoboa ..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
@@ -651,7 +657,7 @@ msgstr "Esci"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Parte centrale di Modoboa"
|
||||
|
||||
@@ -733,7 +739,19 @@ msgstr "No"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Aggiornamento della password fallito: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Oggetto"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Dispiace"
|
||||
|
||||
@@ -753,10 +771,6 @@ msgstr "Ricerca ..."
|
||||
msgid "From address"
|
||||
msgstr "Mittente"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Oggetto"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Entrambi"
|
||||
@@ -796,8 +810,8 @@ msgstr "Ricordami"
|
||||
msgid "Log in"
|
||||
msgstr "Registrati"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Nome gruppo"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Mostra"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Lingua preferita"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-09-14 17:06+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Japanese (Japan) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -422,6 +422,10 @@ msgstr "パスワード"
|
||||
msgid "last login"
|
||||
msgstr "最終ログイン"
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:73
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr "ページの表示に優先言語を使う"
|
||||
@@ -442,35 +446,35 @@ msgstr "別の電子メールアドレスは、回復の必要のために使用
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "あなた自身のアカウントは削除できません"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr ""
|
||||
"パスワードの更新に失敗しました : LDAP モジュールがインストールされていませ"
|
||||
"ん。"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "アカウント"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "不正な行"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr "あなた以上のロールを持ったアカウントはインポートできません"
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr ""
|
||||
"ユーザー \"%s\" は、正しい電子メールアドレスを持っていなければいけません"
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "\"%s\" のユーザー名と電子メールフィールドが同一である必要があります。"
|
||||
@@ -551,8 +555,8 @@ msgid "Active users"
|
||||
msgstr "アクティブユーザー"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "グループ名"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -566,7 +570,7 @@ msgstr "ログ"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Modoboa 以前 ..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "日付"
|
||||
|
||||
@@ -636,7 +640,7 @@ msgstr "ログアウト"
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Modoboaのコア部分"
|
||||
|
||||
@@ -712,7 +716,19 @@ msgstr "いいえ"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "パスワードの更新に失敗しました: {}"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "件名"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "すみません"
|
||||
|
||||
@@ -732,10 +748,6 @@ msgstr "検索 ..."
|
||||
msgid "From address"
|
||||
msgstr "From アドレス"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "件名"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "両方"
|
||||
@@ -774,3 +786,6 @@ msgstr "記憶する"
|
||||
#: templates/registration/login.html:43
|
||||
msgid "Log in"
|
||||
msgstr "ログイン"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "グループ名"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-31 11:37+0000\n"
|
||||
"Last-Translator: TuxBrother <vrijwilligerswerk@wij.rs>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
@@ -434,6 +434,12 @@ msgstr "wachtwoord"
|
||||
msgid "last login"
|
||||
msgstr "laatste login"
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Voorkeurs taal"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -456,32 +462,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "U kunt uw eigen account niet verwijderen"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Mislukt om wachtwoord aan te passen: LDAP module niet geinstalleerd"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "account"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Verkeerde regel"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "gebruikersnaam en email velden moeten niet verschillen van '%s'"
|
||||
@@ -566,8 +572,8 @@ msgid "Active users"
|
||||
msgstr "Actieve gebruikers"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Groep naam"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -581,7 +587,7 @@ msgstr "Logs"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Vorige gebeurtenissen op Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -653,7 +659,7 @@ msgstr "Uitloggen"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
#, fuzzy
|
||||
#| msgid "Welcome to Modoboa"
|
||||
msgid "The core part of Modoboa"
|
||||
@@ -739,7 +745,19 @@ msgstr "Nee"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Mislukt om wachtwoord aan te passen: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Onderwerp"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Sorry"
|
||||
|
||||
@@ -759,10 +777,6 @@ msgstr "Zoeken..."
|
||||
msgid "From address"
|
||||
msgstr "Van adres"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Onderwerp"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Beiden"
|
||||
@@ -802,8 +816,8 @@ msgstr "Onthoud mij"
|
||||
msgid "Log in"
|
||||
msgstr "Inloggen"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Groep naam"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Weergeven"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Voorkeurs taal"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-17 12:26+0000\n"
|
||||
"Last-Translator: Jose Marcos Araujo <jmaraujo@avancetec.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/tonio/modoboa/"
|
||||
@@ -428,6 +428,10 @@ msgstr "senha"
|
||||
msgid "last login"
|
||||
msgstr "último login"
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:73
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr "Linguagem padrão para visualizar mensagens"
|
||||
@@ -449,32 +453,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Você não pode deletar sua própria conta"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Falha ao atualizar senha: módulo LDAP não instalado"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "conta"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Linha inválida"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr "Você não pode importar uma conta com um papel maior que o seu"
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr "O usuário simples '%s' deve ter um endereço de e-mail válido"
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "os campos nome de usuário e e-mail não diferem de '%s'"
|
||||
@@ -554,8 +558,8 @@ msgid "Active users"
|
||||
msgstr "Usuários ativos"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Nome do grupo"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -569,7 +573,7 @@ msgstr "Logs"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Previamente no Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
@@ -639,7 +643,7 @@ msgstr "Sair"
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Core do Modoboa"
|
||||
|
||||
@@ -715,7 +719,19 @@ msgstr "Não"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Falha ao atualizar a senha: {}"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Assunto"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Desculpe"
|
||||
|
||||
@@ -735,10 +751,6 @@ msgstr "Buscar..."
|
||||
msgid "From address"
|
||||
msgstr "Do endereço"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Assunto"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Ambos"
|
||||
@@ -777,3 +789,6 @@ msgstr "Lembrar-me"
|
||||
#: templates/registration/login.html:43
|
||||
msgid "Log in"
|
||||
msgstr "Entrar"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Nome do grupo"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-29 12:51+0000\n"
|
||||
"Last-Translator: Mike C. <miguelmclara@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
|
||||
@@ -435,6 +435,12 @@ msgstr "password"
|
||||
msgid "last login"
|
||||
msgstr "último login"
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Idioma preferido"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -457,32 +463,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Não pode apagar a sua própria conta"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Falha ao actualizar password: Modulo LDAP não instalado"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "conta"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Linha inválida"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr ""
|
||||
@@ -569,8 +575,8 @@ msgid "Active users"
|
||||
msgstr "Utilizadores ativos"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Nome do grupo"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -584,7 +590,7 @@ msgstr "Logs"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Anteriormente no Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
@@ -656,7 +662,7 @@ msgstr "Sair"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
#, fuzzy
|
||||
#| msgid "Welcome to Modoboa"
|
||||
msgid "The core part of Modoboa"
|
||||
@@ -740,7 +746,19 @@ msgstr "Não"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Falha ao actualizar a password: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Assunto"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Lamentamos"
|
||||
|
||||
@@ -760,10 +778,6 @@ msgstr "Procurar..."
|
||||
msgid "From address"
|
||||
msgstr "Do endereço"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Assunto"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Ambos"
|
||||
@@ -803,8 +817,8 @@ msgstr "Lembrar-me"
|
||||
msgid "Log in"
|
||||
msgstr "Entrar"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Nome do grupo"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Exibir"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Idioma preferido"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-03 09:35+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
@@ -425,6 +425,12 @@ msgstr ""
|
||||
msgid "last login"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:70
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language"
|
||||
msgid "language"
|
||||
msgstr "Предпочитаемый язык"
|
||||
|
||||
#: core/models.py:73
|
||||
#, fuzzy
|
||||
#| msgid "Prefered language to display pages"
|
||||
@@ -447,32 +453,32 @@ msgstr ""
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Вы не можете удалить собственный аккаунт"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Ошибка обновления пароля: модуль LDAP не установлен"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "Аккаунт"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Ошибочная строка"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
msgid "You can't import an account with a role greater than yours"
|
||||
msgstr "Вы не можете импортировать аккаунт с ролью старше чем у вас"
|
||||
|
||||
#: core/models.py:429
|
||||
#: core/models.py:409
|
||||
#, python-format
|
||||
msgid "The simple user '%s' must have a valid email address"
|
||||
msgstr "Пользователь '%s' должен иметь действительный почтовый адрес"
|
||||
|
||||
#: core/models.py:434
|
||||
#: core/models.py:414
|
||||
#, python-format
|
||||
msgid "username and email fields must not differ for '%s'"
|
||||
msgstr "Имя пользователя и адрес не должны отличатся для пользователя '%s'"
|
||||
@@ -556,8 +562,8 @@ msgid "Active users"
|
||||
msgstr "Активные пользователи"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Название группы"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -571,7 +577,7 @@ msgstr "Логи"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Ранее в Modoboa ..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Дата"
|
||||
|
||||
@@ -643,7 +649,7 @@ msgstr "Завершить сеанс"
|
||||
msgid "API"
|
||||
msgstr ""
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
#, fuzzy
|
||||
#| msgid "Welcome to Modoboa"
|
||||
msgid "The core part of Modoboa"
|
||||
@@ -727,7 +733,19 @@ msgstr "Нет"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Ошибка обновления пароля: %s"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Тема"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Жаль"
|
||||
|
||||
@@ -747,10 +765,6 @@ msgstr "Поиск..."
|
||||
msgid "From address"
|
||||
msgstr "Адрес отправителя"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Тема"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Оба"
|
||||
@@ -790,8 +804,8 @@ msgstr "Запомнить меня"
|
||||
msgid "Log in"
|
||||
msgstr "Войти"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Название группы"
|
||||
|
||||
#~ msgid "Display"
|
||||
#~ msgstr "Отображение"
|
||||
|
||||
#~ msgid "Prefered language"
|
||||
#~ msgstr "Предпочитаемый язык"
|
||||
|
||||
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-05-30 18:03+0000\n"
|
||||
"Last-Translator: Olle Gustafsson <olle@dalnix.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/tonio/modoboa/language/"
|
||||
@@ -424,6 +424,10 @@ msgstr "lösenord"
|
||||
msgid "last login"
|
||||
msgstr "senaste inloggning"
|
||||
|
||||
#: core/models.py:70
|
||||
msgid "language"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:73
|
||||
msgid "Prefered language to display pages."
|
||||
msgstr "Önskat språk för att visa sidor."
|
||||
@@ -444,32 +448,32 @@ msgstr "En alternativ e-post adress, kan användas för återställningsbehov."
|
||||
msgid "You can't delete your own account"
|
||||
msgstr "Du kan inte radera ditt eget konto"
|
||||
|
||||
#: core/models.py:164
|
||||
#: core/models.py:167
|
||||
msgid "Failed to update password: LDAP module not installed"
|
||||
msgstr "Misslyckades med att uppdatera lösenord: LDAP modul ej installerad"
|
||||
|
||||
#: core/models.py:222
|
||||
#: core/models.py:225
|
||||
msgid "account"
|
||||
msgstr "konto"
|
||||
|
||||
#: core/models.py:367
|
||||
#: core/models.py:347
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: core/models.py:406
|
||||
#: core/models.py:386
|
||||
msgid "Invalid line"
|
||||
msgstr "Ogiltig rad"
|
||||
|
||||
#: core/models.py:414
|
||||
#: core/models.py:394
|
||||
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:429
|
||||
#: core/models.py:409
|
||||
#, 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:434
|
||||
#: core/models.py:414
|
||||
#, 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'"
|
||||
@@ -549,8 +553,8 @@ msgid "Active users"
|
||||
msgstr "Aktiva användare"
|
||||
|
||||
#: core/templates/core/information.html:37
|
||||
msgid "Group name"
|
||||
msgstr "Gruppnamn"
|
||||
msgid "Role"
|
||||
msgstr ""
|
||||
|
||||
#: core/templates/core/information.html:38
|
||||
msgid "Last login"
|
||||
@@ -564,7 +568,7 @@ msgstr "Loggar"
|
||||
msgid "Previously on Modoboa..."
|
||||
msgstr "Tidigare på Modoboa..."
|
||||
|
||||
#: core/templates/core/logs.html:6
|
||||
#: core/templates/core/logs.html:6 lib/templatetags/lib_tags.py:103
|
||||
msgid "Date"
|
||||
msgstr "Datum"
|
||||
|
||||
@@ -634,7 +638,7 @@ msgstr "Logga ut"
|
||||
msgid "API"
|
||||
msgstr "API"
|
||||
|
||||
#: core/utils.py:22
|
||||
#: core/utils.py:34
|
||||
msgid "The core part of Modoboa"
|
||||
msgstr "Kärnan av Modoboa"
|
||||
|
||||
@@ -710,7 +714,19 @@ msgstr "Nej"
|
||||
msgid "Failed to update password: {}"
|
||||
msgstr "Misslyckades med att uppdatera lösenord: {}"
|
||||
|
||||
#: templates/404.html:4 templates/500.html.py:4
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "From"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103
|
||||
msgid "To"
|
||||
msgstr ""
|
||||
|
||||
#: lib/templatetags/lib_tags.py:103 templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Ämne"
|
||||
|
||||
#: templates/404.html:4 templates/500.html:4
|
||||
msgid "Sorry"
|
||||
msgstr "Ursäkta"
|
||||
|
||||
@@ -730,10 +746,6 @@ msgstr "Sök..."
|
||||
msgid "From address"
|
||||
msgstr "Från adress"
|
||||
|
||||
#: templates/common/email_searchbar.html:17
|
||||
msgid "Subject"
|
||||
msgstr "Ämne"
|
||||
|
||||
#: templates/common/email_searchbar.html:33
|
||||
msgid "Both"
|
||||
msgstr "Båda"
|
||||
@@ -772,3 +784,6 @@ msgstr "Kom ihåg mig"
|
||||
#: templates/registration/login.html:43
|
||||
msgid "Log in"
|
||||
msgstr "Logga in"
|
||||
|
||||
#~ msgid "Group name"
|
||||
#~ msgstr "Gruppnamn"
|
||||
|
||||
@@ -5,9 +5,11 @@ from django.dispatch import receiver
|
||||
|
||||
from modoboa.admin import models as admin_models
|
||||
from modoboa.admin.signals import use_external_recipients
|
||||
from modoboa.core import signals as core_signals
|
||||
from modoboa.lib.email_utils import split_mailbox
|
||||
|
||||
from . import models
|
||||
from . import postfix_maps
|
||||
|
||||
|
||||
@receiver(use_external_recipients)
|
||||
@@ -39,3 +41,14 @@ def clean_domain(sender, instance, **kwargs):
|
||||
# at form level...
|
||||
models.RelayDomain.objects.create(
|
||||
domain=instance, service=models.Service.objects.first())
|
||||
|
||||
|
||||
@receiver(core_signals.register_postfix_maps)
|
||||
def register_postfix_maps(sender, **kwargs):
|
||||
"""Register postfix maps."""
|
||||
return [
|
||||
postfix_maps.RelayDomainsMap,
|
||||
postfix_maps.RelayDomainsTransportMap,
|
||||
postfix_maps.SplitedDomainsTransportMap,
|
||||
postfix_maps.RelayRecipientVerification
|
||||
]
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-01-06 10:05+0000\n"
|
||||
"Last-Translator: Miroslav Abrahám <miris@kunago.com>\n"
|
||||
"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-03 11:02+0000\n"
|
||||
"Last-Translator: Arvedui <arvedui@posteo.de>\n"
|
||||
"Language-Team: German (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-10-01 09:56+0000\n"
|
||||
"Last-Translator: Pedro Gracia <lasarux@neuroomante.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: modoboa-1.1.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2011-01-07 10:00+100\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: FR <tonio@ngyn.org>\n"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-23 00:56+0100\n"
|
||||
"Last-Translator: Alberto Berti <alberto@metapensiero.it>\n"
|
||||
"Language-Team: ITALIANO <LL@li.org>\n"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2016-06-07 07:27+0000\n"
|
||||
"Last-Translator: cwatanab <chihiro.watanabe@live.jp>\n"
|
||||
"Language-Team: Japanese (Japan) (http://www.transifex.com/tonio/modoboa/"
|
||||
|
||||
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-31 11:37+0000\n"
|
||||
"Last-Translator: TuxBrother <vrijwilligerswerk@wij.rs>\n"
|
||||
"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
|
||||
|
||||
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-13 09:10+0000\n"
|
||||
"Last-Translator: Paulino Michelazzo <paulino@michelazzo.com.br>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
|
||||
|
||||
@@ -13,7 +13,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2014-12-29 12:51+0000\n"
|
||||
"Last-Translator: Mike C. <miguelmclara@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
|
||||
|
||||
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2013-12-03 09:35+0000\n"
|
||||
"Last-Translator: Antoine Nguyen <tonio@ngyn.org>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
|
||||
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Modoboa\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-16 16:03+0200\n"
|
||||
"POT-Creation-Date: 2016-10-16 14:31+0200\n"
|
||||
"PO-Revision-Date: 2015-01-13 15:18+0000\n"
|
||||
"Last-Translator: Olle Gustafsson <olle@dalnix.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/projects/p/modoboa/language/"
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
"""Map file definitions for postfix."""
|
||||
|
||||
from modoboa.core.commands.postfix_maps import registry
|
||||
|
||||
|
||||
class RelayDomainsMap(object):
|
||||
|
||||
@@ -116,9 +114,3 @@ class RelayRecipientVerification(object):
|
||||
"INNER JOIN admin_domain AS dom ON rdom.domain_id=dom.id "
|
||||
"WHERE rdom.verify_recipients=1 AND dom.name='%d'"
|
||||
)
|
||||
|
||||
|
||||
registry.add_files([
|
||||
RelayDomainsMap, RelayDomainsTransportMap, SplitedDomainsTransportMap,
|
||||
RelayRecipientVerification
|
||||
])
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{% load i18n %}
|
||||
{% load i18n lib_tags %}
|
||||
{% block emailheaders %}
|
||||
<div id="emailheaders" class="well">
|
||||
{% for hdr in headers %}<div class="row">
|
||||
<div class="header">{{ hdr.name }}</div><div class="value">{{ hdr.value }}</div>
|
||||
<div class="header">{{ hdr.name|localize_header_name }}</div><div class="value">{{ hdr.value }}</div>
|
||||
</div>{% endfor %}
|
||||
{% block extraheaders %}{% endblock %}
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ django-xforwardedfor-middleware
|
||||
django-passwords==0.3.10
|
||||
rfc6266
|
||||
progressbar==2.3
|
||||
djangorestframework==3.3.1
|
||||
djangorestframework==3.3.3
|
||||
django-rest-swagger==0.3.5
|
||||
django-subcommand2==0.1.1
|
||||
gevent==1.1.1
|
||||
|
||||
@@ -54,24 +54,24 @@ def read(fname):
|
||||
|
||||
setup(
|
||||
name="modoboa",
|
||||
version='1.6.0',
|
||||
url='http://modoboa.org/',
|
||||
license='MIT',
|
||||
version="1.6.1",
|
||||
url="http://modoboa.org/",
|
||||
license="ISC",
|
||||
description="Mail hosting made simple",
|
||||
long_description=read('README.rst'),
|
||||
author='Antoine Nguyen',
|
||||
author_email='tonio@ngyn.org',
|
||||
long_description=read("README.rst"),
|
||||
author="Antoine Nguyen",
|
||||
author_email="tonio@ngyn.org",
|
||||
packages=find_packages(),
|
||||
include_package_data=True,
|
||||
scripts=["bin/modoboa-admin.py"],
|
||||
zip_safe=False,
|
||||
install_requires=parse_requirements(PIP_REQUIRES),
|
||||
dependency_links=parse_dependency_links(PIP_REQUIRES),
|
||||
classifiers=['Development Status :: 5 - Production/Stable',
|
||||
'Framework :: Django',
|
||||
'Intended Audience :: System Administrators',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
'Operating System :: OS Independent',
|
||||
'Programming Language :: Python',
|
||||
'Topic :: Internet :: WWW/HTTP']
|
||||
classifiers=["Development Status :: 5 - Production/Stable",
|
||||
"Framework :: Django",
|
||||
"Intended Audience :: System Administrators",
|
||||
"License :: OSI Approved :: MIT License",
|
||||
"Operating System :: OS Independent",
|
||||
"Programming Language :: Python",
|
||||
"Topic :: Internet :: WWW/HTTP"]
|
||||
)
|
||||
|
||||
@@ -106,7 +106,6 @@ USE_L10N = False
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/1.6/howto/static-files/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user