From 1bd88c0f4fa80c09b94eac4ee3007c3cd474c78c Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Mon, 30 Oct 2017 00:56:06 -0400 Subject: [PATCH 01/19] Turn on template debug for the demo --- demo/demodesk/config/settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/demo/demodesk/config/settings.py b/demo/demodesk/config/settings.py index 070f91cb..49c669e3 100644 --- a/demo/demodesk/config/settings.py +++ b/demo/demodesk/config/settings.py @@ -62,6 +62,7 @@ TEMPLATES = [ 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { + 'debug': True, 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', From 8f375e1379b97c20d226385616fcd797745c782b Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 31 Oct 2017 01:24:26 -0400 Subject: [PATCH 02/19] Address bytes/str issue with POP3 email in get_email script, to address #565 --- helpdesk/management/commands/get_email.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index 40c25b1f..f5b57e76 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -158,7 +158,17 @@ def process_queue(q, logger): messagesInfo = server.list()[1] logger.info("Received %d messages from POP3 server" % len(messagesInfo)) - for msg in messagesInfo: + for msgRaw in messagesInfo: + if six.PY3: + # in py3, msgRaw is a bytes object, decode to str + try: + msg = msgRaw.decode("utf-8") + except: + # if couldn't decode easily, just leave it raw + msg = msgRaw + else: + # in py2, already a str + msg = msgRaw msgNum = msg.split(" ")[0] logger.info("Processing message %s" % msgNum) From 65c1d05eef552412f8b7c532a20e8d87c0ab401b Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 31 Oct 2017 03:24:04 -0400 Subject: [PATCH 03/19] Use BeautifulSoup to get text out of HTML-only emails, to address issue in #565 --- helpdesk/management/commands/get_email.py | 9 ++++++++- requirements.txt | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index f5b57e76..d57189c4 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -25,6 +25,8 @@ import base64 import binascii from time import ctime +from bs4 import BeautifulSoup + from email_reply_parser import EmailReplyParser from django.core.files.base import ContentFile @@ -366,7 +368,12 @@ def ticket_from_message(message, queue, logger): counter += 1 if not body: - body = _('No plain-text email body available. Please see attachment "email_html_body.html".') + mail = BeautifulSoup(part.get_payload(), "lxml") + if ">" in mail.text: + message_body = mail.text.split(">")[1] + body = message_body.encode('ascii', errors='ignore') + else: + body = mail.text if ticket: try: diff --git a/requirements.txt b/requirements.txt index 5e34629e..a5b92c29 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,8 @@ Django>=1.11,<2 django-bootstrap-form>=3.3,<4 email-reply-parser django-markdown-deux +beautifulsoup4 +lxml simplejson pytz six From d7fbcf02d9553109db5f6becc88b9e919cdbfe69 Mon Sep 17 00:00:00 2001 From: nicoamaro Date: Thu, 2 Nov 2017 15:55:51 -0300 Subject: [PATCH 04/19] Update install.rst --- docs/install.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.rst b/docs/install.rst index 00735f42..3dc6f8ec 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -119,7 +119,7 @@ errors with trying to create User settings. Ideally, accessing http://MEDIA_URL/helpdesk/attachments/ will give you a 403 access denied error. -7. If it's not already installed, install ``django-markdown-deux`` and ensure it's in your ``INSTALLED_APPS``:: +7. If it's not already installed, install ``markdown_deux`` and ensure it's in your ``INSTALLED_APPS``:: pip install django-markdown-deux From 43035afc073da42c76ca4e8d6e97b00906a7ff97 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 5 Dec 2017 02:41:45 -0500 Subject: [PATCH 05/19] Update travis to use latest Django --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a8708a05..c97dff58 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ python: - "3.6" env: - - DJANGO=1.11.4 + - DJANGO=1.11.8 install: - pip install -q Django==$DJANGO From 32cc5e2496efd81877f597a1804d38d3413db73d Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 5 Dec 2017 02:51:15 -0500 Subject: [PATCH 06/19] Patch for handling base64 encoding on Py 2 and 3, to address #567 --- helpdesk/management/commands/get_email.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index d57189c4..c5eb4941 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -356,10 +356,15 @@ def ticket_from_message(message, queue, logger): if isinstance(payload, list): payload = payload.pop().as_string() payloadToWrite = payload + # check version of python to ensure use of only the correct error type + if six.PY2: + non_b64_err = binascii.Error + else: + non_b64_err = TypeError try: logger.debug("Try to base64 decode the attachment payload") payloadToWrite = base64.decodestring(payload) - except (binascii.Error, TypeError): + except non_b64_err: logger.debug("Payload was not base64 encoded, using raw bytes") payloadToWrite = payload files.append(SimpleUploadedFile(name, part.get_payload(decode=True), mimetypes.guess_type(name)[0])) From fca6b483f2dc4bafb62ed7d79c9d83cf7d9ebec6 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 5 Dec 2017 03:47:05 -0500 Subject: [PATCH 07/19] Add PGP signed email test case to get_email tests, for #567 --- helpdesk/tests/test_get_email.py | 249 +++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) diff --git a/helpdesk/tests/test_get_email.py b/helpdesk/tests/test_get_email.py index 46bbbcc4..07e48a1f 100644 --- a/helpdesk/tests/test_get_email.py +++ b/helpdesk/tests/test_get_email.py @@ -354,6 +354,255 @@ class GetEmailParametricTemplate(object): attach2 = get_object_or_404(Attachment, pk=2) self.assertEqual(attach2.followup.id, 2) self.assertEqual(attach2.filename, 'email_html_body.html') + + def test_read_pgp_signed_email(self): + """Tests reading a PGP signed email to ensure we handle base64 + and PGP signatures appropriately.""" + + # example email text from #567 on GitHub + test_email = """Delivered-To: djangohelpdesk@example.com +Received: by 10.25.26.207 with SMTP id a198csp5858981lfa; + Wed, 8 Nov 2017 13:30:22 -0800 (PST) +X-Received: by 10.107.107.3 with SMTP id g3mr2603398ioc.250.1510176622046; + Wed, 08 Nov 2017 13:30:22 -0800 (PST) +ARC-Seal: i=2; a=rsa-sha256; t=1510176621; cv=pass; + d=google.com; s=arc-20160816; + b=qQ8kBj8+yIoWcJwFNHUlJDYz7P2NfILAxFsn9uPYzXNn/aRw695T1aNFgGL75KUhkA + nDw+h49SUGKDh9ehC+DEiPjwJIxAoz+86rqGWV6XPGW4gQ7GUkHs96CxWndTSD0hdcOl + vygeZrsgzpIOvDxJWrujDPZzcEjsPC2qy3KGsTqtbZGEsNhhRUD8rs/hBVVXaGBatLF+ + Sz2krwBZz8Lm+mWRhScjmF12QIHcXe6qYrDLOLEK0+bRkRMS+ZXg9+GPwqHlp58GaHn+ + 6JncesW3q7k88RQsLlj/8PEw0z1wMndgBVWIcCEtLt4UhZtt/BDxmZSukNN0SzoH4e3k + mxOw== +ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; + h=mime-version:user-agent:date:message-id:subject:from:to + :dkim-signature:arc-authentication-results:arc-message-signature + :arc-authentication-results; + bh=cQvDBdivwtDmp1Td9ZWaEf0S4IuZ4hPwaprxSv7XZuE=; + b=p/0Y4PgvEfGWZ8W3eqxzRnSGLbT9gObSU2OI/sLwiN4KFfVmGrBJYkx7DGija0A5eU + DBbETW/16pib+W0IOUtdD7Pt12oWA3Z/uRf7ybXnHIKZ+MObdCXqRJFkga6nY8tWD0H3 + maquQR07Q54mYslVMEIKJUKJzVM86npLN2C756ZzZTXiGXf33iowO4/lciGmTAgi+y5p + fEDQCTMoSQ9iGbquFRgNHgMtIM5NWjeMksWKpnfbvZyKs0ZICcPklNxQkDCmDlrOBokT + Zs1RVsWZ7NyPdTomJ0SRyPeysM040aatmnwxFAzwe4GYFNUWZjaep7uPKKlZ4sV/aHBB + iHOQ== +ARC-Authentication-Results: i=2; mx.google.com; + dkim=pass header.i=@gmail.com header.s=20161025 header.b=AArzbi/1; + arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); + spf=pass (google.com: domain of bugreporter@example.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=bugreporter@example.com; + dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com +Return-Path: +Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) + by mx.google.com with SMTPS id i86sor2420323ioo.204.2017.11.08.13.30.21 + for + (Google Transport Security); + Wed, 08 Nov 2017 13:30:21 -0800 (PST) +Received-SPF: pass (google.com: domain of bugreporter@example.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; +Authentication-Results: mx.google.com; + dkim=pass header.i=@gmail.com header.s=20161025 header.b=AArzbi/1; + arc=pass (i=1 spf=pass spfdomain=gmail.com dkim=pass dkdomain=gmail.com dmarc=pass fromdomain=gmail.com); + spf=pass (google.com: domain of bugreporter@example.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=bugreporter@example.com; + dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20161025; + h=x-gm-message-state:dkim-signature:to:from:subject:message-id:date + :user-agent:mime-version; + bh=cQvDBdivwtDmp1Td9ZWaEf0S4IuZ4hPwaprxSv7XZuE=; + b=MCiZzHu6ZV3kMTQBRL/b5uBy4jbHFS97+z9apL239dYS+z0LlTiHpKbs3qohFe3As1 + gu2l0SAcdGw0qeplgmOlX9HXvKetBRLldfHeX/JJZ2yokpjc6CxVT8gF8YP2UmfAs0cb + JI8TTDqiWmhayf7xfblRIUP7vfwyTH9cLmvKMMAqWvrppyUlqlxWgyO7xtzV9jdThpqP + O0jO9CqsRmbEDc4vZAtOTXm1O69jCz66oll6H4T5Nka9HUpyHFZzv7Z0j0F/5djfzjCQ + HCFZhzobEgZAmBC9o2Y5aDvKCnWJGR5kVTtBQaFCuxr57o4zq0D359V3gMMPRGMdujDP + hXAQ== +X-Gm-Message-State: AJaThX56HHm8QgZdgM6bRqozlRrXQZnpTcIF/KsEEwRqMaNQ55G23WbC + MSCB6WamzjTSlTyoOJn2j7/mIupvLC62mYlSjA== +X-Google-Smtp-Source: ABhQp+SbAIRuabSw2EkD+7YFXtLiCFINtymAshxVYuNZhApd39ymv2m9UnIM3rZNIHonQBywtZ3VjalQxeN8lVuWD6OquEskEc8= +X-Received: by 10.107.47.85 with SMTP id j82mr2485471ioo.48.1510176621730; + Wed, 08 Nov 2017 13:30:21 -0800 (PST) +ARC-Seal: i=1; a=rsa-sha256; t=1510176621; cv=none; + d=google.com; s=arc-20160816; + b=mOqnqVV4oq14hoOdEA+yVvQYQd/sv/Qr//xmW6r94dKaUczdbFG+Uy8x7EbuF/ILJt + ByFmE8+HUH8tosfHn8+zFmsHFr3Wi7il64wdeuVqoOuDQS1HejcH9ln5LVjwsr7EE6Ly + 6gCT7QupvSQ+FkhyNH+zNHuGztw5F4Sa2r5UlmR5VAJ4+V1MEfVYwzEr7vgPnmEj8jga + PtmD05EfYWrWt27Cw8oS+CgS0CNcHaaiRr7JX3EQbNRrLp5M9GjKhiq/ckt2a5NKJYMH + zISYQzxk7EgHGFrwn+JZx+oKqG3Zl2pd5oKmzJkFeSaGT+qYp3SES4z3Vi6z4VxGduox + f38g== +ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; + h=mime-version:user-agent:date:message-id:subject:from:to + :dkim-signature:arc-authentication-results; + bh=cQvDBdivwtDmp1Td9ZWaEf0S4IuZ4hPwaprxSv7XZuE=; + b=R5FsED2qOoEJshMotswEPOAn8GyvaHHd4zM9wAH+qnzuoV9RFhSChbkAkypi73SPs/ + D7K49dYKSfsuWPF1RXoD8qchVfROF5Y7kD0JHy7KJcuHXzwb5gYLNrZpB2R9XbBOGe1j + lgQvnEVwmgeJiLXKQVeQDECxs8DFlkIpPIbmJK02Ry/Q0S8TnBEs0mrWn49l70IsZB6U + 0XCpUPAt9NhsIUxoZKZv+zOwpQq6uwJkqRa5ukH0OPRr891MpeZldw7+gINjxxEmPAS9 + GYfMeCpX9afFbQMUizbUbKwOZPt7ahn3x1C5x4AwgQmtzXYfA/quyiXAukTzoYk8FUqs + U1QA== +ARC-Authentication-Results: i=1; gmr-mx.google.com; + dkim=pass header.i=@gmail.com header.s=20161025 header.b=AArzbi/1; + spf=pass (google.com: domain of bugreporter@example.com designates 2607:f8b0:400e:c00::233 as permitted sender) smtp.mailfrom=bugreporter@example.com; + dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com +Return-Path: +Received: from mail-pf0-x233.google.com (mail-pf0-x233.google.com. [2607:f8b0:400e:c00::233]) + by gmr-mx.google.com with ESMTPS id l10si463482ioc.2.2017.11.08.13.30.21 + for + (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); + Wed, 08 Nov 2017 13:30:21 -0800 (PST) +Received-SPF: pass (google.com: domain of bugreporter@example.com designates 2607:f8b0:400e:c00::233 as permitted sender) client-ip=2607:f8b0:400e:c00::233; +Received: by mail-pf0-x233.google.com with SMTP id p87so2672006pfj.3 + for ; Wed, 08 Nov 2017 13:30:21 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=20161025; + h=to:from:subject:message-id:date:user-agent:mime-version; + bh=cQvDBdivwtDmp1Td9ZWaEf0S4IuZ4hPwaprxSv7XZuE=; + b=AArzbi/1RXhgTnCQBzU6vCwndc0/vqLV9FCgiOTp3deq8kFYhtdJCaEBX9s7iJduV+ + HobvLGsbmWU04Y1O3w8m4jyq5H4HJ1jAr1+i0Tf5jl264kmyu4eowOMkwIFo6UaSVQ/a + zP+EYW09fWSSNhljubLkGf62vZ9gD/RF5Awoady6u5/N1GU4GPVCEgsmiK7DmPB2EtSE + 7YPz3o9l+kDy8bRnUFw0744B7VKiXrAcIqpfltJuItM4T7bS/jyjYMQbRn8W2MXpyGlI + LNwt3vUNdKtkcPTK54cs44HMaVA8wGCDaMHFP8JmoTKWSsOgZQja3cdEj/rooM8uz+dq + er5g== +X-Received: by 10.99.191.78 with SMTP id i14mr1746749pgo.220.1510176620834; + Wed, 08 Nov 2017 13:30:20 -0800 (PST) +Return-Path: +Received: from [10.1.1.4] (d114-72-199-247.hum1.act.optusnet.com.au. [114.72.199.247]) + by smtp.gmail.com with ESMTPSA id u131sm8656745pgc.89.2017.11.08.13.30.18 + for + (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); + Wed, 08 Nov 2017 13:30:19 -0800 (PST) +To: djangohelpdesk@example.com +From: Bug Reporter +Subject: example email that crashes django-helpdesk get_email +Message-ID: <8eef2077-8aff-9fb4-0e2a-9876ba2530b1@gmail.com> +Date: Thu, 9 Nov 2017 08:30:15 +1100 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 + Thunderbird/52.4.0 +MIME-Version: 1.0 +Content-Type: multipart/signed; micalg=pgp-sha256; + protocol="application/pgp-signature"; + boundary="vnaePdRl5oElllhQPTiU2WarPFVGINT69" + +This is an OpenPGP/MIME signed message (RFC 4880 and 3156) +--vnaePdRl5oElllhQPTiU2WarPFVGINT69 +Content-Type: multipart/mixed; boundary="ckOQ1U5bPjO3W1sVnjdBaEigXBiwem2Rn"; + protected-headers="v1" +From: Bug Reporter +To: djangohelpdesk@example.com +Message-ID: <8eef2077-8aff-9fb4-0e2a-9876ba2530b1@gmail.com> +Subject: example email that crashes django-helpdesk get_email + +--ckOQ1U5bPjO3W1sVnjdBaEigXBiwem2Rn +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: quoted-printable +Content-Language: en-US + +hi, thanks for looking into this :) + +https://github.com/django-helpdesk/django-helpdesk/issues/567#issuecommen= +t-342954233 + + +--ckOQ1U5bPjO3W1sVnjdBaEigXBiwem2Rn-- + +--vnaePdRl5oElllhQPTiU2WarPFVGINT69 +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: OpenPGP digital signature +Content-Disposition: attachment; filename="signature.asc" + +-----BEGIN PGP SIGNATURE----- + +iQIcBAEBCAAGBQJaA3dnAAoJELBLc7QPITnLN54P/3Zsu7+AIQWDFTvziJfCqswG +u99fG+iWa6ER+iuZG0YU1BdIxIjSKt1pvqB0yXITlT9FCdf1zc0pmeJ08I0a5pVa +iaym5prVUro5BNQ6Vqoo0jvOCKNrACtFNv85zDzXbPNP8TrUss41U+ackPHkOHov +cmJ5YZFQebYXXpibFSIDimVGfwI57vyTWvolttZFLSI1mgGX7MvHaKh253QLdXIo +EUih40rOw3f/nYPEKyW8QA72ImBsZdcZI5buiiCC1bgMkKSFSNAFiIanYEpGNMnO +3zYKBpbpBhnWSi5orwx47/v4/Yb/qVr5ppuV23+YoMfEGT8cHPTAdYpnpE27ByAv +jvpxKEwmkUzD1WxOmQdCcPJPyWz1OBUVvjj0nn0Espnz8V8esl9+IFs739lpFBHu +fWWA315LTmIJMGH5Ujf4myiQeXDo6Gsy6WhE13q7MKTq3tnyi5dJG9GJCBf646dL +RwcDf9O7MvKSV2kSPmryLnUF7D+2fva+Cy+CvJDVJCo5zr4ucXPXZ4htpI6Pjpd5 +oPHvbqxSCMJrQ7eAFTYmBNGauSyr0XvGM1qmHBZD/laQEJHYgLT2ILrymZhVDHtK +W7tXhGjMoUvqAxiKkmG3UHFqN4k3EYo13PwoOWyJHD1M9ArbX/Sk9l8DDguCh3DW +a9eiiQ+3V1v+7wWHXCzq +=6JeP +-----END PGP SIGNATURE----- + +--vnaePdRl5oElllhQPTiU2WarPFVGINT69-- + +""" + test_mail_len = len(test_email) + + if self.socks: + from socks import ProxyConnectionError + with self.assertRaisesRegexp(ProxyConnectionError, '%s:%s' % (unrouted_socks_server, unused_port)): + call_command('get_email') + + else: + # Test local email reading + if self.method == 'local': + with mock.patch('helpdesk.management.commands.get_email.listdir') as mocked_listdir, \ + mock.patch('helpdesk.management.commands.get_email.isfile') as mocked_isfile, \ + mock.patch('builtins.open' if six.PY3 else '__builtin__.open', mock.mock_open(read_data=test_email)): + mocked_isfile.return_value = True + mocked_listdir.return_value = ['filename1'] + + call_command('get_email') + + mocked_listdir.assert_called_with('/var/lib/mail/helpdesk/') + mocked_isfile.assert_any_call('/var/lib/mail/helpdesk/filename1') + + elif self.method == 'pop3': + # mock poplib.POP3's list and retr methods to provide responses as per RFC 1939 + pop3_emails = { + '1': ("+OK", test_email.split('\n')), + } + pop3_mail_list = ("+OK 1 message", ("1 %d" % test_mail_len)) + mocked_poplib_server = mock.Mock() + mocked_poplib_server.list = mock.Mock(return_value=pop3_mail_list) + mocked_poplib_server.retr = mock.Mock(side_effect=lambda x: pop3_emails['1']) + with mock.patch('helpdesk.management.commands.get_email.poplib', autospec=True) as mocked_poplib: + mocked_poplib.POP3 = mock.Mock(return_value=mocked_poplib_server) + call_command('get_email') + + elif self.method == 'imap': + # mock imaplib.IMAP4's search and fetch methods with responses from RFC 3501 + imap_emails = { + "1": ("OK", (("1", test_email),)), + } + imap_mail_list = ("OK", ("1",)) + mocked_imaplib_server = mock.Mock() + mocked_imaplib_server.search = mock.Mock(return_value=imap_mail_list) + + # we ignore the second arg as the data item/mime-part is constant (RFC822) + mocked_imaplib_server.fetch = mock.Mock(side_effect=lambda x, _: imap_emails[x]) + with mock.patch('helpdesk.management.commands.get_email.imaplib', autospec=True) as mocked_imaplib: + mocked_imaplib.IMAP4 = mock.Mock(return_value=mocked_imaplib_server) + call_command('get_email') + + ticket1 = get_object_or_404(Ticket, pk=1) + self.assertEqual(ticket1.ticket_for_url, "QQ-%s" % ticket1.id) + self.assertEqual(ticket1.title, "example email that crashes django-helpdesk get_email") + self.assertEqual(ticket1.description, """hi, thanks for looking into this :)\n\nhttps://github.com/django-helpdesk/django-helpdesk/issues/567#issuecomment-342954233""") + # MIME part should be attached to follow up + followup1 = get_object_or_404(FollowUp, pk=1) + self.assertEqual(followup1.ticket.id, 1) + attach1 = get_object_or_404(Attachment, pk=1) + self.assertEqual(attach1.followup.id, 1) + self.assertEqual(attach1.filename, 'signature.asc') + self.assertEqual(attach1.file.read(), b"""-----BEGIN PGP SIGNATURE----- + +iQIcBAEBCAAGBQJaA3dnAAoJELBLc7QPITnLN54P/3Zsu7+AIQWDFTvziJfCqswG +u99fG+iWa6ER+iuZG0YU1BdIxIjSKt1pvqB0yXITlT9FCdf1zc0pmeJ08I0a5pVa +iaym5prVUro5BNQ6Vqoo0jvOCKNrACtFNv85zDzXbPNP8TrUss41U+ackPHkOHov +cmJ5YZFQebYXXpibFSIDimVGfwI57vyTWvolttZFLSI1mgGX7MvHaKh253QLdXIo +EUih40rOw3f/nYPEKyW8QA72ImBsZdcZI5buiiCC1bgMkKSFSNAFiIanYEpGNMnO +3zYKBpbpBhnWSi5orwx47/v4/Yb/qVr5ppuV23+YoMfEGT8cHPTAdYpnpE27ByAv +jvpxKEwmkUzD1WxOmQdCcPJPyWz1OBUVvjj0nn0Espnz8V8esl9+IFs739lpFBHu +fWWA315LTmIJMGH5Ujf4myiQeXDo6Gsy6WhE13q7MKTq3tnyi5dJG9GJCBf646dL +RwcDf9O7MvKSV2kSPmryLnUF7D+2fva+Cy+CvJDVJCo5zr4ucXPXZ4htpI6Pjpd5 +oPHvbqxSCMJrQ7eAFTYmBNGauSyr0XvGM1qmHBZD/laQEJHYgLT2ILrymZhVDHtK +W7tXhGjMoUvqAxiKkmG3UHFqN4k3EYo13PwoOWyJHD1M9ArbX/Sk9l8DDguCh3DW +a9eiiQ+3V1v+7wWHXCzq +=6JeP +-----END PGP SIGNATURE----- +""") + # should this be 'application/pgp-signature'? + #self.assertEqual(attach1.mime_type, 'text/plain') class GetEmailCCHandling(TestCase): From dffab1bb6a1edeb7eb56066ded30a3112b5e44b4 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Tue, 5 Dec 2017 03:52:38 -0500 Subject: [PATCH 08/19] PEP8 fixes for test_get_email.py --- helpdesk/tests/test_get_email.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/helpdesk/tests/test_get_email.py b/helpdesk/tests/test_get_email.py index 07e48a1f..e2c23e35 100644 --- a/helpdesk/tests/test_get_email.py +++ b/helpdesk/tests/test_get_email.py @@ -354,7 +354,7 @@ class GetEmailParametricTemplate(object): attach2 = get_object_or_404(Attachment, pk=2) self.assertEqual(attach2.followup.id, 2) self.assertEqual(attach2.filename, 'email_html_body.html') - + def test_read_pgp_signed_email(self): """Tests reading a PGP signed email to ensure we handle base64 and PGP signatures appropriately.""" @@ -412,11 +412,7 @@ X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; O0jO9CqsRmbEDc4vZAtOTXm1O69jCz66oll6H4T5Nka9HUpyHFZzv7Z0j0F/5djfzjCQ HCFZhzobEgZAmBC9o2Y5aDvKCnWJGR5kVTtBQaFCuxr57o4zq0D359V3gMMPRGMdujDP hXAQ== -X-Gm-Message-State: AJaThX56HHm8QgZdgM6bRqozlRrXQZnpTcIF/KsEEwRqMaNQ55G23WbC - MSCB6WamzjTSlTyoOJn2j7/mIupvLC62mYlSjA== X-Google-Smtp-Source: ABhQp+SbAIRuabSw2EkD+7YFXtLiCFINtymAshxVYuNZhApd39ymv2m9UnIM3rZNIHonQBywtZ3VjalQxeN8lVuWD6OquEskEc8= -X-Received: by 10.107.47.85 with SMTP id j82mr2485471ioo.48.1510176621730; - Wed, 08 Nov 2017 13:30:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510176621; cv=none; d=google.com; s=arc-20160816; b=mOqnqVV4oq14hoOdEA+yVvQYQd/sv/Qr//xmW6r94dKaUczdbFG+Uy8x7EbuF/ILJt @@ -602,7 +598,7 @@ a9eiiQ+3V1v+7wWHXCzq -----END PGP SIGNATURE----- """) # should this be 'application/pgp-signature'? - #self.assertEqual(attach1.mime_type, 'text/plain') + # self.assertEqual(attach1.mime_type, 'text/plain') class GetEmailCCHandling(TestCase): From 2290be4e1bcf3bdada9d1a0b13cdf391ee98f790 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 01:27:02 -0500 Subject: [PATCH 09/19] Use pycodestyle instead of pep8 for testing, to address #570 --- .travis.yml | 2 +- requirements-testing.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index c97dff58..84a575a3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ install: - pip install -q -r requirements-testing.txt before_script: - - "pep8 --exclude=migrations --ignore=E501 helpdesk" + - "pycodestyle --exclude=migrations --ignore=E501 helpdesk" script: - coverage run --source='.' quicktest.py helpdesk diff --git a/requirements-testing.txt b/requirements-testing.txt index 82755fa9..db93a92f 100644 --- a/requirements-testing.txt +++ b/requirements-testing.txt @@ -1,5 +1,5 @@ pysocks -pep8 +pycodestyle codecov coverage argparse From bc0125421b8d8ef601b35957beddc49388945f7d Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:06:07 -0500 Subject: [PATCH 10/19] Fix PEP8 errors detected by new pycodestyle script --- helpdesk/lib.py | 5 +- helpdesk/management/commands/get_email.py | 8 +-- helpdesk/models.py | 7 ++- helpdesk/settings.py | 4 +- helpdesk/templatetags/in_list.py | 1 + .../templatetags/load_helpdesk_settings.py | 1 + helpdesk/templatetags/saved_queries.py | 1 + helpdesk/templatetags/ticket_to_link.py | 1 + helpdesk/templatetags/user_admin_url.py | 1 + helpdesk/urls.py | 1 + helpdesk/views/staff.py | 56 ++++++++++++++++++- 11 files changed, 75 insertions(+), 11 deletions(-) diff --git a/helpdesk/lib.py b/helpdesk/lib.py index 828a70c6..91a5e04e 100644 --- a/helpdesk/lib.py +++ b/helpdesk/lib.py @@ -271,13 +271,14 @@ def text_is_spam(text, request): # False if it is not spam. If it cannot be checked for some reason, we # assume it isn't spam. from django.contrib.sites.models import Site + from django.core.exceptions import ImproperlyConfigured try: from helpdesk.akismet import Akismet - except: + except ImportError: return False try: site = Site.objects.get_current() - except: + except ImproperlyConfigured: site = Site(domain='configure-django-sites.com') ak = Akismet( diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index c5eb4941..09870fa0 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -165,7 +165,7 @@ def process_queue(q, logger): # in py3, msgRaw is a bytes object, decode to str try: msg = msgRaw.decode("utf-8") - except: + except UnicodeError: # if couldn't decode easily, just leave it raw msg = msgRaw else: @@ -244,7 +244,7 @@ def process_queue(q, logger): logger.info("Successfully processed message %d, ticket/comment created." % i) try: unlink(m) # delete message file if ticket was successful - except: + except OSError: logger.error("Unable to delete message %d." % i) else: logger.info("Successfully deleted message %d." % i) @@ -257,7 +257,7 @@ def decodeUnknown(charset, string): if not charset: try: return string.decode('utf-8', 'replace') - except: + except UnicodeError: return string.decode('iso8859-1', 'replace') return unicode(string, charset) elif six.PY3: @@ -265,7 +265,7 @@ def decodeUnknown(charset, string): if not charset: try: return str(string, encoding='utf-8', errors='replace') - except: + except UnicodeError: return str(string, encoding='iso8859-1', errors='replace') return str(string, encoding=charset, errors='replace') return string diff --git a/helpdesk/models.py b/helpdesk/models.py index 2c2fbcf5..2ffc9c61 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -525,10 +525,11 @@ class Ticket(models.Model): a URL to the submitter of a ticket. """ from django.contrib.sites.models import Site + from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse try: site = Site.objects.get_current() - except: + except ImproperlyConfigured: site = Site(domain='configure-django-sites.com') return u"http://%s%s?ticket=%s&email=%s" % ( site.domain, @@ -544,10 +545,11 @@ class Ticket(models.Model): a staff member (in emails etc) """ from django.contrib.sites.models import Site + from django.core.exceptions import ImproperlyConfigured from django.core.urlresolvers import reverse try: site = Site.objects.get_current() - except: + except ImproperlyConfigured: site = Site(domain='configure-django-sites.com') return u"http://%s%s" % ( site.domain, @@ -1145,6 +1147,7 @@ def create_usersettings(sender, instance, created, **kwargs): if created: UserSettings.objects.create(user=instance, settings=DEFAULT_USER_SETTINGS) + models.signals.post_save.connect(create_usersettings, sender=settings.AUTH_USER_MODEL) diff --git a/helpdesk/settings.py b/helpdesk/settings.py index d9f0f866..ce00fded 100644 --- a/helpdesk/settings.py +++ b/helpdesk/settings.py @@ -4,11 +4,11 @@ Default settings for django-helpdesk. """ from django.conf import settings - +from django.core.exceptions import ImproperlyConfigured try: DEFAULT_USER_SETTINGS = settings.HELPDESK_DEFAULT_SETTINGS -except: +except ImproperlyConfigured: DEFAULT_USER_SETTINGS = None if not isinstance(DEFAULT_USER_SETTINGS, dict): diff --git a/helpdesk/templatetags/in_list.py b/helpdesk/templatetags/in_list.py index fcc58898..00ad4e91 100644 --- a/helpdesk/templatetags/in_list.py +++ b/helpdesk/templatetags/in_list.py @@ -21,5 +21,6 @@ from django import template def in_list(value, arg): return value in (arg or []) + register = template.Library() register.filter(in_list) diff --git a/helpdesk/templatetags/load_helpdesk_settings.py b/helpdesk/templatetags/load_helpdesk_settings.py index 4b1afcf4..b16838f9 100644 --- a/helpdesk/templatetags/load_helpdesk_settings.py +++ b/helpdesk/templatetags/load_helpdesk_settings.py @@ -19,5 +19,6 @@ def load_helpdesk_settings(request): print(e, file=sys.stderr) return '' + register = Library() register.filter('load_helpdesk_settings', load_helpdesk_settings) diff --git a/helpdesk/templatetags/saved_queries.py b/helpdesk/templatetags/saved_queries.py index 7f9d0c4d..9dd53bf7 100644 --- a/helpdesk/templatetags/saved_queries.py +++ b/helpdesk/templatetags/saved_queries.py @@ -22,5 +22,6 @@ def saved_queries(user): print(e, file=sys.stderr) return '' + register = Library() register.filter('saved_queries', saved_queries) diff --git a/helpdesk/templatetags/ticket_to_link.py b/helpdesk/templatetags/ticket_to_link.py index fc2eae21..772a3984 100644 --- a/helpdesk/templatetags/ticket_to_link.py +++ b/helpdesk/templatetags/ticket_to_link.py @@ -42,5 +42,6 @@ def num_to_link(text): text[:match.start() + 1], url, style, match.groups()[0], text[match.end():]) return mark_safe(text) + register = template.Library() register.filter(num_to_link) diff --git a/helpdesk/templatetags/user_admin_url.py b/helpdesk/templatetags/user_admin_url.py index e779ee9f..baed1241 100644 --- a/helpdesk/templatetags/user_admin_url.py +++ b/helpdesk/templatetags/user_admin_url.py @@ -24,5 +24,6 @@ def user_admin_url(action): user._meta.app_label, model_name, action) + register = template.Library() register.filter(user_admin_url) diff --git a/helpdesk/urls.py b/helpdesk/urls.py index 22c0e229..6772da22 100644 --- a/helpdesk/urls.py +++ b/helpdesk/urls.py @@ -29,6 +29,7 @@ class DirectTemplateView(TemplateView): context[key] = value return context + app_name = 'helpdesk' urlpatterns = [ diff --git a/helpdesk/views/staff.py b/helpdesk/views/staff.py index fc7da646..c8ab1884 100644 --- a/helpdesk/views/staff.py +++ b/helpdesk/views/staff.py @@ -164,6 +164,8 @@ def dashboard(request): 'all_tickets_reported_by_current_user': all_tickets_reported_by_current_user, 'basic_ticket_stats': basic_ticket_stats, }) + + dashboard = staff_member_required(dashboard) @@ -179,6 +181,8 @@ def delete_ticket(request, ticket_id): else: ticket.delete() return HttpResponseRedirect(reverse('helpdesk:home')) + + delete_ticket = staff_member_required(delete_ticket) @@ -229,6 +233,8 @@ def followup_edit(request, ticket_id, followup_id): # delete old followup followup.delete() return HttpResponseRedirect(reverse('helpdesk:view', args=[ticket.id])) + + followup_edit = staff_member_required(followup_edit) @@ -242,6 +248,8 @@ def followup_delete(request, ticket_id, followup_id): followup = get_object_or_404(FollowUp, id=followup_id) followup.delete() return HttpResponseRedirect(reverse('helpdesk:view', args=[ticket.id])) + + followup_delete = staff_member_required(followup_delete) @@ -310,6 +318,8 @@ def view_ticket(request, ticket_id): 'ticketcc_string': ticketcc_string, 'SHOW_SUBSCRIBE': show_subscribe, }) + + view_ticket = staff_member_required(view_ticket) @@ -748,6 +758,8 @@ def mass_update(request): t.delete() return HttpResponseRedirect(reverse('helpdesk:list')) + + mass_update = staff_member_required(mass_update) @@ -931,6 +943,8 @@ def ticket_list(request): saved_query=saved_query, search_message=search_message, )) + + ticket_list = staff_member_required(ticket_list) @@ -948,6 +962,8 @@ def edit_ticket(request, ticket_id): form = EditTicketForm(instance=ticket) return render(request, 'helpdesk/edit_ticket.html', {'form': form}) + + edit_ticket = staff_member_required(edit_ticket) @@ -985,6 +1001,8 @@ def create_ticket(request): form.fields['assigned_to'].widget = forms.HiddenInput() return render(request, 'helpdesk/create_ticket.html', {'form': form}) + + create_ticket = staff_member_required(create_ticket) @@ -1004,6 +1022,8 @@ def raw_details(request, type): raise Http404 raise Http404 + + raw_details = staff_member_required(raw_details) @@ -1031,16 +1051,22 @@ def hold_ticket(request, ticket_id, unhold=False): ticket.save() return HttpResponseRedirect(ticket.get_absolute_url()) + + hold_ticket = staff_member_required(hold_ticket) def unhold_ticket(request, ticket_id): return hold_ticket(request, ticket_id, unhold=True) + + unhold_ticket = staff_member_required(unhold_ticket) def rss_list(request): return render(request, 'helpdesk/rss_list.html', {'queues': Queue.objects.all()}) + + rss_list = staff_member_required(rss_list) @@ -1089,6 +1115,8 @@ def report_index(request): 'basic_ticket_stats': basic_ticket_stats, 'dash_tickets': dash_tickets, }) + + report_index = staff_member_required(report_index) @@ -1121,7 +1149,7 @@ def run_report(request, report): query_params = json.loads(b64decode(str(saved_query.query)).decode()) else: query_params = json.loads(b64decode(str(saved_query.query))) - except: + except json.JSONDecodeError: return HttpResponseRedirect(reverse('helpdesk:report_index')) report_queryset = apply_query(report_queryset, query_params) @@ -1289,6 +1317,8 @@ def run_report(request, report): 'from_saved_query': from_saved_query, 'saved_query': saved_query, }) + + run_report = staff_member_required(run_report) @@ -1306,6 +1336,8 @@ def save_query(request): query.save() return HttpResponseRedirect('%s?saved_query=%s' % (reverse('helpdesk:list'), query.id)) + + save_query = staff_member_required(save_query) @@ -1317,6 +1349,8 @@ def delete_saved_query(request, id): return HttpResponseRedirect(reverse('helpdesk:list')) else: return render(request, 'helpdesk/confirm_delete_saved_query.html', {'query': query}) + + delete_saved_query = staff_member_required(delete_saved_query) @@ -1331,6 +1365,8 @@ def user_settings(request): form = UserSettingsForm(s.settings) return render(request, 'helpdesk/user_settings.html', {'form': form}) + + user_settings = staff_member_required(user_settings) @@ -1338,6 +1374,8 @@ def email_ignore(request): return render(request, 'helpdesk/email_ignore_list.html', { 'ignore_list': IgnoreEmail.objects.all(), }) + + email_ignore = superuser_required(email_ignore) @@ -1351,6 +1389,8 @@ def email_ignore_add(request): form = EmailIgnoreForm(request.GET) return render(request, 'helpdesk/email_ignore_add.html', {'form': form}) + + email_ignore_add = superuser_required(email_ignore_add) @@ -1361,6 +1401,8 @@ def email_ignore_del(request, id): return HttpResponseRedirect(reverse('helpdesk:email_ignore')) else: return render(request, 'helpdesk/email_ignore_del.html', {'ignore': ignore}) + + email_ignore_del = superuser_required(email_ignore_del) @@ -1374,6 +1416,8 @@ def ticket_cc(request, ticket_id): 'copies_to': copies_to, 'ticket': ticket, }) + + ticket_cc = staff_member_required(ticket_cc) @@ -1398,6 +1442,8 @@ def ticket_cc_add(request, ticket_id): 'form_email': form_email, 'form_user': form_user, }) + + ticket_cc_add = staff_member_required(ticket_cc_add) @@ -1409,6 +1455,8 @@ def ticket_cc_del(request, ticket_id, cc_id): return HttpResponseRedirect(reverse('helpdesk:ticket_cc', kwargs={'ticket_id': cc.ticket.id})) return render(request, 'helpdesk/ticket_cc_del.html', {'cc': cc}) + + ticket_cc_del = staff_member_required(ticket_cc_del) @@ -1430,6 +1478,8 @@ def ticket_dependency_add(request, ticket_id): 'ticket': ticket, 'form': form, }) + + ticket_dependency_add = staff_member_required(ticket_dependency_add) @@ -1439,6 +1489,8 @@ def ticket_dependency_del(request, ticket_id, dependency_id): dependency.delete() return HttpResponseRedirect(reverse('helpdesk:view', args=[ticket_id])) return render(request, 'helpdesk/ticket_dependency_del.html', {'dependency': dependency}) + + ticket_dependency_del = staff_member_required(ticket_dependency_del) @@ -1455,6 +1507,8 @@ def attachment_del(request, ticket_id, attachment_id): 'attachment': attachment, 'filename': attachment.filename, }) + + attachment_del = staff_member_required(attachment_del) From 0b249e1693cce4b83bb8153a69eb8ad00a137bf3 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:11:45 -0500 Subject: [PATCH 11/19] Fix error importing django settings due to naked except --- helpdesk/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpdesk/settings.py b/helpdesk/settings.py index ce00fded..22e185bd 100644 --- a/helpdesk/settings.py +++ b/helpdesk/settings.py @@ -8,7 +8,7 @@ from django.core.exceptions import ImproperlyConfigured try: DEFAULT_USER_SETTINGS = settings.HELPDESK_DEFAULT_SETTINGS -except ImproperlyConfigured: +except ImproperlyConfigured, AttributeError: DEFAULT_USER_SETTINGS = None if not isinstance(DEFAULT_USER_SETTINGS, dict): From c085dba901cafe2f22fa3ab7b465f57beaf32b7d Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:21:46 -0500 Subject: [PATCH 12/19] Trying to actually fix naked except --- helpdesk/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/helpdesk/settings.py b/helpdesk/settings.py index 22e185bd..fb89da77 100644 --- a/helpdesk/settings.py +++ b/helpdesk/settings.py @@ -8,7 +8,7 @@ from django.core.exceptions import ImproperlyConfigured try: DEFAULT_USER_SETTINGS = settings.HELPDESK_DEFAULT_SETTINGS -except ImproperlyConfigured, AttributeError: +except AttributeError: DEFAULT_USER_SETTINGS = None if not isinstance(DEFAULT_USER_SETTINGS, dict): From a2c10edb35e7edc923b285a551b3651c4d246be1 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:28:18 -0500 Subject: [PATCH 13/19] Fix bytes/str confusion in Py3 after address naked except --- helpdesk/management/commands/get_email.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index 09870fa0..6a52ec1b 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -161,15 +161,15 @@ def process_queue(q, logger): logger.info("Received %d messages from POP3 server" % len(messagesInfo)) for msgRaw in messagesInfo: - if six.PY3: - # in py3, msgRaw is a bytes object, decode to str + if six.PY3 and type(msgRaw) is bytes: + # in py3, msgRaw may be a bytes object, decode to str try: msg = msgRaw.decode("utf-8") except UnicodeError: # if couldn't decode easily, just leave it raw msg = msgRaw else: - # in py2, already a str + # already a str msg = msgRaw msgNum = msg.split(" ")[0] logger.info("Processing message %s" % msgNum) From 9340e149d507b508c641583a0654c02b6c5d710d Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:55:31 -0500 Subject: [PATCH 14/19] Wrap IMAP login attempt in a try except, log error if session timeout and exit script gracefully to prevent crashes, to address #568 --- helpdesk/management/commands/get_email.py | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index 6a52ec1b..d673a4ff 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -13,6 +13,8 @@ scripts/get_email.py - Designed to be run from cron, this script checks the from __future__ import unicode_literals from datetime import timedelta +import base64 +import binascii import email import imaplib import mimetypes @@ -21,8 +23,8 @@ from os.path import isfile, join import poplib import re import socket -import base64 -import binascii +import ssl +import sys from time import ctime from bs4 import BeautifulSoup @@ -201,11 +203,20 @@ def process_queue(q, logger): logger.info("Attempting IMAP server login") - server.login(q.email_box_user or - settings.QUEUE_EMAIL_BOX_USER, - q.email_box_pass or - settings.QUEUE_EMAIL_BOX_PASSWORD) - server.select(q.email_box_imap_folder) + try: + server.login(q.email_box_user or + settings.QUEUE_EMAIL_BOX_USER, + q.email_box_pass or + settings.QUEUE_EMAIL_BOX_PASSWORD) + server.select(q.email_box_imap_folder) + except imaplib.IMAP.abort: + logger.error("IMAP login failed. Check that the server is accessible and that the username and password are correct.") + server.logout() + sys.exit() + except ssl.SSLError: + logger.error("IMAP login failed due to SSL error. This is often due to a timeout. Please check your connection and try again.") + server.logout() + sys.exit() try: status, data = server.search(None, 'NOT', 'DELETED') From 47f92eba1e455303c8f64c2ddb3a5b766a3f071a Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Wed, 6 Dec 2017 02:59:50 -0500 Subject: [PATCH 15/19] More PEP8 fixes for get_email --- helpdesk/management/commands/get_email.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helpdesk/management/commands/get_email.py b/helpdesk/management/commands/get_email.py index d673a4ff..0a32f1f7 100755 --- a/helpdesk/management/commands/get_email.py +++ b/helpdesk/management/commands/get_email.py @@ -205,9 +205,9 @@ def process_queue(q, logger): try: server.login(q.email_box_user or - settings.QUEUE_EMAIL_BOX_USER, - q.email_box_pass or - settings.QUEUE_EMAIL_BOX_PASSWORD) + settings.QUEUE_EMAIL_BOX_USER, + q.email_box_pass or + settings.QUEUE_EMAIL_BOX_PASSWORD) server.select(q.email_box_imap_folder) except imaplib.IMAP.abort: logger.error("IMAP login failed. Check that the server is accessible and that the username and password are correct.") From a6c1469bfb996189e483c3e845a965c308a47c35 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Fri, 8 Dec 2017 11:53:27 -0500 Subject: [PATCH 16/19] Update zh_CN translation, see #571, thanks pjsong! --- helpdesk/locale/zh_CN/LC_MESSAGES/django.mo | Bin 534 -> 49187 bytes helpdesk/locale/zh_CN/LC_MESSAGES/django.po | 1027 ++++++++++--------- 2 files changed, 514 insertions(+), 513 deletions(-) diff --git a/helpdesk/locale/zh_CN/LC_MESSAGES/django.mo b/helpdesk/locale/zh_CN/LC_MESSAGES/django.mo index 9528b03f9271f100f85c5bb260920cff0091b7ed..765be4abe38708e53adaa749a48fd8a176b6992c 100644 GIT binary patch literal 49187 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 EAIO70VE_OC delta 150 zcmZ47z&wq`;+_!8R0bem1Y#K=RsmvWAl3n55U>E^J3vWGAPrIj1CyDnS2&pH8d&HW z7%CW8TA5mC8vp^9PhxS2Zb(sLUU5!hNq&))LQsBju|hz8X--Lgo`Ovgkmmp*3iR@e Z(kH*Hw&p4*%FjwoE-BV8m~33L5de$%Bl`dV diff --git a/helpdesk/locale/zh_CN/LC_MESSAGES/django.po b/helpdesk/locale/zh_CN/LC_MESSAGES/django.po index 001f5c4b..d8374d72 100644 --- a/helpdesk/locale/zh_CN/LC_MESSAGES/django.po +++ b/helpdesk/locale/zh_CN/LC_MESSAGES/django.po @@ -4,14 +4,15 @@ # # Translators: # Translators: +# pjsong , 2017 msgid "" msgstr "" "Project-Id-Version: django-helpdesk\n" "Report-Msgid-Bugs-To: http://github.com/RossP/django-helpdesk/issues\n" "POT-Creation-Date: 2014-07-26 14:14+0200\n" -"PO-Revision-Date: 2014-08-01 09:58+0000\n" -"Last-Translator: Ross Poulton \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-helpdesk/language/zh_CN/)\n" +"PO-Revision-Date: 2017-12-06 08:13+0000\n" +"Last-Translator: pjsong \n" +"Language-Team: Chinese (China) (http://www.transifex.com/django-helpdesk/django-helpdesk/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -27,35 +28,35 @@ msgstr "" #: templates/helpdesk/ticket_list.html:225 views/staff.py:1032 #: views/staff.py:1038 views/staff.py:1044 views/staff.py:1050 msgid "Queue" -msgstr "" +msgstr "所有待办" #: forms.py:137 msgid "Summary of the problem" -msgstr "" +msgstr "问题描述" #: forms.py:142 msgid "Submitter E-Mail Address" -msgstr "" +msgstr "提交者邮件" #: forms.py:144 msgid "" "This e-mail address will receive copies of all public updates to this " "ticket." -msgstr "" +msgstr "此邮箱将收到此工单的所有公开更新" #: forms.py:150 msgid "Description of Issue" -msgstr "" +msgstr "问题描述" #: forms.py:157 msgid "Case owner" -msgstr "" +msgstr "案子所有者" #: forms.py:158 msgid "" "If you select an owner other than yourself, they'll be e-mailed details of " "this ticket immediately." -msgstr "" +msgstr "如果选择自己之外的所有者, 他们将马上收到此工单的邮件" #: forms.py:166 models.py:327 management/commands/escalate_tickets.py:154 #: templates/helpdesk/public_view_ticket.html:23 @@ -63,121 +64,121 @@ msgstr "" #: templates/helpdesk/ticket_desc_table.html:47 #: templates/helpdesk/ticket_list.html:94 views/staff.py:429 msgid "Priority" -msgstr "" +msgstr "优先级" #: forms.py:167 msgid "Please select a priority carefully. If unsure, leave it as '3'." -msgstr "" +msgstr "请认真选择优先级,如果不确定, 选择默认3" #: forms.py:174 forms.py:365 models.py:335 templates/helpdesk/ticket.html:186 #: views/staff.py:439 msgid "Due on" -msgstr "" +msgstr "截止至" #: forms.py:186 forms.py:370 msgid "Attach File" -msgstr "" +msgstr "附件" #: forms.py:187 forms.py:371 msgid "You can attach a file such as a document or screenshot to this ticket." -msgstr "" +msgstr "你可以附加文档或者截屏到这个工单" #: forms.py:240 msgid "Ticket Opened" -msgstr "" +msgstr "开工单" #: forms.py:247 #, python-format msgid "Ticket Opened & Assigned to %(name)s" -msgstr "" +msgstr "已开 & 已分配给 %(name)s" #: forms.py:337 msgid "Summary of your query" -msgstr "" +msgstr "查询摘要" #: forms.py:342 msgid "Your E-Mail Address" -msgstr "" +msgstr "邮箱地址" #: forms.py:343 msgid "We will e-mail you when your ticket is updated." -msgstr "" +msgstr "当您的ticket有更新,我们将给您发邮件" #: forms.py:348 msgid "Description of your issue" -msgstr "" +msgstr "问题描述" #: forms.py:350 msgid "" "Please be as descriptive as possible, including any details we may need to " "address your query." -msgstr "" +msgstr "请保持描述性, 包括为了表示您的查询,我们所需要的任何细节" #: forms.py:358 msgid "Urgency" -msgstr "" +msgstr "紧急程度" #: forms.py:359 msgid "Please select a priority carefully." -msgstr "" +msgstr "请认真选择优先级" #: forms.py:419 msgid "Ticket Opened Via Web" -msgstr "" +msgstr "工单已通过web打开" #: forms.py:486 msgid "Show Ticket List on Login?" -msgstr "" +msgstr "登录之后是否显示工单列表?" #: forms.py:487 msgid "Display the ticket list upon login? Otherwise, the dashboard is shown." -msgstr "" +msgstr "登录之后显示工单吗? 如果否, 则显示仪表盘" #: forms.py:492 msgid "E-mail me on ticket change?" -msgstr "" +msgstr "工单更改要通知您吗?" #: forms.py:493 msgid "" "If you're the ticket owner and the ticket is changed via the web by somebody" " else, do you want to receive an e-mail?" -msgstr "" +msgstr "如果您是工单所有者, 且工单被其他人通过web改变了, 您希望收到邮件吗?" #: forms.py:498 msgid "E-mail me when assigned a ticket?" -msgstr "" +msgstr "当工单分配给您,要给您发邮件吗?" #: forms.py:499 msgid "" "If you are assigned a ticket via the web, do you want to receive an e-mail?" -msgstr "" +msgstr "如果有工单分配到了您,您是否愿意收到邮件?" #: forms.py:504 msgid "E-mail me when a ticket is changed via the API?" -msgstr "" +msgstr "当工单通过api改变时, 要通知您吗?" #: forms.py:505 msgid "If a ticket is altered by the API, do you want to receive an e-mail?" -msgstr "" +msgstr "如果工单被api改变, 您愿意收到邮件吗?" #: forms.py:510 msgid "Number of tickets to show per page" -msgstr "" +msgstr "每个页面显示的工单数量" #: forms.py:511 msgid "How many tickets do you want to see on the Ticket List page?" -msgstr "" +msgstr "工单列表页面显示的工单数量" #: forms.py:518 msgid "Use my e-mail address when submitting tickets?" -msgstr "" +msgstr "当提交工单时使用我的邮箱地址吗?" #: forms.py:519 msgid "" "When you submit a ticket, do you want to automatically use your e-mail " "address as the submitter address? You can type a different e-mail address " "when entering the ticket if needed, this option only changes the default." -msgstr "" +msgstr "当提交工单, 您愿意自动使用您的邮箱地址作为提交者地址吗? 提交表单时如果需要, 您可以改变缺省的选项,输入一个不同的邮箱地址。" #: models.py:35 models.py:261 models.py:503 models.py:817 models.py:853 #: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 @@ -185,256 +186,256 @@ msgstr "" #: templates/helpdesk/ticket.html:178 templates/helpdesk/ticket_list.html:85 #: templates/helpdesk/ticket_list.html:225 views/staff.py:419 msgid "Title" -msgstr "" +msgstr "标题" #: models.py:40 models.py:822 models.py:1206 msgid "Slug" -msgstr "" +msgstr "地址栏表示" #: models.py:41 msgid "" "This slug is used when building ticket ID's. Once set, try not to change it " "or e-mailing may get messy." -msgstr "" +msgstr "本地址栏表示在构建工单ID时使用。 一旦设置不要更改, 否则可能导致邮件功能混乱" #: models.py:46 models.py:1054 models.py:1129 models.py:1203 #: templates/helpdesk/email_ignore_list.html:13 #: templates/helpdesk/ticket_cc_list.html:15 msgid "E-Mail Address" -msgstr "" +msgstr "邮件地址" #: models.py:49 msgid "" "All outgoing e-mails for this queue will use this e-mail address. If you use" " IMAP or POP3, this should be the e-mail address for that mailbox." -msgstr "" +msgstr "本待办主题下,所有出去的邮件将使用本地址。 如果您使用IMAP或者POP3,这里应该是那个邮箱的地址" #: models.py:55 models.py:794 msgid "Locale" -msgstr "" +msgstr "地区" #: models.py:59 msgid "" "Locale of this queue. All correspondence in this queue will be in this " "language." -msgstr "" +msgstr "待办所属的地区。 这个代办下对应的任务使用该语言" #: models.py:63 msgid "Allow Public Submission?" -msgstr "" +msgstr "允许公共提交?" #: models.py:66 msgid "Should this queue be listed on the public submission form?" -msgstr "" +msgstr "是否该待办显示在公共提交表单?" #: models.py:71 msgid "Allow E-Mail Submission?" -msgstr "" +msgstr "允许邮件提交?" #: models.py:74 msgid "Do you want to poll the e-mail box below for new tickets?" -msgstr "" +msgstr "您是否愿意通过以下的邮件查询得到新的工单?" #: models.py:79 msgid "Escalation Days" -msgstr "" +msgstr "提升天数" #: models.py:82 msgid "" "For tickets which are not held, how often do you wish to increase their " "priority? Set to 0 for no escalation." -msgstr "" +msgstr "对于不固定的工单, 多久您希望提升其优先级? 设置0表示不提升" #: models.py:87 msgid "New Ticket CC Address" -msgstr "" +msgstr "新工单CC的地址" #: models.py:91 msgid "" "If an e-mail address is entered here, then it will receive notification of " "all new tickets created for this queue. Enter a comma between multiple " "e-mail addresses." -msgstr "" +msgstr "如果此处输入邮件地址,该地址将收到本待办下所有新创建的工单。多个邮件地址用逗号分隔" #: models.py:97 msgid "Updated Ticket CC Address" -msgstr "" +msgstr "更新工单CC的地址" #: models.py:101 msgid "" "If an e-mail address is entered here, then it will receive notification of " "all activity (new tickets, closed tickets, updates, reassignments, etc) for " "this queue. Separate multiple addresses with a comma." -msgstr "" +msgstr "此处输入的邮件地址, 将收到本代办下所有的活动(新工单,关闭工单,更新,重分配等)。多个邮件地址用逗号分隔。" #: models.py:108 msgid "E-Mail Box Type" -msgstr "" +msgstr "邮箱类型" #: models.py:110 msgid "POP 3" -msgstr "" +msgstr "POP3" #: models.py:110 msgid "IMAP" -msgstr "" +msgstr "IMAP" #: models.py:113 msgid "" "E-Mail server type for creating tickets automatically from a mailbox - both " "POP3 and IMAP are supported." -msgstr "" +msgstr "通过邮箱自动创建工单的邮件服务器类型。 同时支持POP3和IMAP" #: models.py:118 msgid "E-Mail Hostname" -msgstr "" +msgstr "邮箱主机名" #: models.py:122 msgid "" "Your e-mail server address - either the domain name or IP address. May be " "\"localhost\"." -msgstr "" +msgstr "您邮箱服务器地址-域名或者ip. 可能是localhost" #: models.py:127 msgid "E-Mail Port" -msgstr "" +msgstr "邮件端口" #: models.py:130 msgid "" "Port number to use for accessing e-mail. Default for POP3 is \"110\", and " "for IMAP is \"143\". This may differ on some servers. Leave it blank to use " "the defaults." -msgstr "" +msgstr "访问邮件使用的端口。 缺省下POP3用110, IMAP用143. 不同服务器可能有差别。如果使用缺省,保持空白。" #: models.py:136 msgid "Use SSL for E-Mail?" -msgstr "" +msgstr "邮箱使用SSL?" #: models.py:139 msgid "" "Whether to use SSL for IMAP or POP3 - the default ports when using SSL are " "993 for IMAP and 995 for POP3." -msgstr "" +msgstr "IMAP或POP3是否使用SSL-当使用SSL, IMAP是993, POP3是995" #: models.py:144 msgid "E-Mail Username" -msgstr "" +msgstr "邮箱用户名" #: models.py:148 msgid "Username for accessing this mailbox." -msgstr "" +msgstr "访问本邮箱使用的用户名" #: models.py:152 msgid "E-Mail Password" -msgstr "" +msgstr "邮箱密码" #: models.py:156 msgid "Password for the above username" -msgstr "" +msgstr "以上用户名的密码" #: models.py:160 msgid "IMAP Folder" -msgstr "" +msgstr "IMAP文件夹" #: models.py:164 msgid "" "If using IMAP, what folder do you wish to fetch messages from? This allows " "you to use one IMAP account for multiple queues, by filtering messages on " "your IMAP server into separate folders. Default: INBOX." -msgstr "" +msgstr "如果使用IMAP,您希望获取哪个文件夹的消息? 本功能允许您使用一个IMAP帐号访问多个待办。把您IMAP服务器上的消息分开到不同的文件夹即可。缺省:收件箱" #: models.py:171 msgid "E-Mail Check Interval" -msgstr "" +msgstr "邮箱检查间隔" #: models.py:172 msgid "How often do you wish to check this mailbox? (in Minutes)" -msgstr "" +msgstr "隔多久您希望检查此邮箱?(分钟单位)" #: models.py:191 templates/helpdesk/email_ignore_list.html:13 msgid "Queues" -msgstr "" +msgstr "代办" #: models.py:245 templates/helpdesk/dashboard.html:15 #: templates/helpdesk/ticket.html:138 msgid "Open" -msgstr "" +msgstr "打开" #: models.py:246 templates/helpdesk/ticket.html:144 #: templates/helpdesk/ticket.html.py:150 templates/helpdesk/ticket.html:155 #: templates/helpdesk/ticket.html.py:159 msgid "Reopened" -msgstr "" +msgstr "重新打开" #: models.py:247 templates/helpdesk/dashboard.html:15 #: templates/helpdesk/ticket.html:139 templates/helpdesk/ticket.html.py:145 #: templates/helpdesk/ticket.html:151 msgid "Resolved" -msgstr "" +msgstr "已解决" #: models.py:248 templates/helpdesk/dashboard.html:15 #: templates/helpdesk/ticket.html:140 templates/helpdesk/ticket.html.py:146 #: templates/helpdesk/ticket.html:152 templates/helpdesk/ticket.html.py:156 msgid "Closed" -msgstr "" +msgstr "已关闭" #: models.py:249 templates/helpdesk/ticket.html:141 #: templates/helpdesk/ticket.html.py:147 templates/helpdesk/ticket.html:160 msgid "Duplicate" -msgstr "" +msgstr "重复" #: models.py:253 msgid "1. Critical" -msgstr "" +msgstr "1. 严重" #: models.py:254 msgid "2. High" -msgstr "" +msgstr "2. 高" #: models.py:255 msgid "3. Normal" -msgstr "" +msgstr "3. 一般" #: models.py:256 msgid "4. Low" -msgstr "" +msgstr "4. 低" #: models.py:257 msgid "5. Very Low" -msgstr "" +msgstr "5. 很低" #: models.py:271 templates/helpdesk/dashboard.html:100 #: templates/helpdesk/ticket_list.html:82 #: templates/helpdesk/ticket_list.html:225 msgid "Created" -msgstr "" +msgstr "已创建" #: models.py:273 msgid "Date this ticket was first created" -msgstr "" +msgstr "工单创建日期" #: models.py:277 msgid "Modified" -msgstr "" +msgstr "已修改" #: models.py:279 msgid "Date this ticket was most recently changed." -msgstr "" +msgstr "工单最近修改日期" #: models.py:283 templates/helpdesk/public_view_ticket.html:18 #: templates/helpdesk/ticket_desc_table.html:42 msgid "Submitter E-Mail" -msgstr "" +msgstr "提交者邮箱" #: models.py:286 msgid "" "The submitter will receive an email for all public follow-ups left for this " "task." -msgstr "" +msgstr "提交者将收到本任务的所有跟进" #: models.py:295 msgid "Assigned to" -msgstr "" +msgstr "分配给" #: models.py:299 templates/helpdesk/dashboard.html:58 #: templates/helpdesk/dashboard.html:78 templates/helpdesk/dashboard.html:124 @@ -442,703 +443,703 @@ msgstr "" #: templates/helpdesk/ticket_list.html:91 #: templates/helpdesk/ticket_list.html:225 msgid "Status" -msgstr "" +msgstr "状态" #: models.py:305 msgid "On Hold" -msgstr "" +msgstr "待定" #: models.py:308 msgid "If a ticket is on hold, it will not automatically be escalated." -msgstr "" +msgstr "如果工单待定,将自动提升级别" #: models.py:313 models.py:826 templates/helpdesk/public_view_ticket.html:41 #: templates/helpdesk/ticket_desc_table.html:19 msgid "Description" -msgstr "" +msgstr "描述" #: models.py:316 msgid "The content of the customers query." -msgstr "" +msgstr "定制查询的内容" #: models.py:320 templates/helpdesk/public_view_ticket.html:48 #: templates/helpdesk/ticket_desc_table.html:26 msgid "Resolution" -msgstr "" +msgstr "解决方案" #: models.py:323 msgid "The resolution provided to the customer by our staff." -msgstr "" +msgstr "员工提供给客户的解决方案" #: models.py:331 msgid "1 = Highest Priority, 5 = Low Priority" -msgstr "" +msgstr "1=最高优先级, 5=低优先级" #: models.py:344 msgid "" "The date this ticket was last escalated - updated automatically by " "management/commands/escalate_tickets.py." -msgstr "" +msgstr "最近优先级提升日期,通过management/commands/escalate_tickets.py自动升级" #: models.py:353 templates/helpdesk/ticket_desc_table.html:38 #: views/feeds.py:95 views/feeds.py:121 views/feeds.py:173 views/staff.py:376 msgid "Unassigned" -msgstr "" +msgstr "未分配" #: models.py:392 msgid " - On Hold" -msgstr "" +msgstr "待定" #: models.py:394 msgid " - Open dependencies" -msgstr "" +msgstr "打开依赖" #: models.py:448 models.py:494 models.py:1117 models.py:1280 models.py:1309 #: templates/helpdesk/public_homepage.html:78 #: templates/helpdesk/public_view_form.html:12 msgid "Ticket" -msgstr "" +msgstr "工单" #: models.py:449 templates/helpdesk/navigation.html:17 #: templates/helpdesk/ticket_list.html:2 #: templates/helpdesk/ticket_list.html:224 msgid "Tickets" -msgstr "" +msgstr "工单" #: models.py:498 models.py:738 models.py:1047 models.py:1200 msgid "Date" -msgstr "" +msgstr "日期" #: models.py:510 views/staff.py:390 msgid "Comment" -msgstr "" +msgstr "评论" #: models.py:516 msgid "Public" -msgstr "" +msgstr "公开" #: models.py:519 msgid "" "Public tickets are viewable by the submitter and all staff, but non-public " "tickets can only be seen by staff." -msgstr "" +msgstr "公开工单对提交者和所有员工可见,非公开工单只对员工可见。" #: models.py:527 models.py:922 models.py:1125 views/staff.py:1008 #: views/staff.py:1014 views/staff.py:1020 views/staff.py:1026 msgid "User" -msgstr "" +msgstr "用户" #: models.py:531 templates/helpdesk/ticket.html:135 msgid "New Status" -msgstr "" +msgstr "新状态" #: models.py:535 msgid "If the status was changed, what was it changed to?" -msgstr "" +msgstr "如果状态发生变更,变更到哪个状态?" #: models.py:542 models.py:566 models.py:628 msgid "Follow-up" -msgstr "" +msgstr "跟进" #: models.py:543 msgid "Follow-ups" -msgstr "" +msgstr "跟进" #: models.py:570 models.py:1285 msgid "Field" -msgstr "" +msgstr "字段" #: models.py:575 msgid "Old Value" -msgstr "" +msgstr "旧值" #: models.py:581 msgid "New Value" -msgstr "" +msgstr "新值" #: models.py:589 msgid "removed" -msgstr "" +msgstr "移除" #: models.py:591 #, python-format msgid "set to %s" -msgstr "" +msgstr "设置为 %s" #: models.py:593 #, python-format msgid "changed from \"%(old_value)s\" to \"%(new_value)s\"" -msgstr "" +msgstr " 从\"%(old_value)s\" 更改为 \"%(new_value)s\"" #: models.py:600 msgid "Ticket change" -msgstr "" +msgstr "工单变更" #: models.py:601 msgid "Ticket changes" -msgstr "" +msgstr "工单变更" #: models.py:632 msgid "File" -msgstr "" +msgstr "文件" #: models.py:637 msgid "Filename" -msgstr "" +msgstr "文件名" #: models.py:642 msgid "MIME Type" -msgstr "" +msgstr "MIME 类型" #: models.py:647 msgid "Size" -msgstr "" +msgstr "大小" #: models.py:648 msgid "Size of this file in bytes" -msgstr "" +msgstr "文件字节大小" #: models.py:665 msgid "Attachment" -msgstr "" +msgstr "附件" #: models.py:666 msgid "Attachments" -msgstr "" +msgstr "附件" #: models.py:685 msgid "" "Leave blank to allow this reply to be used for all queues, or select those " "queues you wish to limit this reply to." -msgstr "" +msgstr "留空表示允许回复给所有待办,或者选择你要的待办。" #: models.py:690 models.py:733 models.py:1042 #: templates/helpdesk/email_ignore_list.html:13 msgid "Name" -msgstr "" +msgstr "名字" #: models.py:692 msgid "" "Only used to assist users with selecting a reply - not shown to the user." -msgstr "" +msgstr "仅用于帮助用户选择回复,不显示给用户。" #: models.py:697 msgid "Body" -msgstr "" +msgstr "内容" #: models.py:698 msgid "" "Context available: {{ ticket }} - ticket object (eg {{ ticket.title }}); {{ " "queue }} - The queue; and {{ user }} - the current user." -msgstr "" +msgstr "可用的上下文: {{ ticket }} - 目标工单 (比如 {{ ticket.title }}); {{ queue }} - 待办; 和{{ user }} - 当前用户。" #: models.py:705 msgid "Pre-set reply" -msgstr "" +msgstr "预设置回复" #: models.py:706 msgid "Pre-set replies" -msgstr "" +msgstr "预设置回复" #: models.py:727 msgid "" "Leave blank for this exclusion to be applied to all queues, or select those " "queues you wish to exclude with this entry." -msgstr "" +msgstr "留空表示此排除应用到所有待办,或者选择你想应用的待办。" #: models.py:739 msgid "Date on which escalation should not happen" -msgstr "" +msgstr "不发生提升的日期" #: models.py:746 msgid "Escalation exclusion" -msgstr "" +msgstr "提升排除项" #: models.py:747 msgid "Escalation exclusions" -msgstr "" +msgstr "提升排除项" #: models.py:760 msgid "Template Name" -msgstr "" +msgstr "模板名" #: models.py:765 msgid "Subject" -msgstr "" +msgstr "主题" #: models.py:767 msgid "" "This will be prefixed with \"[ticket.ticket] ticket.title\". We recommend " "something simple such as \"(Updated\") or \"(Closed)\" - the same context is" " available as in plain_text, below." -msgstr "" +msgstr "此处添加 \"[ticket.ticket] ticket.title\"前缀. 我们推荐类似于 \"(已更新\") 或者 \"(已关闭)\"的简单形式 - 在下面的纯文本,上下文依然有效。" #: models.py:773 msgid "Heading" -msgstr "" +msgstr "标题" #: models.py:775 msgid "" "In HTML e-mails, this will be the heading at the top of the email - the same" " context is available as in plain_text, below." -msgstr "" +msgstr "在HTML格式电邮中,这是邮件顶部的标题-下面的文本中上下文依然有效" #: models.py:781 msgid "Plain Text" -msgstr "" +msgstr "纯文本" #: models.py:782 msgid "" "The context available to you includes {{ ticket }}, {{ queue }}, and " "depending on the time of the call: {{ resolution }} or {{ comment }}." -msgstr "" +msgstr "可用的上下文包括 {{ ticket }}, {{ queue }}, 依赖调用时间: {{ resolution }} 或者 {{ comment }}." #: models.py:788 msgid "HTML" -msgstr "" +msgstr "HTML" #: models.py:789 msgid "The same context is available here as in plain_text, above." -msgstr "" +msgstr "与纯文本一样,可用同样的上下文" #: models.py:798 msgid "Locale of this template." -msgstr "" +msgstr "模板的地区" #: models.py:806 msgid "e-mail template" -msgstr "" +msgstr "邮件模板" #: models.py:807 msgid "e-mail templates" -msgstr "" +msgstr "邮件模板" #: models.py:834 msgid "Knowledge base category" -msgstr "" +msgstr "知识库分类" #: models.py:835 msgid "Knowledge base categories" -msgstr "" +msgstr "知识库分类" #: models.py:849 templates/helpdesk/kb_index.html:11 #: templates/helpdesk/public_homepage.html:11 msgid "Category" -msgstr "" +msgstr "分类" #: models.py:858 msgid "Question" -msgstr "" +msgstr "提问" #: models.py:862 msgid "Answer" -msgstr "" +msgstr "回答" #: models.py:866 msgid "Votes" -msgstr "" +msgstr "投票" #: models.py:867 msgid "Total number of votes cast for this item" -msgstr "" +msgstr "此项的投票数量" #: models.py:872 msgid "Positive Votes" -msgstr "" +msgstr "赞票" #: models.py:873 msgid "Number of votes for this item which were POSITIVE." -msgstr "" +msgstr "踩票数" #: models.py:878 msgid "Last Updated" -msgstr "" +msgstr "最近更新" #: models.py:879 msgid "The date on which this question was most recently changed." -msgstr "" +msgstr "此提问最近更新时间" #: models.py:893 msgid "Unrated" -msgstr "" +msgstr "未评级" #: models.py:901 msgid "Knowledge base item" -msgstr "" +msgstr "知识库项" #: models.py:902 msgid "Knowledge base items" -msgstr "" +msgstr "知识库项" #: models.py:926 templates/helpdesk/ticket_list.html:170 msgid "Query Name" -msgstr "" +msgstr "查询名" #: models.py:928 msgid "User-provided name for this query" -msgstr "" +msgstr "用户定义的查询名字" #: models.py:932 msgid "Shared With Other Users?" -msgstr "" +msgstr "与其他用户共享?" #: models.py:935 msgid "Should other users see this query?" -msgstr "" +msgstr "查询对其他用户可见?" #: models.py:939 msgid "Search Query" -msgstr "" +msgstr "查询搜索" #: models.py:940 msgid "Pickled query object. Be wary changing this." -msgstr "" +msgstr "酸查询对象, 改变要小心" #: models.py:950 msgid "Saved search" -msgstr "" +msgstr "已保存搜索" #: models.py:951 msgid "Saved searches" -msgstr "" +msgstr "已保存搜索" #: models.py:966 msgid "Settings Dictionary" -msgstr "" +msgstr "设置字典" #: models.py:967 msgid "" "This is a base64-encoded representation of a pickled Python dictionary. Do " "not change this field via the admin." -msgstr "" +msgstr "酸python字典的base64编码表示。不要通过管理员改变此字段" #: models.py:993 msgid "User Setting" -msgstr "" +msgstr "用户设置" #: models.py:994 templates/helpdesk/navigation.html:37 #: templates/helpdesk/user_settings.html:6 msgid "User Settings" -msgstr "" +msgstr "用户设置" #: models.py:1036 msgid "" "Leave blank for this e-mail to be ignored on all queues, or select those " "queues you wish to ignore this e-mail for." -msgstr "" +msgstr "留空表示次邮件被所有待办忽略。或者选择你需要忽略的待办." #: models.py:1048 msgid "Date on which this e-mail address was added" -msgstr "" +msgstr "此邮箱地址添加日期" #: models.py:1056 msgid "" "Enter a full e-mail address, or portions with wildcards, eg *@domain.com or " "postmaster@*." -msgstr "" +msgstr "输入全邮件地址,或者包含通配符比如*@domain.com或者postmaster@*" #: models.py:1061 msgid "Save Emails in Mailbox?" -msgstr "" +msgstr "在邮箱保存邮件吗?" #: models.py:1064 msgid "" "Do you want to save emails from this address in the mailbox? If this is " "unticked, emails from this address will be deleted." -msgstr "" +msgstr "邮箱中保存此地址的邮件吗?如果没有勾上,此地址的邮件将被删除" #: models.py:1101 msgid "Ignored e-mail address" -msgstr "" +msgstr "忽略邮件地址" #: models.py:1102 msgid "Ignored e-mail addresses" -msgstr "" +msgstr "忽略邮件地址" #: models.py:1124 msgid "User who wishes to receive updates for this ticket." -msgstr "" +msgstr "希望收到此工单更新的用户" #: models.py:1132 msgid "For non-user followers, enter their e-mail address" -msgstr "" +msgstr "输入非用户跟进者的邮箱地址" #: models.py:1136 msgid "Can View Ticket?" -msgstr "" +msgstr "可以看工单?" #: models.py:1138 msgid "Can this CC login to view the ticket details?" -msgstr "" +msgstr "此CC能登录查看工单详情?" #: models.py:1142 msgid "Can Update Ticket?" -msgstr "" +msgstr "能更新工单?" #: models.py:1144 msgid "Can this CC login and update the ticket?" -msgstr "" +msgstr "此CC能登录并更新工单?" #: models.py:1175 msgid "Field Name" -msgstr "" +msgstr "字段名" #: models.py:1176 msgid "" "As used in the database and behind the scenes. Must be unique and consist of" " only lowercase letters with no punctuation." -msgstr "" +msgstr "与数据库中用法一样, 必须唯一,且只有小写字母,无标点" #: models.py:1181 msgid "Label" -msgstr "" +msgstr "标签" #: models.py:1183 msgid "The display label for this field" -msgstr "" +msgstr "此字段的标签" #: models.py:1187 msgid "Help Text" -msgstr "" +msgstr "帮助文本" #: models.py:1188 msgid "Shown to the user when editing the ticket" -msgstr "" +msgstr "编辑工单时显示给用户" #: models.py:1194 msgid "Character (single line)" -msgstr "" +msgstr "字符(单行)" #: models.py:1195 msgid "Text (multi-line)" -msgstr "" +msgstr "文本(多行)" #: models.py:1196 msgid "Integer" -msgstr "" +msgstr "整型" #: models.py:1197 msgid "Decimal" -msgstr "" +msgstr "数字型" #: models.py:1198 msgid "List" -msgstr "" +msgstr "列表" #: models.py:1199 msgid "Boolean (checkbox yes/no)" -msgstr "" +msgstr "布尔型(单选yes/no)" #: models.py:1201 msgid "Time" -msgstr "" +msgstr "时间" #: models.py:1202 msgid "Date & Time" -msgstr "" +msgstr "时间&日期" #: models.py:1204 msgid "URL" -msgstr "" +msgstr "网址" #: models.py:1205 msgid "IP Address" -msgstr "" +msgstr "IP 地址" #: models.py:1210 msgid "Data Type" -msgstr "" +msgstr "日期类型" #: models.py:1212 msgid "Allows you to restrict the data entered into this field" -msgstr "" +msgstr "可以限制输入到此字段的数据" #: models.py:1217 msgid "Maximum Length (characters)" -msgstr "" +msgstr "最大长度(字符)" #: models.py:1223 msgid "Decimal Places" -msgstr "" +msgstr "小数位" #: models.py:1224 msgid "Only used for decimal fields" -msgstr "" +msgstr "仅用于数字型字段" #: models.py:1230 msgid "Add empty first choice to List?" -msgstr "" +msgstr "添加第一个空选项到列表吗?" #: models.py:1232 msgid "" "Only for List: adds an empty first entry to the choices list, which enforces" " that the user makes an active choice." -msgstr "" +msgstr "仅用于列表:添加一个空项到列表,强制用户作出一个活跃选择" #: models.py:1236 msgid "List Values" -msgstr "" +msgstr "列表值" #: models.py:1237 msgid "For list fields only. Enter one option per line." -msgstr "" +msgstr "仅针对列表字段,每行添加一个选项" #: models.py:1243 msgid "Ordering" -msgstr "" +msgstr "排序" #: models.py:1244 msgid "Lower numbers are displayed first; higher numbers are listed later" -msgstr "" +msgstr "显示数字由低到高" #: models.py:1258 msgid "Required?" -msgstr "" +msgstr "必填?" #: models.py:1259 msgid "Does the user have to enter a value for this field?" -msgstr "" +msgstr "用户在此字段必须填入值?" #: models.py:1263 msgid "Staff Only?" -msgstr "" +msgstr "仅员工?" #: models.py:1264 msgid "" "If this is ticked, then the public submission form will NOT show this field" -msgstr "" +msgstr "如果勾上,公共提交的表单不会显示该字段" #: models.py:1273 msgid "Custom field" -msgstr "" +msgstr "定制字段" #: models.py:1274 msgid "Custom fields" -msgstr "" +msgstr "定制字段" #: models.py:1297 msgid "Ticket custom field value" -msgstr "" +msgstr "工单定制字段值" #: models.py:1298 msgid "Ticket custom field values" -msgstr "" +msgstr "工单定制字段值" #: models.py:1315 msgid "Depends On Ticket" -msgstr "" +msgstr "依赖于工单" #: models.py:1324 msgid "Ticket dependency" -msgstr "" +msgstr "工单依赖" #: models.py:1325 msgid "Ticket dependencies" -msgstr "" +msgstr "工单依赖" #: management/commands/create_usersettings.py:25 msgid "" "Check for user without django-helpdesk UserSettings and create settings if " "required. Uses settings.DEFAULT_USER_SETTINGS which can be overridden to " "suit your situation." -msgstr "" +msgstr "检查没有django-helpdesk UserSettings的用户,如果需要创建settings. 用settings.DEFAULT_USER_SETTINGS, 可以被重写来满足个人情况。" #: management/commands/escalate_tickets.py:148 #, python-format msgid "Ticket escalated after %s days" -msgstr "" +msgstr "%s 天之后工单升级" #: management/commands/get_email.py:158 msgid "Created from e-mail" -msgstr "" +msgstr "从邮件创建" #: management/commands/get_email.py:162 msgid "Unknown Sender" -msgstr "" +msgstr "未知发送者" #: management/commands/get_email.py:216 msgid "" "No plain-text email body available. Please see attachment " "email_html_body.html." -msgstr "" +msgstr "没有可用的纯文本邮件体。请参考附件 email_html_body.html" #: management/commands/get_email.py:220 msgid "email_html_body.html" -msgstr "" +msgstr "email_html_body.html" #: management/commands/get_email.py:263 #, python-format msgid "E-Mail Received from %(sender_email)s" -msgstr "" +msgstr "从 1%(sender_email)s处收到的邮件" #: management/commands/get_email.py:271 #, python-format msgid "Ticket Re-Opened by E-Mail Received from %(sender_email)s" -msgstr "" +msgstr "从 1%(sender_email)s 处收到的邮件重开的公开" #: management/commands/get_email.py:329 msgid " (Reopened)" -msgstr "" +msgstr "(重新打开)" #: management/commands/get_email.py:331 msgid " (Updated)" -msgstr "" +msgstr "(已更新)" #: templates/helpdesk/attribution.html:2 msgid "" "django-helpdesk." -msgstr "" +msgstr "django-helpdesk." #: templates/helpdesk/base.html:10 msgid "Powered by django-helpdesk" -msgstr "" +msgstr "由 django-helpdesk 主导" #: templates/helpdesk/base.html:20 templates/helpdesk/rss_list.html:9 #: templates/helpdesk/rss_list.html:24 templates/helpdesk/rss_list.html:31 msgid "My Open Tickets" -msgstr "" +msgstr "我打开的工单" #: templates/helpdesk/base.html:21 msgid "All Recent Activity" -msgstr "" +msgstr "所有最近的活动" #: templates/helpdesk/base.html:22 templates/helpdesk/dashboard.html:99 #: templates/helpdesk/rss_list.html:15 msgid "Unassigned Tickets" -msgstr "" +msgstr "未分配工单" #: templates/helpdesk/base.html:52 templates/helpdesk/public_base.html:6 #: templates/helpdesk/public_base.html:18 msgid "Helpdesk" -msgstr "" +msgstr "Helpdesk" #: templates/helpdesk/base.html:62 templates/helpdesk/rss_list.html:9 #: templates/helpdesk/rss_list.html:12 templates/helpdesk/rss_list.html:15 #: templates/helpdesk/rss_list.html:30 templates/helpdesk/rss_list.html:31 msgid "RSS Icon" -msgstr "" +msgstr "RSS图标" #: templates/helpdesk/base.html:62 templates/helpdesk/rss_list.html:2 #: templates/helpdesk/rss_list.html.py:4 msgid "RSS Feeds" -msgstr "" +msgstr "RSS 种子" #: templates/helpdesk/base.html:63 msgid "API" -msgstr "" +msgstr "API" #: templates/helpdesk/base.html:64 templates/helpdesk/system_settings.html:6 msgid "System Settings" -msgstr "" +msgstr "系统设置" #: templates/helpdesk/confirm_delete_saved_query.html:3 #: templates/helpdesk/ticket_list.html:146 msgid "Delete Saved Query" -msgstr "" +msgstr "删除保存的查询" #: templates/helpdesk/confirm_delete_saved_query.html:6 msgid "Delete Query" -msgstr "" +msgstr "删除查询" #: templates/helpdesk/confirm_delete_saved_query.html:8 #, python-format @@ -1146,130 +1147,130 @@ msgid "" "Are you sure you want to delete this saved filter " "(%(query_title)s)? To re-create it, you will need to manually re-" "filter your ticket listing." -msgstr "" +msgstr "确认删除保存的过滤器 (1%(query_title)s1)? 要重新创建, 你将需要手动重新过滤工单列表." #: templates/helpdesk/confirm_delete_saved_query.html:11 msgid "" "You have shared this query, so other users may be using it. If you delete " "it, they will have to manually create their own query." -msgstr "" +msgstr "您已共享此查询,其他用户可以使用它。如果你删除,他们将必须手动创建自己的查询。" #: templates/helpdesk/confirm_delete_saved_query.html:14 #: templates/helpdesk/delete_ticket.html:10 msgid "No, Don't Delete It" -msgstr "" +msgstr "否,不要删除" #: templates/helpdesk/confirm_delete_saved_query.html:16 #: templates/helpdesk/delete_ticket.html:12 msgid "Yes - Delete It" -msgstr "" +msgstr "是, 删除" #: templates/helpdesk/create_ticket.html:3 msgid "Create Ticket" -msgstr "" +msgstr "创建工单" #: templates/helpdesk/create_ticket.html:10 #: templates/helpdesk/navigation.html:65 templates/helpdesk/navigation.html:68 #: templates/helpdesk/public_homepage.html:27 msgid "Submit a Ticket" -msgstr "" +msgstr "提交工单" #: templates/helpdesk/create_ticket.html:11 #: templates/helpdesk/edit_ticket.html:11 msgid "Unless otherwise stated, all fields are required." -msgstr "" +msgstr "除非其他说明, 所有字段都必须" #: templates/helpdesk/create_ticket.html:11 #: templates/helpdesk/edit_ticket.html:11 #: templates/helpdesk/public_homepage.html:28 msgid "Please provide as descriptive a title and description as possible." -msgstr "" +msgstr "请提供描述性的标题和描述" #: templates/helpdesk/create_ticket.html:30 #: templates/helpdesk/public_homepage.html:55 msgid "Submit Ticket" -msgstr "" +msgstr "提交工单" #: templates/helpdesk/dashboard.html:2 msgid "Helpdesk Dashboard" -msgstr "" +msgstr "helpdesk 仪表盘" #: templates/helpdesk/dashboard.html:9 msgid "" "Welcome to your Helpdesk Dashboard! From here you can quickly see tickets " "submitted by you, tickets you are working on, and those tickets that have no" " owner." -msgstr "" +msgstr "欢迎来到helpdesk仪表盘。这里可以看到您提交的工单, 你正在工作的工单, 以及没有所有者的工单" #: templates/helpdesk/dashboard.html:14 msgid "Helpdesk Summary" -msgstr "" +msgstr "helpdesk 摘要" #: templates/helpdesk/dashboard.html:36 msgid "Current Ticket Stats" -msgstr "" +msgstr "当前工单状态" #: templates/helpdesk/dashboard.html:37 msgid "Average number of days until ticket is closed (all tickets): " -msgstr "" +msgstr "工单关闭平均天数(所有工单)" #: templates/helpdesk/dashboard.html:38 msgid "" "Average number of days until ticket is closed (tickets opened in last 60 " "days): " -msgstr "" +msgstr "工单关闭平均天数(最近60天打开的工单)" #: templates/helpdesk/dashboard.html:39 msgid "Click" -msgstr "" +msgstr "点击" #: templates/helpdesk/dashboard.html:39 msgid "for detailed average by month." -msgstr "" +msgstr "按月平均详细" #: templates/helpdesk/dashboard.html:40 msgid "Distribution of open tickets, grouped by time period:" -msgstr "" +msgstr "根据时间范围分组,开工单的分布" #: templates/helpdesk/dashboard.html:41 msgid "Days since opened" -msgstr "" +msgstr "打开天数" #: templates/helpdesk/dashboard.html:41 msgid "Number of open tickets" -msgstr "" +msgstr "开放工单的数量" #: templates/helpdesk/dashboard.html:57 msgid "All Tickets submitted by you" -msgstr "" +msgstr "您提交的所有工单" #: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 #: templates/helpdesk/dashboard.html:100 templates/helpdesk/dashboard.html:124 #: templates/helpdesk/ticket_list.html:225 msgid "Pr" -msgstr "" +msgstr "Pr" #: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 #: templates/helpdesk/dashboard.html:124 msgid "Last Update" -msgstr "" +msgstr "最近更新" #: templates/helpdesk/dashboard.html:77 msgid "Open Tickets assigned to you (you are working on this ticket)" -msgstr "" +msgstr "分配给您的开放工单(您正在工作的工单)" #: templates/helpdesk/dashboard.html:92 msgid "You have no tickets assigned to you." -msgstr "" +msgstr "您没有被分配的工单" #: templates/helpdesk/dashboard.html:99 msgid "(pick up a ticket if you start to work on it)" -msgstr "" +msgstr "(如果开始工作某个工单, 选择该工单)" #: templates/helpdesk/dashboard.html:110 #: templates/helpdesk/ticket_desc_table.html:38 msgid "Take" -msgstr "" +msgstr "拿走" #: templates/helpdesk/dashboard.html:110 #: templates/helpdesk/email_ignore_list.html:13 @@ -1278,20 +1279,20 @@ msgstr "" #: templates/helpdesk/ticket_cc_list.html:23 #: templates/helpdesk/ticket_list.html:262 msgid "Delete" -msgstr "" +msgstr "删除" #: templates/helpdesk/dashboard.html:114 msgid "There are no unassigned tickets." -msgstr "" +msgstr "没有未分配的工单" #: templates/helpdesk/dashboard.html:123 msgid "Closed & resolved Tickets you used to work on" -msgstr "" +msgstr "您过去关闭 & 已解决的工单" #: templates/helpdesk/delete_ticket.html:3 #: templates/helpdesk/delete_ticket.html:6 msgid "Delete Ticket" -msgstr "" +msgstr "删除工单" #: templates/helpdesk/delete_ticket.html:8 #, python-format @@ -1299,57 +1300,57 @@ msgid "" "Are you sure you want to delete this ticket (%(ticket_title)s)? All" " traces of the ticket, including followups, attachments, and updates will be" " irreversibly removed." -msgstr "" +msgstr "您确认删除此工单 (%(ticket_title)s)? 此工单的所有痕迹包括跟进,附件,更新都将不可逆的删除." #: templates/helpdesk/edit_ticket.html:3 msgid "Edit Ticket" -msgstr "" +msgstr "编辑工单" #: templates/helpdesk/edit_ticket.html:9 msgid "Edit a Ticket" -msgstr "" +msgstr "编辑工单" #: templates/helpdesk/edit_ticket.html:13 msgid "Note" -msgstr "" +msgstr "备注" #: templates/helpdesk/edit_ticket.html:13 msgid "" "Editing a ticket does not send an e-mail to the ticket owner or " "submitter. No new details should be entered, this form should only be used " "to fix incorrect details or clean up the submission." -msgstr "" +msgstr "编辑工单 并不 发送邮件给工单所有者或者提交者。不要输入新的详情, 这个表单仅在修正错误的详情或者清理提交时使用. " #: templates/helpdesk/edit_ticket.html:33 msgid "Save Changes" -msgstr "" +msgstr "保存变更" #: templates/helpdesk/email_ignore_add.html:3 #: templates/helpdesk/email_ignore_add.html:6 #: templates/helpdesk/email_ignore_add.html:23 msgid "Ignore E-Mail Address" -msgstr "" +msgstr "忽略邮件地址" #: templates/helpdesk/email_ignore_add.html:8 msgid "" "To ignore an e-mail address and prevent any emails from that address " "creating tickets automatically, enter the e-mail address below." -msgstr "" +msgstr "要忽略某个邮件地址,自动阻止该地址创建工单,输入邮件地址" #: templates/helpdesk/email_ignore_add.html:10 msgid "" "You can either enter a whole e-mail address such as " "email@domain.com or a portion of an e-mail address with a wildcard," " such as *@domain.com or user@*." -msgstr "" +msgstr "您可以输入像 email@domain.com 的整个邮件地址, 或者含通配符地址如 *@domain.com 或者 user@*." #: templates/helpdesk/email_ignore_del.html:3 msgid "Delete Ignored E-Mail Address" -msgstr "" +msgstr "删除已忽略邮件地址" #: templates/helpdesk/email_ignore_del.html:6 msgid "Un-Ignore E-Mail Address" -msgstr "" +msgstr "取消忽略邮件地址" #: templates/helpdesk/email_ignore_del.html:8 #, python-format @@ -1357,20 +1358,20 @@ msgid "" "Are you sure you wish to stop removing this email address " "(%(email_address)s) and allow their e-mails to automatically create" " tickets in your system? You can re-add this e-mail address at any time." -msgstr "" +msgstr "确认停止删除该邮件地址 (%(email_address)s) 且允许邮件在系统自动创建工单?您可以以后重新添加这个邮件地址。" #: templates/helpdesk/email_ignore_del.html:10 msgid "Keep Ignoring It" -msgstr "" +msgstr "保持忽略" #: templates/helpdesk/email_ignore_del.html:12 msgid "Stop Ignoring It" -msgstr "" +msgstr "停止忽略" #: templates/helpdesk/email_ignore_list.html:3 #: templates/helpdesk/email_ignore_list.html:12 msgid "Ignored E-Mail Addresses" -msgstr "" +msgstr "忽略邮件地址" #: templates/helpdesk/email_ignore_list.html:5 msgid "" @@ -1378,87 +1379,87 @@ msgid "" "

Ignored E-Mail Addresses

\n" "\n" "

The following e-mail addresses are currently being ignored by the incoming e-mail processor. You can add a new e-mail address to the list or delete any of the items below as required.

" -msgstr "" +msgstr "\n

忽略邮件地址

\n\n

一下邮件地址当前已被忽略。您可以 添加新的邮件地址到列表 或者根据需要删除下面的项

" #: templates/helpdesk/email_ignore_list.html:13 msgid "Date Added" -msgstr "" +msgstr "已添加日期" #: templates/helpdesk/email_ignore_list.html:13 msgid "Keep in mailbox?" -msgstr "" +msgstr "保留在邮箱" #: templates/helpdesk/email_ignore_list.html:21 #: templates/helpdesk/ticket_list.html:260 msgid "All" -msgstr "" +msgstr "所有" #: templates/helpdesk/email_ignore_list.html:22 msgid "Keep" -msgstr "" +msgstr "保留" #: templates/helpdesk/email_ignore_list.html:29 msgid "" "Note: If the 'Keep' option is not selected, emails sent " "from that address will be deleted permanently." -msgstr "" +msgstr "注意 如果'保留'选项没有选中, 那个邮箱发送的邮件将被永久删除." #: templates/helpdesk/followup_edit.html:2 msgid "Edit followup" -msgstr "" +msgstr "编辑跟进" #: templates/helpdesk/followup_edit.html:9 msgid "Edit FollowUp" -msgstr "" +msgstr "编辑跟进" #: templates/helpdesk/followup_edit.html:14 msgid "Reassign ticket:" -msgstr "" +msgstr "重新分配工单" #: templates/helpdesk/followup_edit.html:16 msgid "Title:" -msgstr "" +msgstr "标题" #: templates/helpdesk/followup_edit.html:18 msgid "Comment:" -msgstr "" +msgstr "评论" #: templates/helpdesk/kb_category.html:4 #: templates/helpdesk/kb_category.html:12 #, python-format msgid "Knowledgebase Category: %(kbcat)s" -msgstr "" +msgstr "知识库分类: %(kbcat)s" #: templates/helpdesk/kb_category.html:6 #, python-format msgid "You are viewing all items in the %(kbcat)s category." -msgstr "" +msgstr "您正在查看 %(kbcat)s 分类的所有项." #: templates/helpdesk/kb_category.html:13 msgid "Article" -msgstr "" +msgstr "文章" #: templates/helpdesk/kb_index.html:4 templates/helpdesk/navigation.html:21 #: templates/helpdesk/navigation.html:71 msgid "Knowledgebase" -msgstr "" +msgstr "知识库" #: templates/helpdesk/kb_index.html:6 msgid "" "We have listed a number of knowledgebase articles for your perusal in the " "following categories. Please check to see if any of these articles address " "your problem prior to opening a support ticket." -msgstr "" +msgstr "我们列出了以下类别的知识库文章供您查阅。在开支持工单的时候,请检查是否有文章解决了该文题" #: templates/helpdesk/kb_index.html:10 #: templates/helpdesk/public_homepage.html:10 msgid "Knowledgebase Categories" -msgstr "" +msgstr "知识库分类" #: templates/helpdesk/kb_item.html:4 #, python-format msgid "Knowledgebase: %(item)s" -msgstr "" +msgstr "知识库: %(item)s" #: templates/helpdesk/kb_item.html:16 #, python-format @@ -1466,122 +1467,122 @@ msgid "" "View other %(category_title)s " "articles, or continue viewing other knowledgebase " "articles." -msgstr "" +msgstr "查看 其他 %(category_title)s 文章, 或继续 查看其他知识库文章." #: templates/helpdesk/kb_item.html:18 msgid "Feedback" -msgstr "" +msgstr "反馈" #: templates/helpdesk/kb_item.html:20 msgid "" "We give our users an opportunity to vote for items that they believe have " "helped them out, in order for us to better serve future customers. We would " "appreciate your feedback on this article. Did you find it useful?" -msgstr "" +msgstr "我们让用户可以为他们感觉有帮助的项投票, 这样我们更好服务未来的客户。我们感谢您对该文的反馈, 您觉得该文有帮助吗?" #: templates/helpdesk/kb_item.html:23 msgid "This article was useful to me" -msgstr "" +msgstr "该文有帮助" #: templates/helpdesk/kb_item.html:24 msgid "This article was not useful to me" -msgstr "" +msgstr "该文对我 没有 帮助" #: templates/helpdesk/kb_item.html:27 msgid "The results of voting by other readers of this article are below:" -msgstr "" +msgstr "其他读者对该文的投票结果如下" #: templates/helpdesk/kb_item.html:30 #, python-format msgid "Recommendations: %(recommendations)s" -msgstr "" +msgstr "推荐: %(recommendations)s" #: templates/helpdesk/kb_item.html:31 #, python-format msgid "Votes: %(votes)s" -msgstr "" +msgstr "投票: %(votes)s" #: templates/helpdesk/kb_item.html:32 #, python-format msgid "Overall Rating: %(score)s" -msgstr "" +msgstr "总体评价: %(score)s" #: templates/helpdesk/navigation.html:16 templates/helpdesk/navigation.html:64 msgid "Dashboard" -msgstr "" +msgstr "仪表盘" #: templates/helpdesk/navigation.html:18 msgid "New Ticket" -msgstr "" +msgstr "新工单" #: templates/helpdesk/navigation.html:19 msgid "Stats" -msgstr "" +msgstr "统计" #: templates/helpdesk/navigation.html:24 msgid "Saved Query" -msgstr "" +msgstr "已保存查询" #: templates/helpdesk/navigation.html:39 msgid "Change password" -msgstr "" +msgstr "修改密码" #: templates/helpdesk/navigation.html:50 msgid "Search..." -msgstr "" +msgstr "搜索..." #: templates/helpdesk/navigation.html:50 msgid "Enter a keyword, or a ticket number to jump straight to that ticket." -msgstr "" +msgstr "输入关键字,或者工单号直接进入工单" #: templates/helpdesk/navigation.html:73 msgid "Logout" -msgstr "" +msgstr "登出" #: templates/helpdesk/navigation.html:73 msgid "Log In" -msgstr "" +msgstr "登入" #: templates/helpdesk/public_change_language.html:2 #: templates/helpdesk/public_homepage.html:73 #: templates/helpdesk/public_view_form.html:4 #: templates/helpdesk/public_view_ticket.html:2 msgid "View a Ticket" -msgstr "" +msgstr "查看工单" #: templates/helpdesk/public_change_language.html:5 msgid "Change the display language" -msgstr "" +msgstr "修改显示语言" #: templates/helpdesk/public_homepage.html:6 msgid "Knowledgebase Articles" -msgstr "" +msgstr "知识库文章" #: templates/helpdesk/public_homepage.html:28 msgid "All fields are required." -msgstr "" +msgstr "所有字段必须" #: templates/helpdesk/public_homepage.html:66 msgid "Please use button at upper right to login first." -msgstr "" +msgstr "请用右上角按钮先登录" #: templates/helpdesk/public_homepage.html:82 #: templates/helpdesk/public_view_form.html:15 msgid "Your E-mail Address" -msgstr "" +msgstr "您的邮箱地址" #: templates/helpdesk/public_homepage.html:86 #: templates/helpdesk/public_view_form.html:19 msgid "View Ticket" -msgstr "" +msgstr "查看工单" #: templates/helpdesk/public_spam.html:4 msgid "Unable To Open Ticket" -msgstr "" +msgstr "无法打开工单" #: templates/helpdesk/public_spam.html:5 msgid "Sorry, but there has been an error trying to submit your ticket." -msgstr "" +msgstr "对不起,提交工单出错" #: templates/helpdesk/public_spam.html:6 msgid "" @@ -1589,113 +1590,113 @@ msgid "" "unable to save it. If this is not spam, please press back and re-type your " "message. Be careful to avoid sounding 'spammy', and if you have heaps of " "links please try removing them if possible." -msgstr "" +msgstr "系统已将您的提交标注为 垃圾广告, 因此不被保存。如果不是垃圾广告, 请按回退且重新输入消息。 注意避免带垃圾广告的嫌疑, 如果有太多链接请先移除." #: templates/helpdesk/public_spam.html:7 msgid "" "We are sorry for any inconvenience, however this check is required to avoid " "our helpdesk resources being overloaded by spammers." -msgstr "" +msgstr "为您带来不便我们表示道歉。 不过为了避免系统被广告垃圾过载,此检查是必须的。" #: templates/helpdesk/public_view_form.html:8 msgid "Error:" -msgstr "" +msgstr "错误:" #: templates/helpdesk/public_view_ticket.html:9 #, python-format msgid "Queue: %(queue_name)s" -msgstr "" +msgstr "待办:%(queue_name)s" #: templates/helpdesk/public_view_ticket.html:13 #: templates/helpdesk/ticket_desc_table.html:32 msgid "Submitted On" -msgstr "" +msgstr "提交于" #: templates/helpdesk/public_view_ticket.html:35 msgid "Tags" -msgstr "" +msgstr "标注" #: templates/helpdesk/public_view_ticket.html:48 #: templates/helpdesk/ticket_desc_table.html:26 msgid "Accept" -msgstr "" +msgstr "接受" #: templates/helpdesk/public_view_ticket.html:48 #: templates/helpdesk/ticket_desc_table.html:26 msgid "Accept and Close" -msgstr "" +msgstr "接受并关闭" #: templates/helpdesk/public_view_ticket.html:57 #: templates/helpdesk/ticket.html:66 msgid "Follow-Ups" -msgstr "" +msgstr "跟进" #: templates/helpdesk/public_view_ticket.html:65 #: templates/helpdesk/ticket.html:100 #, python-format msgid "Changed %(field)s from %(old_value)s to %(new_value)s." -msgstr "" +msgstr "更改 %(field)s 自 %(old_value)s 到 %(new_value)s." #: templates/helpdesk/report_index.html:3 #: templates/helpdesk/report_index.html:6 #: templates/helpdesk/report_output.html:3 #: templates/helpdesk/report_output.html:16 msgid "Reports & Statistics" -msgstr "" +msgstr "报告 & 统计" #: templates/helpdesk/report_index.html:9 msgid "You haven't created any tickets yet, so you cannot run any reports." -msgstr "" +msgstr "您还没有创建任何工单,因此您不能运行任何报表" #: templates/helpdesk/report_index.html:13 msgid "Reports By User" -msgstr "" +msgstr "按用户报表" #: templates/helpdesk/report_index.html:15 #: templates/helpdesk/report_index.html:24 msgid "by Priority" -msgstr "" +msgstr "按优先级" #: templates/helpdesk/report_index.html:16 msgid "by Queue" -msgstr "" +msgstr "按待办" #: templates/helpdesk/report_index.html:17 #: templates/helpdesk/report_index.html:25 msgid "by Status" -msgstr "" +msgstr "按状态" #: templates/helpdesk/report_index.html:18 #: templates/helpdesk/report_index.html:26 msgid "by Month" -msgstr "" +msgstr "按月" #: templates/helpdesk/report_index.html:22 msgid "Reports By Queue" -msgstr "" +msgstr "按待办报表" #: templates/helpdesk/report_index.html:27 views/staff.py:1049 msgid "Days until ticket closed by Month" -msgstr "" +msgstr "按月,工单关闭的天数" #: templates/helpdesk/report_output.html:19 msgid "" "You can run this query on filtered data by using one of your saved queries." -msgstr "" +msgstr "您可以用您保存的查询来查询数据" #: templates/helpdesk/report_output.html:21 msgid "Select Query:" -msgstr "" +msgstr "选择查询:" #: templates/helpdesk/report_output.html:26 msgid "Filter Report" -msgstr "" +msgstr "过滤报表" #: templates/helpdesk/report_output.html:29 msgid "" "Want to filter this report to just show a subset of data? Go to the Ticket " "List, filter your query, and save your query." -msgstr "" +msgstr "想要过滤次报表仅显示子集吗?到工单列表,过滤您的查询,并保存" #: templates/helpdesk/rss_list.html:6 msgid "" @@ -1703,29 +1704,29 @@ msgid "" "preferred RSS software. With the exception of the 'Latest Activity' feed, " "all feeds provide information only on Open and Reopened cases. This ensures " "your RSS reader isn't full of information about closed or historical tasks." -msgstr "" +msgstr "以下RSS种子您可以用您喜欢的软件来监控。除了‘最近活动’种子,所有的种子仅提供打开和重新打开的信息,确保您的RSS阅读器不会满是已经关闭的或者历史的任务。" #: templates/helpdesk/rss_list.html:10 msgid "" "A summary of your open tickets - useful for getting alerted to new tickets " "opened for you" -msgstr "" +msgstr "您开放工单的摘要 - 当新工单开放给你时您能获得提示" #: templates/helpdesk/rss_list.html:12 msgid "Latest Activity" -msgstr "" +msgstr "最近活动" #: templates/helpdesk/rss_list.html:13 msgid "" "A summary of all helpdesk activity - including comments, emails, " "attachments, and more" -msgstr "" +msgstr "所有helpdesk活动的摘要 - 包括评论, 邮件, 附件等" #: templates/helpdesk/rss_list.html:16 msgid "" "All unassigned tickets - useful for being alerted to new tickets opened by " "the public via the web or via e-mail" -msgstr "" +msgstr "所有未分配的工单 - 当公众通过web或者email打开新工单时获得提示" #: templates/helpdesk/rss_list.html:19 msgid "" @@ -1733,145 +1734,145 @@ msgid "" "all tickets, for each of the queues in your helpdesk. For example, if you " "manage the staff who utilise a particular queue, this may be used to view " "new tickets coming into that queue." -msgstr "" +msgstr "这些RSS种子让你能看到您自己工单的摘要, 或者所有待办的工单摘要。比如, 如果您管理的员工用了一个特定的待办, 这可以用来查看该待办下的新工单。" #: templates/helpdesk/rss_list.html:23 msgid "Per-Queue Feeds" -msgstr "" +msgstr "根据待办的种子" #: templates/helpdesk/rss_list.html:24 msgid "All Open Tickets" -msgstr "" +msgstr "所有开放的工单" #: templates/helpdesk/rss_list.html:30 msgid "Open Tickets" -msgstr "" +msgstr "开放工单" #: templates/helpdesk/system_settings.html:3 msgid "Change System Settings" -msgstr "" +msgstr "更改系统设置" #: templates/helpdesk/system_settings.html:8 msgid "The following items can be maintained by you or other superusers:" -msgstr "" +msgstr "以下项可以由您或者其他超级用户来维护" #: templates/helpdesk/system_settings.html:11 msgid "E-Mail Ignore list" -msgstr "" +msgstr "邮件忽略列表" #: templates/helpdesk/system_settings.html:12 msgid "Maintain Queues" -msgstr "" +msgstr "维护待办" #: templates/helpdesk/system_settings.html:13 msgid "Maintain Pre-Set Replies" -msgstr "" +msgstr "维护预设回复" #: templates/helpdesk/system_settings.html:14 msgid "Maintain Knowledgebase Categories" -msgstr "" +msgstr "维护知识库分类" #: templates/helpdesk/system_settings.html:15 msgid "Maintain Knowledgebase Items" -msgstr "" +msgstr "维护知识库项" #: templates/helpdesk/system_settings.html:16 msgid "Maintain E-Mail Templates" -msgstr "" +msgstr "维护邮件模板" #: templates/helpdesk/system_settings.html:17 msgid "Maintain Users" -msgstr "" +msgstr "维护用户" #: templates/helpdesk/ticket.html:2 msgid "View Ticket Details" -msgstr "" +msgstr "查看工单详情" #: templates/helpdesk/ticket.html:34 msgid "Attach another File" -msgstr "" +msgstr "附加另一个文件" #: templates/helpdesk/ticket.html:34 templates/helpdesk/ticket.html.py:200 msgid "Add Another File" -msgstr "" +msgstr "添加另一个文件" #: templates/helpdesk/ticket.html:73 templates/helpdesk/ticket.html.py:86 msgid "Private" -msgstr "" +msgstr "私有" #: templates/helpdesk/ticket.html:119 msgid "Respond to this ticket" -msgstr "" +msgstr "响应工单" #: templates/helpdesk/ticket.html:126 msgid "Use a Pre-set Reply" -msgstr "" +msgstr "使用预设回复" #: templates/helpdesk/ticket.html:126 templates/helpdesk/ticket.html.py:166 msgid "(Optional)" -msgstr "" +msgstr "(可选)" #: templates/helpdesk/ticket.html:128 msgid "" "Selecting a pre-set reply will over-write your comment below. You can then " "modify the pre-set reply to your liking before saving this update." -msgstr "" +msgstr "选择预设回复将覆盖您下面的评论. 您可以保存本更新之后,修改预设回复。" #: templates/helpdesk/ticket.html:131 msgid "Comment / Resolution" -msgstr "" +msgstr "评论/方案" #: templates/helpdesk/ticket.html:133 msgid "" "You can insert ticket and queue details in your message. For more " "information, see the context help page." -msgstr "" +msgstr "您可以插入工单到您的消息. 更多信息,查看上下文帮助页." #: templates/helpdesk/ticket.html:136 msgid "" "This ticket cannot be resolved or closed until the tickets it depends on are" " resolved." -msgstr "" +msgstr "此工单不能解决或者关闭, 除非其依赖的工单被解决" #: templates/helpdesk/ticket.html:166 msgid "Is this update public?" -msgstr "" +msgstr "是否为公开更新?" #: templates/helpdesk/ticket.html:168 msgid "" "If this is public, the submitter will be e-mailed your comment or " "resolution." -msgstr "" +msgstr "如果公开, 提交者将收到您评论或者方案的邮件" #: templates/helpdesk/ticket.html:172 msgid "Change Further Details »" -msgstr "" +msgstr "变更更多详情" #: templates/helpdesk/ticket.html:181 templates/helpdesk/ticket_list.html:68 #: templates/helpdesk/ticket_list.html:97 #: templates/helpdesk/ticket_list.html:225 msgid "Owner" -msgstr "" +msgstr "所有者" #: templates/helpdesk/ticket.html:182 msgid "Unassign" -msgstr "" +msgstr "未分配" #: templates/helpdesk/ticket.html:193 msgid "Attach File(s) »" -msgstr "" +msgstr " 附加文件(s) »" #: templates/helpdesk/ticket.html:199 msgid "Attach a File" -msgstr "" +msgstr "附加一个文件" #: templates/helpdesk/ticket.html:207 msgid "Update This Ticket" -msgstr "" +msgstr "更新此工单" #: templates/helpdesk/ticket_cc_add.html:3 msgid "Add Ticket CC" -msgstr "" +msgstr "添加工单CC" #: templates/helpdesk/ticket_cc_add.html:5 msgid "" @@ -1879,15 +1880,15 @@ msgid "" "

Add Ticket CC

\n" "\n" "

To automatically send an email to a user or e-mail address when this ticket is updated, select the user or enter an e-mail address below.

" -msgstr "" +msgstr "\n

添加工单CC

\n\n

当工单更新时要自动发送邮件给用户或者某个地址, 选择用户或者输入邮件地址

" #: templates/helpdesk/ticket_cc_add.html:21 msgid "Save Ticket CC" -msgstr "" +msgstr "保存工单CC" #: templates/helpdesk/ticket_cc_del.html:3 msgid "Delete Ticket CC" -msgstr "" +msgstr "删除工单CC" #: templates/helpdesk/ticket_cc_del.html:5 #, python-format @@ -1896,21 +1897,21 @@ msgid "" "

Delete Ticket CC

\n" "\n" "

Are you sure you wish to delete this email address (%(email_address)s) from the CC list for this ticket? They will stop receiving updates.

\n" -msgstr "" +msgstr "\n

删除工单CC

\n\n

确认从CC列表删除此邮件地址 (%(email_address)s) ? 他们将不会再收到更新.

\n" #: templates/helpdesk/ticket_cc_del.html:11 #: templates/helpdesk/ticket_dependency_del.html:11 msgid "Don't Delete" -msgstr "" +msgstr "不要删除" #: templates/helpdesk/ticket_cc_del.html:13 #: templates/helpdesk/ticket_dependency_del.html:13 msgid "Yes, Delete" -msgstr "" +msgstr "是,删除" #: templates/helpdesk/ticket_cc_list.html:3 msgid "Ticket CC Settings" -msgstr "" +msgstr "工单CC设置" #: templates/helpdesk/ticket_cc_list.html:5 #, python-format @@ -1921,28 +1922,28 @@ msgid "" "

The following people will receive an e-mail whenever %(ticket_title)s is updated. Some people can also view or edit the ticket via the public ticket views.

\n" "\n" "

You can add a new e-mail address to the list or delete any of the items below as required.

" -msgstr "" +msgstr "\n

工单CC设置

\n\n

每当%(ticket_title)s更新时,以下人将收到邮件. 有些人也能通过公开工单视图查看或者编辑工单.

\n\n

你可以 添加新邮件地址到列表 或者根据需要删除以下\n项.

" #: templates/helpdesk/ticket_cc_list.html:14 msgid "Ticket CC List" -msgstr "" +msgstr "工单CC列表" #: templates/helpdesk/ticket_cc_list.html:15 msgid "View?" -msgstr "" +msgstr "查看?" #: templates/helpdesk/ticket_cc_list.html:15 msgid "Update?" -msgstr "" +msgstr "更新?" #: templates/helpdesk/ticket_cc_list.html:29 #, python-format msgid "Return to %(ticket_title)s" -msgstr "" +msgstr "返回到 %(ticket_title)s" #: templates/helpdesk/ticket_dependency_add.html:3 msgid "Add Ticket Dependency" -msgstr "" +msgstr "添加工单依赖" #: templates/helpdesk/ticket_dependency_add.html:5 msgid "" @@ -1950,15 +1951,15 @@ msgid "" "

Add Ticket Dependency

\n" "\n" "

Adding a dependency will stop you resolving this ticket until the dependent ticket has been resolved or closed.

" -msgstr "" +msgstr "\n

添加工单依赖

\n\n

添加以来将停止您解决这个工单, 直到依赖的工单被解决或者关闭.

" #: templates/helpdesk/ticket_dependency_add.html:21 msgid "Save Ticket Dependency" -msgstr "" +msgstr "保存工单依赖" #: templates/helpdesk/ticket_dependency_del.html:3 msgid "Delete Ticket Dependency" -msgstr "" +msgstr "删除工单依赖" #: templates/helpdesk/ticket_dependency_del.html:5 msgid "" @@ -1966,278 +1967,278 @@ msgid "" "

Delete Ticket Dependency

\n" "\n" "

Are you sure you wish to remove the dependency on this ticket?

\n" -msgstr "" +msgstr "\n

删除工单依赖

\n\n

您确认删除此工单的依赖?

\n" #: templates/helpdesk/ticket_desc_table.html:7 msgid "Unhold" -msgstr "" +msgstr "解除暂停" #: templates/helpdesk/ticket_desc_table.html:7 msgid "Hold" -msgstr "" +msgstr "暂停" #: templates/helpdesk/ticket_desc_table.html:9 #, python-format msgid "Queue: %(queue)s" -msgstr "" +msgstr "待办: %(queue)s" #: templates/helpdesk/ticket_desc_table.html:37 msgid "Assigned To" -msgstr "" +msgstr "分配给" #: templates/helpdesk/ticket_desc_table.html:43 msgid "Ignore" -msgstr "" +msgstr "忽略" #: templates/helpdesk/ticket_desc_table.html:52 msgid "Copies To" -msgstr "" +msgstr "拷贝至" #: templates/helpdesk/ticket_desc_table.html:53 msgid "Manage" -msgstr "" +msgstr "管理" #: templates/helpdesk/ticket_desc_table.html:53 msgid "" "Click here to add / remove people who should receive an e-mail whenever this" " ticket is updated." -msgstr "" +msgstr "点这里添加/移除此工单更新时收到邮件的人" #: templates/helpdesk/ticket_desc_table.html:53 msgid "Subscribe" -msgstr "" +msgstr "订阅" #: templates/helpdesk/ticket_desc_table.html:53 msgid "" "Click here to subscribe yourself to this ticket, if you want to receive an " "e-mail whenever this ticket is updated." -msgstr "" +msgstr "点这里订阅此工单,当工单更新您将收到邮件" #: templates/helpdesk/ticket_desc_table.html:57 msgid "Dependencies" -msgstr "" +msgstr "依赖" #: templates/helpdesk/ticket_desc_table.html:59 msgid "" "This ticket cannot be resolved until the following ticket(s) are resolved" -msgstr "" +msgstr "除非以下工单(s)被解决,此工单不能解决" #: templates/helpdesk/ticket_desc_table.html:60 msgid "Remove Dependency" -msgstr "" +msgstr "移除依赖" #: templates/helpdesk/ticket_desc_table.html:63 msgid "This ticket has no dependencies." -msgstr "" +msgstr "此工单无依赖" #: templates/helpdesk/ticket_desc_table.html:65 msgid "Add Dependency" -msgstr "" +msgstr "添加依赖" #: templates/helpdesk/ticket_desc_table.html:65 msgid "" "Click on 'Add Dependency', if you want to make this ticket dependent on " "another ticket. A ticket may not be closed until all tickets it depends on " "are closed." -msgstr "" +msgstr "如果要让工单依赖其他工单,点击'添加依赖'。除非依赖的工单关闭,原工单不能关闭。" #: templates/helpdesk/ticket_list.html:59 msgid "Change Query" -msgstr "" +msgstr "更改查询" #: templates/helpdesk/ticket_list.html:67 #: templates/helpdesk/ticket_list.html:79 msgid "Sorting" -msgstr "" +msgstr "排序" #: templates/helpdesk/ticket_list.html:71 #: templates/helpdesk/ticket_list.html:139 msgid "Keywords" -msgstr "" +msgstr "关键字" #: templates/helpdesk/ticket_list.html:72 msgid "Date Range" -msgstr "" +msgstr "日期范围" #: templates/helpdesk/ticket_list.html:100 msgid "Reverse" -msgstr "" +msgstr "逆序" #: templates/helpdesk/ticket_list.html:102 msgid "Ordering applied to tickets" -msgstr "" +msgstr "排序应用到工单" #: templates/helpdesk/ticket_list.html:107 msgid "Owner(s)" -msgstr "" +msgstr "所有者" #: templates/helpdesk/ticket_list.html:111 msgid "(ME)" -msgstr "" +msgstr "(我)" #: templates/helpdesk/ticket_list.html:115 msgid "Ctrl-Click to select multiple options" -msgstr "" +msgstr "Ctrol-Click选择多项" #: templates/helpdesk/ticket_list.html:120 msgid "Queue(s)" -msgstr "" +msgstr "待办(s)" #: templates/helpdesk/ticket_list.html:121 #: templates/helpdesk/ticket_list.html:127 msgid "Ctrl-click to select multiple options" -msgstr "" +msgstr "Ctrol-click选择多项" #: templates/helpdesk/ticket_list.html:126 msgid "Status(es)" -msgstr "" +msgstr "状态(es)" #: templates/helpdesk/ticket_list.html:132 msgid "Date (From)" -msgstr "" +msgstr "日期(从)" #: templates/helpdesk/ticket_list.html:133 msgid "Date (To)" -msgstr "" +msgstr "日期(至)" #: templates/helpdesk/ticket_list.html:134 msgid "Use YYYY-MM-DD date format, eg 2011-05-29" -msgstr "" +msgstr "用 YYYY-MM-DD 日期格式, 如 2011-05-29" #: templates/helpdesk/ticket_list.html:140 msgid "" "Keywords are case-insensitive, and will be looked for in the title, body and" " submitter fields." -msgstr "" +msgstr "关键字大小写敏感, 将在标题,内容和提交者中被查找" #: templates/helpdesk/ticket_list.html:144 msgid "Apply Filter" -msgstr "" +msgstr "应用过滤" #: templates/helpdesk/ticket_list.html:146 #, python-format msgid "You are currently viewing saved query \"%(query_name)s\"." -msgstr "" +msgstr "您正在查看保存的查询 \"%(query_name)s\"." #: templates/helpdesk/ticket_list.html:149 #, python-format msgid "" "Run a report on this " "query to see stats and charts for the data listed below." -msgstr "" +msgstr " 在本查询 运行报表 查看下面的数据统计和图表." #: templates/helpdesk/ticket_list.html:162 #: templates/helpdesk/ticket_list.html:181 msgid "Save Query" -msgstr "" +msgstr "保存查询" #: templates/helpdesk/ticket_list.html:172 msgid "" "This name appears in the drop-down list of saved queries. If you share your " "query, other users will see this name, so choose something clear and " "descriptive!" -msgstr "" +msgstr "此名称出现在已保存查询的下拉列表, 如果您要共享查询,其他用户可以看到这个名字, 因此请选择清晰和描述性的名字" #: templates/helpdesk/ticket_list.html:174 msgid "Shared?" -msgstr "" +msgstr "共享?" #: templates/helpdesk/ticket_list.html:175 msgid "Yes, share this query with other users." -msgstr "" +msgstr "是,共享查询给其他用户" #: templates/helpdesk/ticket_list.html:176 msgid "" "If you share this query, it will be visible by all other logged-in " "users." -msgstr "" +msgstr "如果您共享此查询,它将被 所有 其他登录的用户所见." #: templates/helpdesk/ticket_list.html:195 msgid "Use Saved Query" -msgstr "" +msgstr "使用保存的查询" #: templates/helpdesk/ticket_list.html:202 msgid "Query" -msgstr "" +msgstr "查询" #: templates/helpdesk/ticket_list.html:207 msgid "Run Query" -msgstr "" +msgstr "运行查询" #: templates/helpdesk/ticket_list.html:240 msgid "No Tickets Match Your Selection" -msgstr "" +msgstr "没有匹配到您选择的工单" #: templates/helpdesk/ticket_list.html:247 msgid "Previous" -msgstr "" +msgstr "向前" #: templates/helpdesk/ticket_list.html:251 #, python-format msgid "Page %(ticket_num)s of %(num_pages)s." -msgstr "" +msgstr "页 %(ticket_num)s of %(num_pages)s." #: templates/helpdesk/ticket_list.html:255 msgid "Next" -msgstr "" +msgstr "下一个" #: templates/helpdesk/ticket_list.html:260 msgid "Select:" -msgstr "" +msgstr "选择" #: templates/helpdesk/ticket_list.html:260 msgid "None" -msgstr "" +msgstr "空" #: templates/helpdesk/ticket_list.html:260 msgid "Inverse" -msgstr "" +msgstr "倒序" #: templates/helpdesk/ticket_list.html:262 msgid "With Selected Tickets:" -msgstr "" +msgstr "对选中的工单" #: templates/helpdesk/ticket_list.html:262 msgid "Take (Assign to me)" -msgstr "" +msgstr "拿走(分配给我)" #: templates/helpdesk/ticket_list.html:262 msgid "Close" -msgstr "" +msgstr "关闭" #: templates/helpdesk/ticket_list.html:262 msgid "Close (Don't Send E-Mail)" -msgstr "" +msgstr "关闭(不要发送邮件)" #: templates/helpdesk/ticket_list.html:262 msgid "Close (Send E-Mail)" -msgstr "" +msgstr "关闭(发送邮件)" #: templates/helpdesk/ticket_list.html:262 msgid "Assign To" -msgstr "" +msgstr "分配给" #: templates/helpdesk/ticket_list.html:262 msgid "Nobody (Unassign)" -msgstr "" +msgstr "没有人(未分配)" #: templates/helpdesk/user_settings.html:3 msgid "Change User Settings" -msgstr "" +msgstr "改变用户设置" #: templates/helpdesk/user_settings.html:8 msgid "" "Use the following options to change the way your helpdesk system works for " "you. These settings do not impact any other user." -msgstr "" +msgstr "使用以下选项更改您系统的工作方式.这些设置不影响其他用户" #: templates/helpdesk/user_settings.html:14 msgid "Save Options" -msgstr "" +msgstr "保存选项" #: templates/helpdesk/registration/logged_out.html:2 msgid "Logged Out" -msgstr "" +msgstr "等出" #: templates/helpdesk/registration/logged_out.html:4 msgid "" @@ -2246,105 +2247,105 @@ msgid "" "\n" "

Thanks for being here. Hopefully you've helped resolve a few tickets and make the world a better place.

\n" "\n" -msgstr "" +msgstr "\n

登出

\n\n

谢谢光顾,希望您帮助解决了一些工单,让世界更美好.

\n\n" #: templates/helpdesk/registration/login.html:2 msgid "Helpdesk Login" -msgstr "" +msgstr "Helpdesk 登录" #: templates/helpdesk/registration/login.html:14 msgid "To log in simply enter your username and password below." -msgstr "" +msgstr "输入您的用户名密码登录" #: templates/helpdesk/registration/login.html:17 msgid "Your username and password didn't match. Please try again." -msgstr "" +msgstr "您的用户名/密码不匹配,再试一次" #: templates/helpdesk/registration/login.html:20 msgid "Login" -msgstr "" +msgstr "登录" #: views/feeds.py:39 #, python-format msgid "Helpdesk: Open Tickets in queue %(queue)s for %(username)s" -msgstr "" +msgstr "Helpdesk: 为用户 %(username)s在待办 %(queue)s 打开工单" #: views/feeds.py:44 #, python-format msgid "Helpdesk: Open Tickets for %(username)s" -msgstr "" +msgstr "Helpdesk: 为用户 %(username)s 打开工单" #: views/feeds.py:50 #, python-format msgid "Open and Reopened Tickets in queue %(queue)s for %(username)s" -msgstr "" +msgstr "在待办 %(queue)s 为用户 %(username)s 打开或者重开工单" #: views/feeds.py:55 #, python-format msgid "Open and Reopened Tickets for %(username)s" -msgstr "" +msgstr "为用户 %(username)s 打开或者重开工单" #: views/feeds.py:102 msgid "Helpdesk: Unassigned Tickets" -msgstr "" +msgstr "Helpdesk: 未分配工单" #: views/feeds.py:103 msgid "Unassigned Open and Reopened tickets" -msgstr "" +msgstr "未分配的开放或者重新打开的工单" #: views/feeds.py:128 msgid "Helpdesk: Recent Followups" -msgstr "" +msgstr "Helpdesk: 最近跟进人" #: views/feeds.py:129 msgid "" "Recent FollowUps, such as e-mail replies, comments, attachments and " "resolutions" -msgstr "" +msgstr "最近更近,比如email回复,评论,附件和方案" #: views/feeds.py:144 #, python-format msgid "Helpdesk: Open Tickets in queue %(queue)s" -msgstr "" +msgstr "Helpdesk: 代办 %(queue)s 中的开放工单 " #: views/feeds.py:149 #, python-format msgid "Open and Reopened Tickets in queue %(queue)s" -msgstr "" +msgstr "在 %(queue)s 中打开和重新打开的工单" #: views/public.py:89 msgid "Invalid ticket ID or e-mail address. Please try again." -msgstr "" +msgstr "无效工单ID或者邮件地址, 请重试" #: views/public.py:107 msgid "Submitter accepted resolution and closed ticket" -msgstr "" +msgstr "提交者接受方案并关闭了工单" #: views/staff.py:235 msgid "Accepted resolution and closed ticket" -msgstr "" +msgstr "已接受方案并关闭的工单" #: views/staff.py:369 #, python-format msgid "Assigned to %(username)s" -msgstr "" +msgstr "分配给 %(username)s" #: views/staff.py:392 msgid "Updated" -msgstr "" +msgstr "已更新" #: views/staff.py:577 #, python-format msgid "Assigned to %(username)s in bulk update" -msgstr "" +msgstr "在集体更新中分配给 %(username)s in bulk update" #: views/staff.py:582 msgid "Unassigned in bulk update" -msgstr "" +msgstr "在集体更新中未分配" #: views/staff.py:587 views/staff.py:592 msgid "Closed in bulk update" -msgstr "" +msgstr "在集体更新中已关闭" #: views/staff.py:806 msgid "" @@ -2354,40 +2355,40 @@ msgid "" "For more information, read the Django Documentation on string matching in SQLite." -msgstr "" +msgstr "

注意: 因为数据库,您的关键字查找大小写敏感,意味着搜索 精确. 切换到不同的数据库系统, 你可以获得更好的搜索, 更多信息,参考 Django Documentation on string matching in SQLite." #: views/staff.py:910 msgid "Ticket taken off hold" -msgstr "" +msgstr "从暂停区拿走的工单" #: views/staff.py:913 msgid "Ticket placed on hold" -msgstr "" +msgstr "待定工单" #: views/staff.py:1007 msgid "User by Priority" -msgstr "" +msgstr "用户按照优先级" #: views/staff.py:1013 msgid "User by Queue" -msgstr "" +msgstr "用户按照待办" #: views/staff.py:1019 msgid "User by Status" -msgstr "" +msgstr "用户按照状态" #: views/staff.py:1025 msgid "User by Month" -msgstr "" +msgstr "用户按月" #: views/staff.py:1031 msgid "Queue by Priority" -msgstr "" +msgstr "待办按照优先级" #: views/staff.py:1037 msgid "Queue by Status" -msgstr "" +msgstr "待办按照状态" #: views/staff.py:1043 msgid "Queue by Month" -msgstr "" +msgstr "待办按月" From 2007fcdc302fb5bed3843e058e5bd16880d0a4df Mon Sep 17 00:00:00 2001 From: jeson_peng Date: Sat, 9 Dec 2017 18:52:39 +0800 Subject: [PATCH 17/19] add translation for chinese, zh_Hans is the new locale support code for django --- helpdesk/fixtures/emailtemplate.json | 195 +- helpdesk/locale/zh_Hans/LC_MESSAGES/django.mo | Bin 0 -> 49187 bytes helpdesk/locale/zh_Hans/LC_MESSAGES/django.po | 2394 +++++++++++++++++ 3 files changed, 2586 insertions(+), 3 deletions(-) create mode 100644 helpdesk/locale/zh_Hans/LC_MESSAGES/django.mo create mode 100644 helpdesk/locale/zh_Hans/LC_MESSAGES/django.po diff --git a/helpdesk/fixtures/emailtemplate.json b/helpdesk/fixtures/emailtemplate.json index b271e30c..51b41589 100644 --- a/helpdesk/fixtures/emailtemplate.json +++ b/helpdesk/fixtures/emailtemplate.json @@ -1153,8 +1153,197 @@ "subject": "(Actualizado)", "locale": "es" } + }, + { + "pk": 97, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "已分配_CC", + "html": "

您好,

\r\n\r\n

温馨提示, {{ ticket.submitter_email }}的工单 {{ ticket.ticket }} ({{ ticket.title }}) {% if ticket.assigned_to %}已经分配给 {{ ticket.assigned_to }}{% else %}还未分配{% endif %}.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
", + "plain_text": "您好,\r\n\r\n温馨提示, {{ ticket.submitter_email }}提交的工单 {{ ticket.ticket }} (\"{{ ticket.title }}\") 已经 {% if ticket.assigned_to %}分配给 {{ ticket.assigned_to }}{% else %}未分配{% endif %}.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }}\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n", + "heading": "工单已分配", + "subject": "(已分配)", + "locale": "zh" + } + }, + { + "pk": 98, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "assigned_owner", + "html": "

您好,

\r\n\r\n

温馨提示, 提交者{{ ticket.submitter_email }}的工单 {{ ticket.ticket }} ({{ ticket.title }}) 已经分配给 you.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: YOU
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
", + "plain_text": "您好,\r\n\r\n温馨提示, 工单 提交者{{ ticket.submitter_email }}的工单{{ ticket.ticket }} 已经 分配给 you.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: YOU\r\n在线查看: {{ ticket.staff_url }}\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n", + "heading": "工单已分配给您", + "subject": "(已分配给您)", + "locale": "zh" + } + }, + { + "pk": 99, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "closed_cc", + "html": "

您好,

\r\n\r\n

工单 {{ ticket.title }} ('{{ ticket.title }}'){% if ticket.assigned_to %}, 分配给 {{ ticket.get_assigned_to }}{% endif %} 已经 关闭

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

提供的解决方案为:

\r\n\r\n
{{ resolution }}
\r\n\r\n

如果您想在线查看, 可以访问 {{ ticket.staff_url }}.

", + "plain_text": "您好,\r\n\r\n工单 {{ ticket.title }} (\"{{ ticket.title }}\"){% if ticket.assigned_to %}, 分配给 {{ ticket.assigned_to }}{% endif %} 已经 关闭\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n提供的解决方案为:\r\n\r\n{{ resolution }}\r\n\r\n", + "heading": "工单已关闭", + "subject": "(已关闭)", + "locale": "zh" + } + }, + { + "pk": 100, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "closed_owner", + "html": "

您好,

\r\n\r\n

以下分配给您的工单, 已经关闭

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

提供的解决方案为:

\r\n\r\n
{{ ticket.resolution }}
", + "plain_text": "您好,\r\n\r\n以下分配给您的工单, 已经关闭\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.staff_url }}.\r\n\r\n", + "heading": "工单已关闭", + "subject": "(已关闭)", + "locale": "zh" + } + }, + { + "pk": 101, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "closed_submitter", + "html": "

您好,

\r\n\r\n

您最近记录了主题为{{ ticket.title }}的工单. 本邮件确认工单已经 关闭

\r\n\r\n

已提供的方案为:

\r\n\r\n
{{ ticket.resolution }}
\r\n\r\n

如果您想在线查看, 可以访问 {{ ticket.ticket_url }}. 如果您认为还需要后续工作, 请用原标题回复此邮件.

", + "plain_text": "您好,\r\n\r\n您最近记录了主题为\"{{ ticket.title }}\"的工单. 本邮件确认工单已经 关闭\r\n\r\nI如果您认为还需要后续工作, 请用原标题回复此邮件.\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.ticket_url }}.\r\n\r\n提供的解决方案为:\r\n\r\n{{ ticket.resolution }}\r\n\r\n", + "heading": "工单已关闭", + "subject": "(已关闭)", + "locale": "zh" + } + }, + { + "pk": 102, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "escalated_cc", + "html": "

您好,

\r\n\r\n

温馨提示, 工单 {{ ticket.ticket }} ('{{ ticket.title }}') 已经 自动提升优先级.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
", + "plain_text": "您好,\r\n\r\n温馨提示, 工单 {{ ticket.ticket }} (\"{{ ticket.title }}\") 已经自动提升优先级.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n", + "heading": "工单 已经提升优先级", + "subject": "(已经提升优先级)", + "locale": "zh" + } + }, + { + "pk": 103, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "escalated_owner", + "html": "

您好,

\r\n\r\n

A 当前分配给您的工单已经自动提升优先级 as it 已经 打开时间超过预期.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
", + "plain_text": "您好,\r\n\r\nA 分配给您的当前工单已经自动提升优先级, 因为打开时间已经超过预期.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n请查看此工单并尽快提供解决方案.\r\n\r\n", + "heading": "工单 已分配给 您 已经提升优先级", + "subject": "(已经提升优先级)", + "locale": "zh" + } + }, + { + "pk": 104, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "escalated_submitter", + "html": "

您好,

\r\n\r\n

您最近记录了主题为{{ ticket.title }}的工单. 本邮件是想提醒您工单自动升级, 因为已经 打开时间超过预期.

\r\n\r\n

我们将尽快查看并提供解决方案.

\r\n\r\n

如果您想在线查看, 可以访问 {{ ticket.ticket_url }}.

", + "plain_text": "您好,\r\n\r\n您最近为我们记录了一个标题为 \"{{ ticket.title }}\" 的工单. 本邮件是想提醒您工单自动升级, 因为已经打开时间超过预期.\r\n\r\n我们将尽快查看并提供解决方案.\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.ticket_url }}.\r\n\r\n", + "heading": "您的 工单 已经 已经提升优先级", + "subject": "(已经提升优先级)", + "locale": "zh" + } + }, + { + "pk": 105, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "newticket_cc", + "html": "

您好,

\r\n\r\n

温馨提示: 新工单已经打开.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

Description:

\r\n\r\n
{{ ticket.description|linebreaksbr }}
", + "plain_text": "您好,\r\n\r\n温馨提示: 新工单已经 打开.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\nDescription:\r\n{{ ticket.description }}\r\n\r\n", + "heading": "新工单已打开", + "subject": "(已打开)", + "locale": "zh" + } + }, + { + "pk": 106, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "newticket_submitter", + "html": "

您好,

\r\n\r\n

温馨提示: 我们已收到您主题为 {{ ticket.title }}.

\r\n\r\n

您当前什么都不用做. 您的工单 已经 分配编号 {{ ticket.ticket }} 且将很快收到回复.

\r\n\r\n

如果您想告诉我们更多详情, 或者要查询此工单, 请在主题带上工单id {{ ticket.ticket }} . 最简单就是直接点这个消息的 \"回复\" 按钮.

\r\n\r\n

如果您希望在线查看并提供此工单的更多信息, 附加文件或者查看最近更新, 您可以访问 {{ ticket.ticket_url }}.

\r\n\r\n

我们将调查您的问题并尽快解决. 您将通过此邮箱收到后续更新和解决方案.

", + "plain_text": "您好,\r\n\r\n温馨提示: 我们已经收到您主题为 \"{{ ticket.title }}\" 的查询. \r\n\r\n您当前什么都不用做. 您的工单已经分配编号 {{ ticket.ticket }} 且将很快收到回复.\r\n\r\n如果您想告诉我们更多详情, 或者要查询此工单, 请在主题带上工单id '{{ ticket.ticket }}' . 最简单方式就是按下此消息 \"回复\" .\r\n\r\n如果您希望在线查看并提供此工单的更多信息, 附加文件或者查看最近更新, 您可以访问 {{ ticket.ticket_url }}.\r\n\r\n我们将调查您的问题并尽快解决. 您将通过此邮箱收到后续更新和解决方案.\r\n", + "heading": "您的工单已经打开", + "subject": "(已打开)", + "locale": "zh" + } + }, + { + "pk": 107, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "解决_cc", + "html": "

您好,

\r\n\r\n

以下工单 已经 解决.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

增加的解决方案为:

\r\n\r\n
{{ ticket.resolution }}
\r\n\r\n

此方案已经 邮件发送给提交者, 在您关闭之前需要他先确认.

", + "plain_text": "您好,\r\n\r\n以下工单 已经 解决:\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n提供的解决方案为:\r\n\r\n{{ ticket.resolution }}\r\n\r\n此方案已经 邮件发送给提交者, 在您关闭之前需要他先确认.\r\n\r\n", + "heading": "工单 解决", + "subject": "(解决)", + "locale": "zh" + } + }, + { + "pk": 108, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "解决_owner", + "html": "

您好,

\r\n\r\n

A 当前分配给您的工单已经 解决.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

增加的解决方案为:

\r\n\r\n
{{ ticket.resolution }}
\r\n\r\n

此方案已经 邮件发送给提交者, 在您关闭之前需要他先确认.

", + "plain_text": "您好,\r\n\r\nA 当前分配给您的工单已经 解决.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述为:\r\n\r\n{{ ticket.description }}\r\n\r\n提供的方案为:\r\n\r\n{{ ticket.resolution }}\r\n\r\n此方案已经 邮件发送给提交者, 在您关闭之前需要他先确认.\r\n\r\n", + "heading": "工单 解决", + "subject": "(解决)", + "locale": "zh" + } + }, + { + "pk": 109, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "解决_submitter", + "html": "

您好,

\r\n\r\n

您最近记录了主题为{{ ticket.title }}的工单. 此邮件是要告知您解决方案.

\r\n\r\n

工单添加了以下解决方案 {{ ticket.ticket }}:

\r\n\r\n
{{ resolution }}
\r\n\r\n

请您确认下此解决方案是否解决了您的问题, 这样我们可以关闭此工单? 如果有更多问题或者认为方案不够充分,, 请继续使用邮件的主题回复此邮件.

\r\n\r\n

如果您想在线查看, 可以访问 {{ ticket.ticket_url }}.

", + "plain_text": "您好,\r\n\r\n您最近记录了主题为\"{{ ticket.title }}\"的工单. 此邮件是要告知您解决方案.\r\n\r\n工单添加了以下解决方案 {{ ticket.ticket }}:\r\n\r\n{{ resolution }}\r\n\r\n请您确认下此解决方案是否解决了您的问题, 这样我们可以关闭此工单? 如果有更多问题或者认为方案不够充分,, 请继续使用邮件的主题回复此邮件.\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.ticket_url }}\r\n\r\n", + "heading": "您的 工单 已经 解决", + "subject": "(解决)", + "locale": "zh" + } + }, + { + "pk": 110, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "updated_cc", + "html": "

您好,

\r\n\r\n

温馨提示, {{ ticket.submitter_email }} 的工单 {{ ticket.ticket }} (\"{{ ticket.title }}\") 已经更新.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

已添加以下评论:

\r\n\r\n
{{ comment }}
\r\n\r\n

本信息 {% if private %} 还没有 {% else %} 已经 {% endif %} 邮件发送给提交者.

", + "plain_text": "您好,\r\n\r\n温馨提示, 提交者{{ ticket.submitter_email }}的工单{{ ticket.ticket }} 已经更新.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述:\r\n\r\n{{ ticket.description }}\r\n\r\n已添加以下评论:\r\n\r\n{{ comment }}\r\n\r\n本信息 {% if private %}还没有{% else %} 已经 {% endif %} 邮件发送给提交者.\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.staff_url }}.\r\n\r\n", + "heading": "工单已更新", + "subject": "(已更新)", + "locale": "zh" + } + }, + { + "pk": 111, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "updated_owner", + "html": "

您好,

\r\n\r\n

温馨提示, 分配给您,提交者{{ ticket.submitter_email }}的工单{{ ticket.ticket }}, 已经更新.

\r\n\r\n

\r\n工单 ID: {{ ticket.ticket }}
\r\n待办: {{ queue.title }}
\r\n标题: {{ ticket.title }}
\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}
\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}
\r\n优先级: {{ ticket.get_priority_display }}
\r\n状态: {{ ticket.get_status }}
\r\n已分配给: {{ ticket.get_assigned_to }}
\r\n在线查看 更新此工单 (需要登录)

\r\n\r\n

原工单描述参考::

\r\n\r\n
{{ ticket.description|linebreaksbr }}
\r\n\r\n

已添加以下评论:

\r\n\r\n
{{ comment }}
\r\n\r\n

本信息 {% if private %} 还未 {% else %} 已经 {% endif %} been 邮件发送给提交者.

", + "plain_text": "您好,\r\n\r\n温馨提示, 提交者分配给{{ ticket.submitter_email }} 您的工单 {{ ticket.ticket }} (\"{{ ticket.title }}\") , 已经更新.\r\n\r\n工单 ID: {{ ticket.ticket }}\r\n待办: {{ queue.title }}\r\n标题: {{ ticket.title }}\r\n已打开: {{ ticket.created|date:\"l N jS Y, \\a\\t P\" }}\r\n提交人: {{ ticket.submitter_email|default:\"Unknown\" }}\r\n优先级:{{ ticket.get_priority_display }}\r\n状态: {{ ticket.get_status }}\r\n已分配给: {{ ticket.get_assigned_to }}\r\n在线查看: {{ ticket.staff_url }} (需要登录)\r\n\r\n原始描述:\r\n\r\n{{ ticket.description }}\r\n\r\n添加了一下评论:\r\n\r\n{{ comment }}\r\n\r\n本信息 {% if private %}还没有 {% endif %} 邮件发送给提交者.\r\n\r\n如果您想在线查看, 可以访问 {{ ticket.staff_url }}\r\n\r\n", + "heading": "工单已更新", + "subject": "(已更新)", + "locale": "zh" + } + }, + { + "pk": 112, + "model": "helpdesk.emailtemplate", + "fields": { + "template_name": "updated_submitter", + "html": "

您好,

\r\n\r\n

您最近记录了主题为{{ ticket.title }}的工单. 此邮件是告知您工单的更新.

\r\n\r\n

工单添加了以下评论 {{ ticket.ticket }}:

\r\n\r\n
{{ comment }}
\r\n\r\n

如果你需要提供更多信息, 请继续使用邮件的主题回复此邮件. 或者您可以在线查看和更新此工单 {{ ticket.ticket_url }}.

", + "plain_text": "您好,\r\n\r\n您最近记录了主题为\"{{ ticket.title }}\"的工单. 此邮件是告知您工单的更新.\r\n\r\n工单添加了以下评论 {{ ticket.ticket }}:\r\n\r\n{{ comment }}\r\n\r\n如果你需要提供更多信息, 请继续使用邮件的主题回复此邮件. 或者您可以在线查看和更新此工单 {{ ticket.ticket_url }}\r\n\r\n", + "heading": "您的工单已经更新", + "subject": "(已更新)", + "locale": "zh" + } } - - - ] diff --git a/helpdesk/locale/zh_Hans/LC_MESSAGES/django.mo b/helpdesk/locale/zh_Hans/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..765be4abe38708e53adaa749a48fd8a176b6992c GIT binary patch literal 49187 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 EAIO70VE_OC literal 0 HcmV?d00001 diff --git a/helpdesk/locale/zh_Hans/LC_MESSAGES/django.po b/helpdesk/locale/zh_Hans/LC_MESSAGES/django.po new file mode 100644 index 00000000..d8374d72 --- /dev/null +++ b/helpdesk/locale/zh_Hans/LC_MESSAGES/django.po @@ -0,0 +1,2394 @@ +# django-helpdesk English language translation +# Copyright (C) 2011 Ross Poulton +# This file is distributed under the same license as the django-helpdesk package. +# +# Translators: +# Translators: +# pjsong , 2017 +msgid "" +msgstr "" +"Project-Id-Version: django-helpdesk\n" +"Report-Msgid-Bugs-To: http://github.com/RossP/django-helpdesk/issues\n" +"POT-Creation-Date: 2014-07-26 14:14+0200\n" +"PO-Revision-Date: 2017-12-06 08:13+0000\n" +"Last-Translator: pjsong \n" +"Language-Team: Chinese (China) (http://www.transifex.com/django-helpdesk/django-helpdesk/language/zh_CN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: forms.py:128 forms.py:328 models.py:190 models.py:267 +#: templates/helpdesk/dashboard.html:15 templates/helpdesk/dashboard.html:58 +#: templates/helpdesk/dashboard.html:78 templates/helpdesk/dashboard.html:100 +#: templates/helpdesk/dashboard.html:124 templates/helpdesk/rss_list.html:24 +#: templates/helpdesk/ticket_list.html:69 +#: templates/helpdesk/ticket_list.html:88 +#: templates/helpdesk/ticket_list.html:225 views/staff.py:1032 +#: views/staff.py:1038 views/staff.py:1044 views/staff.py:1050 +msgid "Queue" +msgstr "所有待办" + +#: forms.py:137 +msgid "Summary of the problem" +msgstr "问题描述" + +#: forms.py:142 +msgid "Submitter E-Mail Address" +msgstr "提交者邮件" + +#: forms.py:144 +msgid "" +"This e-mail address will receive copies of all public updates to this " +"ticket." +msgstr "此邮箱将收到此工单的所有公开更新" + +#: forms.py:150 +msgid "Description of Issue" +msgstr "问题描述" + +#: forms.py:157 +msgid "Case owner" +msgstr "案子所有者" + +#: forms.py:158 +msgid "" +"If you select an owner other than yourself, they'll be e-mailed details of " +"this ticket immediately." +msgstr "如果选择自己之外的所有者, 他们将马上收到此工单的邮件" + +#: forms.py:166 models.py:327 management/commands/escalate_tickets.py:154 +#: templates/helpdesk/public_view_ticket.html:23 +#: templates/helpdesk/ticket.html:184 +#: templates/helpdesk/ticket_desc_table.html:47 +#: templates/helpdesk/ticket_list.html:94 views/staff.py:429 +msgid "Priority" +msgstr "优先级" + +#: forms.py:167 +msgid "Please select a priority carefully. If unsure, leave it as '3'." +msgstr "请认真选择优先级,如果不确定, 选择默认3" + +#: forms.py:174 forms.py:365 models.py:335 templates/helpdesk/ticket.html:186 +#: views/staff.py:439 +msgid "Due on" +msgstr "截止至" + +#: forms.py:186 forms.py:370 +msgid "Attach File" +msgstr "附件" + +#: forms.py:187 forms.py:371 +msgid "You can attach a file such as a document or screenshot to this ticket." +msgstr "你可以附加文档或者截屏到这个工单" + +#: forms.py:240 +msgid "Ticket Opened" +msgstr "开工单" + +#: forms.py:247 +#, python-format +msgid "Ticket Opened & Assigned to %(name)s" +msgstr "已开 & 已分配给 %(name)s" + +#: forms.py:337 +msgid "Summary of your query" +msgstr "查询摘要" + +#: forms.py:342 +msgid "Your E-Mail Address" +msgstr "邮箱地址" + +#: forms.py:343 +msgid "We will e-mail you when your ticket is updated." +msgstr "当您的ticket有更新,我们将给您发邮件" + +#: forms.py:348 +msgid "Description of your issue" +msgstr "问题描述" + +#: forms.py:350 +msgid "" +"Please be as descriptive as possible, including any details we may need to " +"address your query." +msgstr "请保持描述性, 包括为了表示您的查询,我们所需要的任何细节" + +#: forms.py:358 +msgid "Urgency" +msgstr "紧急程度" + +#: forms.py:359 +msgid "Please select a priority carefully." +msgstr "请认真选择优先级" + +#: forms.py:419 +msgid "Ticket Opened Via Web" +msgstr "工单已通过web打开" + +#: forms.py:486 +msgid "Show Ticket List on Login?" +msgstr "登录之后是否显示工单列表?" + +#: forms.py:487 +msgid "Display the ticket list upon login? Otherwise, the dashboard is shown." +msgstr "登录之后显示工单吗? 如果否, 则显示仪表盘" + +#: forms.py:492 +msgid "E-mail me on ticket change?" +msgstr "工单更改要通知您吗?" + +#: forms.py:493 +msgid "" +"If you're the ticket owner and the ticket is changed via the web by somebody" +" else, do you want to receive an e-mail?" +msgstr "如果您是工单所有者, 且工单被其他人通过web改变了, 您希望收到邮件吗?" + +#: forms.py:498 +msgid "E-mail me when assigned a ticket?" +msgstr "当工单分配给您,要给您发邮件吗?" + +#: forms.py:499 +msgid "" +"If you are assigned a ticket via the web, do you want to receive an e-mail?" +msgstr "如果有工单分配到了您,您是否愿意收到邮件?" + +#: forms.py:504 +msgid "E-mail me when a ticket is changed via the API?" +msgstr "当工单通过api改变时, 要通知您吗?" + +#: forms.py:505 +msgid "If a ticket is altered by the API, do you want to receive an e-mail?" +msgstr "如果工单被api改变, 您愿意收到邮件吗?" + +#: forms.py:510 +msgid "Number of tickets to show per page" +msgstr "每个页面显示的工单数量" + +#: forms.py:511 +msgid "How many tickets do you want to see on the Ticket List page?" +msgstr "工单列表页面显示的工单数量" + +#: forms.py:518 +msgid "Use my e-mail address when submitting tickets?" +msgstr "当提交工单时使用我的邮箱地址吗?" + +#: forms.py:519 +msgid "" +"When you submit a ticket, do you want to automatically use your e-mail " +"address as the submitter address? You can type a different e-mail address " +"when entering the ticket if needed, this option only changes the default." +msgstr "当提交工单, 您愿意自动使用您的邮箱地址作为提交者地址吗? 提交表单时如果需要, 您可以改变缺省的选项,输入一个不同的邮箱地址。" + +#: models.py:35 models.py:261 models.py:503 models.py:817 models.py:853 +#: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 +#: templates/helpdesk/dashboard.html:100 templates/helpdesk/dashboard.html:124 +#: templates/helpdesk/ticket.html:178 templates/helpdesk/ticket_list.html:85 +#: templates/helpdesk/ticket_list.html:225 views/staff.py:419 +msgid "Title" +msgstr "标题" + +#: models.py:40 models.py:822 models.py:1206 +msgid "Slug" +msgstr "地址栏表示" + +#: models.py:41 +msgid "" +"This slug is used when building ticket ID's. Once set, try not to change it " +"or e-mailing may get messy." +msgstr "本地址栏表示在构建工单ID时使用。 一旦设置不要更改, 否则可能导致邮件功能混乱" + +#: models.py:46 models.py:1054 models.py:1129 models.py:1203 +#: templates/helpdesk/email_ignore_list.html:13 +#: templates/helpdesk/ticket_cc_list.html:15 +msgid "E-Mail Address" +msgstr "邮件地址" + +#: models.py:49 +msgid "" +"All outgoing e-mails for this queue will use this e-mail address. If you use" +" IMAP or POP3, this should be the e-mail address for that mailbox." +msgstr "本待办主题下,所有出去的邮件将使用本地址。 如果您使用IMAP或者POP3,这里应该是那个邮箱的地址" + +#: models.py:55 models.py:794 +msgid "Locale" +msgstr "地区" + +#: models.py:59 +msgid "" +"Locale of this queue. All correspondence in this queue will be in this " +"language." +msgstr "待办所属的地区。 这个代办下对应的任务使用该语言" + +#: models.py:63 +msgid "Allow Public Submission?" +msgstr "允许公共提交?" + +#: models.py:66 +msgid "Should this queue be listed on the public submission form?" +msgstr "是否该待办显示在公共提交表单?" + +#: models.py:71 +msgid "Allow E-Mail Submission?" +msgstr "允许邮件提交?" + +#: models.py:74 +msgid "Do you want to poll the e-mail box below for new tickets?" +msgstr "您是否愿意通过以下的邮件查询得到新的工单?" + +#: models.py:79 +msgid "Escalation Days" +msgstr "提升天数" + +#: models.py:82 +msgid "" +"For tickets which are not held, how often do you wish to increase their " +"priority? Set to 0 for no escalation." +msgstr "对于不固定的工单, 多久您希望提升其优先级? 设置0表示不提升" + +#: models.py:87 +msgid "New Ticket CC Address" +msgstr "新工单CC的地址" + +#: models.py:91 +msgid "" +"If an e-mail address is entered here, then it will receive notification of " +"all new tickets created for this queue. Enter a comma between multiple " +"e-mail addresses." +msgstr "如果此处输入邮件地址,该地址将收到本待办下所有新创建的工单。多个邮件地址用逗号分隔" + +#: models.py:97 +msgid "Updated Ticket CC Address" +msgstr "更新工单CC的地址" + +#: models.py:101 +msgid "" +"If an e-mail address is entered here, then it will receive notification of " +"all activity (new tickets, closed tickets, updates, reassignments, etc) for " +"this queue. Separate multiple addresses with a comma." +msgstr "此处输入的邮件地址, 将收到本代办下所有的活动(新工单,关闭工单,更新,重分配等)。多个邮件地址用逗号分隔。" + +#: models.py:108 +msgid "E-Mail Box Type" +msgstr "邮箱类型" + +#: models.py:110 +msgid "POP 3" +msgstr "POP3" + +#: models.py:110 +msgid "IMAP" +msgstr "IMAP" + +#: models.py:113 +msgid "" +"E-Mail server type for creating tickets automatically from a mailbox - both " +"POP3 and IMAP are supported." +msgstr "通过邮箱自动创建工单的邮件服务器类型。 同时支持POP3和IMAP" + +#: models.py:118 +msgid "E-Mail Hostname" +msgstr "邮箱主机名" + +#: models.py:122 +msgid "" +"Your e-mail server address - either the domain name or IP address. May be " +"\"localhost\"." +msgstr "您邮箱服务器地址-域名或者ip. 可能是localhost" + +#: models.py:127 +msgid "E-Mail Port" +msgstr "邮件端口" + +#: models.py:130 +msgid "" +"Port number to use for accessing e-mail. Default for POP3 is \"110\", and " +"for IMAP is \"143\". This may differ on some servers. Leave it blank to use " +"the defaults." +msgstr "访问邮件使用的端口。 缺省下POP3用110, IMAP用143. 不同服务器可能有差别。如果使用缺省,保持空白。" + +#: models.py:136 +msgid "Use SSL for E-Mail?" +msgstr "邮箱使用SSL?" + +#: models.py:139 +msgid "" +"Whether to use SSL for IMAP or POP3 - the default ports when using SSL are " +"993 for IMAP and 995 for POP3." +msgstr "IMAP或POP3是否使用SSL-当使用SSL, IMAP是993, POP3是995" + +#: models.py:144 +msgid "E-Mail Username" +msgstr "邮箱用户名" + +#: models.py:148 +msgid "Username for accessing this mailbox." +msgstr "访问本邮箱使用的用户名" + +#: models.py:152 +msgid "E-Mail Password" +msgstr "邮箱密码" + +#: models.py:156 +msgid "Password for the above username" +msgstr "以上用户名的密码" + +#: models.py:160 +msgid "IMAP Folder" +msgstr "IMAP文件夹" + +#: models.py:164 +msgid "" +"If using IMAP, what folder do you wish to fetch messages from? This allows " +"you to use one IMAP account for multiple queues, by filtering messages on " +"your IMAP server into separate folders. Default: INBOX." +msgstr "如果使用IMAP,您希望获取哪个文件夹的消息? 本功能允许您使用一个IMAP帐号访问多个待办。把您IMAP服务器上的消息分开到不同的文件夹即可。缺省:收件箱" + +#: models.py:171 +msgid "E-Mail Check Interval" +msgstr "邮箱检查间隔" + +#: models.py:172 +msgid "How often do you wish to check this mailbox? (in Minutes)" +msgstr "隔多久您希望检查此邮箱?(分钟单位)" + +#: models.py:191 templates/helpdesk/email_ignore_list.html:13 +msgid "Queues" +msgstr "代办" + +#: models.py:245 templates/helpdesk/dashboard.html:15 +#: templates/helpdesk/ticket.html:138 +msgid "Open" +msgstr "打开" + +#: models.py:246 templates/helpdesk/ticket.html:144 +#: templates/helpdesk/ticket.html.py:150 templates/helpdesk/ticket.html:155 +#: templates/helpdesk/ticket.html.py:159 +msgid "Reopened" +msgstr "重新打开" + +#: models.py:247 templates/helpdesk/dashboard.html:15 +#: templates/helpdesk/ticket.html:139 templates/helpdesk/ticket.html.py:145 +#: templates/helpdesk/ticket.html:151 +msgid "Resolved" +msgstr "已解决" + +#: models.py:248 templates/helpdesk/dashboard.html:15 +#: templates/helpdesk/ticket.html:140 templates/helpdesk/ticket.html.py:146 +#: templates/helpdesk/ticket.html:152 templates/helpdesk/ticket.html.py:156 +msgid "Closed" +msgstr "已关闭" + +#: models.py:249 templates/helpdesk/ticket.html:141 +#: templates/helpdesk/ticket.html.py:147 templates/helpdesk/ticket.html:160 +msgid "Duplicate" +msgstr "重复" + +#: models.py:253 +msgid "1. Critical" +msgstr "1. 严重" + +#: models.py:254 +msgid "2. High" +msgstr "2. 高" + +#: models.py:255 +msgid "3. Normal" +msgstr "3. 一般" + +#: models.py:256 +msgid "4. Low" +msgstr "4. 低" + +#: models.py:257 +msgid "5. Very Low" +msgstr "5. 很低" + +#: models.py:271 templates/helpdesk/dashboard.html:100 +#: templates/helpdesk/ticket_list.html:82 +#: templates/helpdesk/ticket_list.html:225 +msgid "Created" +msgstr "已创建" + +#: models.py:273 +msgid "Date this ticket was first created" +msgstr "工单创建日期" + +#: models.py:277 +msgid "Modified" +msgstr "已修改" + +#: models.py:279 +msgid "Date this ticket was most recently changed." +msgstr "工单最近修改日期" + +#: models.py:283 templates/helpdesk/public_view_ticket.html:18 +#: templates/helpdesk/ticket_desc_table.html:42 +msgid "Submitter E-Mail" +msgstr "提交者邮箱" + +#: models.py:286 +msgid "" +"The submitter will receive an email for all public follow-ups left for this " +"task." +msgstr "提交者将收到本任务的所有跟进" + +#: models.py:295 +msgid "Assigned to" +msgstr "分配给" + +#: models.py:299 templates/helpdesk/dashboard.html:58 +#: templates/helpdesk/dashboard.html:78 templates/helpdesk/dashboard.html:124 +#: templates/helpdesk/ticket_list.html:70 +#: templates/helpdesk/ticket_list.html:91 +#: templates/helpdesk/ticket_list.html:225 +msgid "Status" +msgstr "状态" + +#: models.py:305 +msgid "On Hold" +msgstr "待定" + +#: models.py:308 +msgid "If a ticket is on hold, it will not automatically be escalated." +msgstr "如果工单待定,将自动提升级别" + +#: models.py:313 models.py:826 templates/helpdesk/public_view_ticket.html:41 +#: templates/helpdesk/ticket_desc_table.html:19 +msgid "Description" +msgstr "描述" + +#: models.py:316 +msgid "The content of the customers query." +msgstr "定制查询的内容" + +#: models.py:320 templates/helpdesk/public_view_ticket.html:48 +#: templates/helpdesk/ticket_desc_table.html:26 +msgid "Resolution" +msgstr "解决方案" + +#: models.py:323 +msgid "The resolution provided to the customer by our staff." +msgstr "员工提供给客户的解决方案" + +#: models.py:331 +msgid "1 = Highest Priority, 5 = Low Priority" +msgstr "1=最高优先级, 5=低优先级" + +#: models.py:344 +msgid "" +"The date this ticket was last escalated - updated automatically by " +"management/commands/escalate_tickets.py." +msgstr "最近优先级提升日期,通过management/commands/escalate_tickets.py自动升级" + +#: models.py:353 templates/helpdesk/ticket_desc_table.html:38 +#: views/feeds.py:95 views/feeds.py:121 views/feeds.py:173 views/staff.py:376 +msgid "Unassigned" +msgstr "未分配" + +#: models.py:392 +msgid " - On Hold" +msgstr "待定" + +#: models.py:394 +msgid " - Open dependencies" +msgstr "打开依赖" + +#: models.py:448 models.py:494 models.py:1117 models.py:1280 models.py:1309 +#: templates/helpdesk/public_homepage.html:78 +#: templates/helpdesk/public_view_form.html:12 +msgid "Ticket" +msgstr "工单" + +#: models.py:449 templates/helpdesk/navigation.html:17 +#: templates/helpdesk/ticket_list.html:2 +#: templates/helpdesk/ticket_list.html:224 +msgid "Tickets" +msgstr "工单" + +#: models.py:498 models.py:738 models.py:1047 models.py:1200 +msgid "Date" +msgstr "日期" + +#: models.py:510 views/staff.py:390 +msgid "Comment" +msgstr "评论" + +#: models.py:516 +msgid "Public" +msgstr "公开" + +#: models.py:519 +msgid "" +"Public tickets are viewable by the submitter and all staff, but non-public " +"tickets can only be seen by staff." +msgstr "公开工单对提交者和所有员工可见,非公开工单只对员工可见。" + +#: models.py:527 models.py:922 models.py:1125 views/staff.py:1008 +#: views/staff.py:1014 views/staff.py:1020 views/staff.py:1026 +msgid "User" +msgstr "用户" + +#: models.py:531 templates/helpdesk/ticket.html:135 +msgid "New Status" +msgstr "新状态" + +#: models.py:535 +msgid "If the status was changed, what was it changed to?" +msgstr "如果状态发生变更,变更到哪个状态?" + +#: models.py:542 models.py:566 models.py:628 +msgid "Follow-up" +msgstr "跟进" + +#: models.py:543 +msgid "Follow-ups" +msgstr "跟进" + +#: models.py:570 models.py:1285 +msgid "Field" +msgstr "字段" + +#: models.py:575 +msgid "Old Value" +msgstr "旧值" + +#: models.py:581 +msgid "New Value" +msgstr "新值" + +#: models.py:589 +msgid "removed" +msgstr "移除" + +#: models.py:591 +#, python-format +msgid "set to %s" +msgstr "设置为 %s" + +#: models.py:593 +#, python-format +msgid "changed from \"%(old_value)s\" to \"%(new_value)s\"" +msgstr " 从\"%(old_value)s\" 更改为 \"%(new_value)s\"" + +#: models.py:600 +msgid "Ticket change" +msgstr "工单变更" + +#: models.py:601 +msgid "Ticket changes" +msgstr "工单变更" + +#: models.py:632 +msgid "File" +msgstr "文件" + +#: models.py:637 +msgid "Filename" +msgstr "文件名" + +#: models.py:642 +msgid "MIME Type" +msgstr "MIME 类型" + +#: models.py:647 +msgid "Size" +msgstr "大小" + +#: models.py:648 +msgid "Size of this file in bytes" +msgstr "文件字节大小" + +#: models.py:665 +msgid "Attachment" +msgstr "附件" + +#: models.py:666 +msgid "Attachments" +msgstr "附件" + +#: models.py:685 +msgid "" +"Leave blank to allow this reply to be used for all queues, or select those " +"queues you wish to limit this reply to." +msgstr "留空表示允许回复给所有待办,或者选择你要的待办。" + +#: models.py:690 models.py:733 models.py:1042 +#: templates/helpdesk/email_ignore_list.html:13 +msgid "Name" +msgstr "名字" + +#: models.py:692 +msgid "" +"Only used to assist users with selecting a reply - not shown to the user." +msgstr "仅用于帮助用户选择回复,不显示给用户。" + +#: models.py:697 +msgid "Body" +msgstr "内容" + +#: models.py:698 +msgid "" +"Context available: {{ ticket }} - ticket object (eg {{ ticket.title }}); {{ " +"queue }} - The queue; and {{ user }} - the current user." +msgstr "可用的上下文: {{ ticket }} - 目标工单 (比如 {{ ticket.title }}); {{ queue }} - 待办; 和{{ user }} - 当前用户。" + +#: models.py:705 +msgid "Pre-set reply" +msgstr "预设置回复" + +#: models.py:706 +msgid "Pre-set replies" +msgstr "预设置回复" + +#: models.py:727 +msgid "" +"Leave blank for this exclusion to be applied to all queues, or select those " +"queues you wish to exclude with this entry." +msgstr "留空表示此排除应用到所有待办,或者选择你想应用的待办。" + +#: models.py:739 +msgid "Date on which escalation should not happen" +msgstr "不发生提升的日期" + +#: models.py:746 +msgid "Escalation exclusion" +msgstr "提升排除项" + +#: models.py:747 +msgid "Escalation exclusions" +msgstr "提升排除项" + +#: models.py:760 +msgid "Template Name" +msgstr "模板名" + +#: models.py:765 +msgid "Subject" +msgstr "主题" + +#: models.py:767 +msgid "" +"This will be prefixed with \"[ticket.ticket] ticket.title\". We recommend " +"something simple such as \"(Updated\") or \"(Closed)\" - the same context is" +" available as in plain_text, below." +msgstr "此处添加 \"[ticket.ticket] ticket.title\"前缀. 我们推荐类似于 \"(已更新\") 或者 \"(已关闭)\"的简单形式 - 在下面的纯文本,上下文依然有效。" + +#: models.py:773 +msgid "Heading" +msgstr "标题" + +#: models.py:775 +msgid "" +"In HTML e-mails, this will be the heading at the top of the email - the same" +" context is available as in plain_text, below." +msgstr "在HTML格式电邮中,这是邮件顶部的标题-下面的文本中上下文依然有效" + +#: models.py:781 +msgid "Plain Text" +msgstr "纯文本" + +#: models.py:782 +msgid "" +"The context available to you includes {{ ticket }}, {{ queue }}, and " +"depending on the time of the call: {{ resolution }} or {{ comment }}." +msgstr "可用的上下文包括 {{ ticket }}, {{ queue }}, 依赖调用时间: {{ resolution }} 或者 {{ comment }}." + +#: models.py:788 +msgid "HTML" +msgstr "HTML" + +#: models.py:789 +msgid "The same context is available here as in plain_text, above." +msgstr "与纯文本一样,可用同样的上下文" + +#: models.py:798 +msgid "Locale of this template." +msgstr "模板的地区" + +#: models.py:806 +msgid "e-mail template" +msgstr "邮件模板" + +#: models.py:807 +msgid "e-mail templates" +msgstr "邮件模板" + +#: models.py:834 +msgid "Knowledge base category" +msgstr "知识库分类" + +#: models.py:835 +msgid "Knowledge base categories" +msgstr "知识库分类" + +#: models.py:849 templates/helpdesk/kb_index.html:11 +#: templates/helpdesk/public_homepage.html:11 +msgid "Category" +msgstr "分类" + +#: models.py:858 +msgid "Question" +msgstr "提问" + +#: models.py:862 +msgid "Answer" +msgstr "回答" + +#: models.py:866 +msgid "Votes" +msgstr "投票" + +#: models.py:867 +msgid "Total number of votes cast for this item" +msgstr "此项的投票数量" + +#: models.py:872 +msgid "Positive Votes" +msgstr "赞票" + +#: models.py:873 +msgid "Number of votes for this item which were POSITIVE." +msgstr "踩票数" + +#: models.py:878 +msgid "Last Updated" +msgstr "最近更新" + +#: models.py:879 +msgid "The date on which this question was most recently changed." +msgstr "此提问最近更新时间" + +#: models.py:893 +msgid "Unrated" +msgstr "未评级" + +#: models.py:901 +msgid "Knowledge base item" +msgstr "知识库项" + +#: models.py:902 +msgid "Knowledge base items" +msgstr "知识库项" + +#: models.py:926 templates/helpdesk/ticket_list.html:170 +msgid "Query Name" +msgstr "查询名" + +#: models.py:928 +msgid "User-provided name for this query" +msgstr "用户定义的查询名字" + +#: models.py:932 +msgid "Shared With Other Users?" +msgstr "与其他用户共享?" + +#: models.py:935 +msgid "Should other users see this query?" +msgstr "查询对其他用户可见?" + +#: models.py:939 +msgid "Search Query" +msgstr "查询搜索" + +#: models.py:940 +msgid "Pickled query object. Be wary changing this." +msgstr "酸查询对象, 改变要小心" + +#: models.py:950 +msgid "Saved search" +msgstr "已保存搜索" + +#: models.py:951 +msgid "Saved searches" +msgstr "已保存搜索" + +#: models.py:966 +msgid "Settings Dictionary" +msgstr "设置字典" + +#: models.py:967 +msgid "" +"This is a base64-encoded representation of a pickled Python dictionary. Do " +"not change this field via the admin." +msgstr "酸python字典的base64编码表示。不要通过管理员改变此字段" + +#: models.py:993 +msgid "User Setting" +msgstr "用户设置" + +#: models.py:994 templates/helpdesk/navigation.html:37 +#: templates/helpdesk/user_settings.html:6 +msgid "User Settings" +msgstr "用户设置" + +#: models.py:1036 +msgid "" +"Leave blank for this e-mail to be ignored on all queues, or select those " +"queues you wish to ignore this e-mail for." +msgstr "留空表示次邮件被所有待办忽略。或者选择你需要忽略的待办." + +#: models.py:1048 +msgid "Date on which this e-mail address was added" +msgstr "此邮箱地址添加日期" + +#: models.py:1056 +msgid "" +"Enter a full e-mail address, or portions with wildcards, eg *@domain.com or " +"postmaster@*." +msgstr "输入全邮件地址,或者包含通配符比如*@domain.com或者postmaster@*" + +#: models.py:1061 +msgid "Save Emails in Mailbox?" +msgstr "在邮箱保存邮件吗?" + +#: models.py:1064 +msgid "" +"Do you want to save emails from this address in the mailbox? If this is " +"unticked, emails from this address will be deleted." +msgstr "邮箱中保存此地址的邮件吗?如果没有勾上,此地址的邮件将被删除" + +#: models.py:1101 +msgid "Ignored e-mail address" +msgstr "忽略邮件地址" + +#: models.py:1102 +msgid "Ignored e-mail addresses" +msgstr "忽略邮件地址" + +#: models.py:1124 +msgid "User who wishes to receive updates for this ticket." +msgstr "希望收到此工单更新的用户" + +#: models.py:1132 +msgid "For non-user followers, enter their e-mail address" +msgstr "输入非用户跟进者的邮箱地址" + +#: models.py:1136 +msgid "Can View Ticket?" +msgstr "可以看工单?" + +#: models.py:1138 +msgid "Can this CC login to view the ticket details?" +msgstr "此CC能登录查看工单详情?" + +#: models.py:1142 +msgid "Can Update Ticket?" +msgstr "能更新工单?" + +#: models.py:1144 +msgid "Can this CC login and update the ticket?" +msgstr "此CC能登录并更新工单?" + +#: models.py:1175 +msgid "Field Name" +msgstr "字段名" + +#: models.py:1176 +msgid "" +"As used in the database and behind the scenes. Must be unique and consist of" +" only lowercase letters with no punctuation." +msgstr "与数据库中用法一样, 必须唯一,且只有小写字母,无标点" + +#: models.py:1181 +msgid "Label" +msgstr "标签" + +#: models.py:1183 +msgid "The display label for this field" +msgstr "此字段的标签" + +#: models.py:1187 +msgid "Help Text" +msgstr "帮助文本" + +#: models.py:1188 +msgid "Shown to the user when editing the ticket" +msgstr "编辑工单时显示给用户" + +#: models.py:1194 +msgid "Character (single line)" +msgstr "字符(单行)" + +#: models.py:1195 +msgid "Text (multi-line)" +msgstr "文本(多行)" + +#: models.py:1196 +msgid "Integer" +msgstr "整型" + +#: models.py:1197 +msgid "Decimal" +msgstr "数字型" + +#: models.py:1198 +msgid "List" +msgstr "列表" + +#: models.py:1199 +msgid "Boolean (checkbox yes/no)" +msgstr "布尔型(单选yes/no)" + +#: models.py:1201 +msgid "Time" +msgstr "时间" + +#: models.py:1202 +msgid "Date & Time" +msgstr "时间&日期" + +#: models.py:1204 +msgid "URL" +msgstr "网址" + +#: models.py:1205 +msgid "IP Address" +msgstr "IP 地址" + +#: models.py:1210 +msgid "Data Type" +msgstr "日期类型" + +#: models.py:1212 +msgid "Allows you to restrict the data entered into this field" +msgstr "可以限制输入到此字段的数据" + +#: models.py:1217 +msgid "Maximum Length (characters)" +msgstr "最大长度(字符)" + +#: models.py:1223 +msgid "Decimal Places" +msgstr "小数位" + +#: models.py:1224 +msgid "Only used for decimal fields" +msgstr "仅用于数字型字段" + +#: models.py:1230 +msgid "Add empty first choice to List?" +msgstr "添加第一个空选项到列表吗?" + +#: models.py:1232 +msgid "" +"Only for List: adds an empty first entry to the choices list, which enforces" +" that the user makes an active choice." +msgstr "仅用于列表:添加一个空项到列表,强制用户作出一个活跃选择" + +#: models.py:1236 +msgid "List Values" +msgstr "列表值" + +#: models.py:1237 +msgid "For list fields only. Enter one option per line." +msgstr "仅针对列表字段,每行添加一个选项" + +#: models.py:1243 +msgid "Ordering" +msgstr "排序" + +#: models.py:1244 +msgid "Lower numbers are displayed first; higher numbers are listed later" +msgstr "显示数字由低到高" + +#: models.py:1258 +msgid "Required?" +msgstr "必填?" + +#: models.py:1259 +msgid "Does the user have to enter a value for this field?" +msgstr "用户在此字段必须填入值?" + +#: models.py:1263 +msgid "Staff Only?" +msgstr "仅员工?" + +#: models.py:1264 +msgid "" +"If this is ticked, then the public submission form will NOT show this field" +msgstr "如果勾上,公共提交的表单不会显示该字段" + +#: models.py:1273 +msgid "Custom field" +msgstr "定制字段" + +#: models.py:1274 +msgid "Custom fields" +msgstr "定制字段" + +#: models.py:1297 +msgid "Ticket custom field value" +msgstr "工单定制字段值" + +#: models.py:1298 +msgid "Ticket custom field values" +msgstr "工单定制字段值" + +#: models.py:1315 +msgid "Depends On Ticket" +msgstr "依赖于工单" + +#: models.py:1324 +msgid "Ticket dependency" +msgstr "工单依赖" + +#: models.py:1325 +msgid "Ticket dependencies" +msgstr "工单依赖" + +#: management/commands/create_usersettings.py:25 +msgid "" +"Check for user without django-helpdesk UserSettings and create settings if " +"required. Uses settings.DEFAULT_USER_SETTINGS which can be overridden to " +"suit your situation." +msgstr "检查没有django-helpdesk UserSettings的用户,如果需要创建settings. 用settings.DEFAULT_USER_SETTINGS, 可以被重写来满足个人情况。" + +#: management/commands/escalate_tickets.py:148 +#, python-format +msgid "Ticket escalated after %s days" +msgstr "%s 天之后工单升级" + +#: management/commands/get_email.py:158 +msgid "Created from e-mail" +msgstr "从邮件创建" + +#: management/commands/get_email.py:162 +msgid "Unknown Sender" +msgstr "未知发送者" + +#: management/commands/get_email.py:216 +msgid "" +"No plain-text email body available. Please see attachment " +"email_html_body.html." +msgstr "没有可用的纯文本邮件体。请参考附件 email_html_body.html" + +#: management/commands/get_email.py:220 +msgid "email_html_body.html" +msgstr "email_html_body.html" + +#: management/commands/get_email.py:263 +#, python-format +msgid "E-Mail Received from %(sender_email)s" +msgstr "从 1%(sender_email)s处收到的邮件" + +#: management/commands/get_email.py:271 +#, python-format +msgid "Ticket Re-Opened by E-Mail Received from %(sender_email)s" +msgstr "从 1%(sender_email)s 处收到的邮件重开的公开" + +#: management/commands/get_email.py:329 +msgid " (Reopened)" +msgstr "(重新打开)" + +#: management/commands/get_email.py:331 +msgid " (Updated)" +msgstr "(已更新)" + +#: templates/helpdesk/attribution.html:2 +msgid "" +"django-helpdesk." +msgstr "django-helpdesk." + +#: templates/helpdesk/base.html:10 +msgid "Powered by django-helpdesk" +msgstr "由 django-helpdesk 主导" + +#: templates/helpdesk/base.html:20 templates/helpdesk/rss_list.html:9 +#: templates/helpdesk/rss_list.html:24 templates/helpdesk/rss_list.html:31 +msgid "My Open Tickets" +msgstr "我打开的工单" + +#: templates/helpdesk/base.html:21 +msgid "All Recent Activity" +msgstr "所有最近的活动" + +#: templates/helpdesk/base.html:22 templates/helpdesk/dashboard.html:99 +#: templates/helpdesk/rss_list.html:15 +msgid "Unassigned Tickets" +msgstr "未分配工单" + +#: templates/helpdesk/base.html:52 templates/helpdesk/public_base.html:6 +#: templates/helpdesk/public_base.html:18 +msgid "Helpdesk" +msgstr "Helpdesk" + +#: templates/helpdesk/base.html:62 templates/helpdesk/rss_list.html:9 +#: templates/helpdesk/rss_list.html:12 templates/helpdesk/rss_list.html:15 +#: templates/helpdesk/rss_list.html:30 templates/helpdesk/rss_list.html:31 +msgid "RSS Icon" +msgstr "RSS图标" + +#: templates/helpdesk/base.html:62 templates/helpdesk/rss_list.html:2 +#: templates/helpdesk/rss_list.html.py:4 +msgid "RSS Feeds" +msgstr "RSS 种子" + +#: templates/helpdesk/base.html:63 +msgid "API" +msgstr "API" + +#: templates/helpdesk/base.html:64 templates/helpdesk/system_settings.html:6 +msgid "System Settings" +msgstr "系统设置" + +#: templates/helpdesk/confirm_delete_saved_query.html:3 +#: templates/helpdesk/ticket_list.html:146 +msgid "Delete Saved Query" +msgstr "删除保存的查询" + +#: templates/helpdesk/confirm_delete_saved_query.html:6 +msgid "Delete Query" +msgstr "删除查询" + +#: templates/helpdesk/confirm_delete_saved_query.html:8 +#, python-format +msgid "" +"Are you sure you want to delete this saved filter " +"(%(query_title)s)? To re-create it, you will need to manually re-" +"filter your ticket listing." +msgstr "确认删除保存的过滤器 (1%(query_title)s1)? 要重新创建, 你将需要手动重新过滤工单列表." + +#: templates/helpdesk/confirm_delete_saved_query.html:11 +msgid "" +"You have shared this query, so other users may be using it. If you delete " +"it, they will have to manually create their own query." +msgstr "您已共享此查询,其他用户可以使用它。如果你删除,他们将必须手动创建自己的查询。" + +#: templates/helpdesk/confirm_delete_saved_query.html:14 +#: templates/helpdesk/delete_ticket.html:10 +msgid "No, Don't Delete It" +msgstr "否,不要删除" + +#: templates/helpdesk/confirm_delete_saved_query.html:16 +#: templates/helpdesk/delete_ticket.html:12 +msgid "Yes - Delete It" +msgstr "是, 删除" + +#: templates/helpdesk/create_ticket.html:3 +msgid "Create Ticket" +msgstr "创建工单" + +#: templates/helpdesk/create_ticket.html:10 +#: templates/helpdesk/navigation.html:65 templates/helpdesk/navigation.html:68 +#: templates/helpdesk/public_homepage.html:27 +msgid "Submit a Ticket" +msgstr "提交工单" + +#: templates/helpdesk/create_ticket.html:11 +#: templates/helpdesk/edit_ticket.html:11 +msgid "Unless otherwise stated, all fields are required." +msgstr "除非其他说明, 所有字段都必须" + +#: templates/helpdesk/create_ticket.html:11 +#: templates/helpdesk/edit_ticket.html:11 +#: templates/helpdesk/public_homepage.html:28 +msgid "Please provide as descriptive a title and description as possible." +msgstr "请提供描述性的标题和描述" + +#: templates/helpdesk/create_ticket.html:30 +#: templates/helpdesk/public_homepage.html:55 +msgid "Submit Ticket" +msgstr "提交工单" + +#: templates/helpdesk/dashboard.html:2 +msgid "Helpdesk Dashboard" +msgstr "helpdesk 仪表盘" + +#: templates/helpdesk/dashboard.html:9 +msgid "" +"Welcome to your Helpdesk Dashboard! From here you can quickly see tickets " +"submitted by you, tickets you are working on, and those tickets that have no" +" owner." +msgstr "欢迎来到helpdesk仪表盘。这里可以看到您提交的工单, 你正在工作的工单, 以及没有所有者的工单" + +#: templates/helpdesk/dashboard.html:14 +msgid "Helpdesk Summary" +msgstr "helpdesk 摘要" + +#: templates/helpdesk/dashboard.html:36 +msgid "Current Ticket Stats" +msgstr "当前工单状态" + +#: templates/helpdesk/dashboard.html:37 +msgid "Average number of days until ticket is closed (all tickets): " +msgstr "工单关闭平均天数(所有工单)" + +#: templates/helpdesk/dashboard.html:38 +msgid "" +"Average number of days until ticket is closed (tickets opened in last 60 " +"days): " +msgstr "工单关闭平均天数(最近60天打开的工单)" + +#: templates/helpdesk/dashboard.html:39 +msgid "Click" +msgstr "点击" + +#: templates/helpdesk/dashboard.html:39 +msgid "for detailed average by month." +msgstr "按月平均详细" + +#: templates/helpdesk/dashboard.html:40 +msgid "Distribution of open tickets, grouped by time period:" +msgstr "根据时间范围分组,开工单的分布" + +#: templates/helpdesk/dashboard.html:41 +msgid "Days since opened" +msgstr "打开天数" + +#: templates/helpdesk/dashboard.html:41 +msgid "Number of open tickets" +msgstr "开放工单的数量" + +#: templates/helpdesk/dashboard.html:57 +msgid "All Tickets submitted by you" +msgstr "您提交的所有工单" + +#: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 +#: templates/helpdesk/dashboard.html:100 templates/helpdesk/dashboard.html:124 +#: templates/helpdesk/ticket_list.html:225 +msgid "Pr" +msgstr "Pr" + +#: templates/helpdesk/dashboard.html:58 templates/helpdesk/dashboard.html:78 +#: templates/helpdesk/dashboard.html:124 +msgid "Last Update" +msgstr "最近更新" + +#: templates/helpdesk/dashboard.html:77 +msgid "Open Tickets assigned to you (you are working on this ticket)" +msgstr "分配给您的开放工单(您正在工作的工单)" + +#: templates/helpdesk/dashboard.html:92 +msgid "You have no tickets assigned to you." +msgstr "您没有被分配的工单" + +#: templates/helpdesk/dashboard.html:99 +msgid "(pick up a ticket if you start to work on it)" +msgstr "(如果开始工作某个工单, 选择该工单)" + +#: templates/helpdesk/dashboard.html:110 +#: templates/helpdesk/ticket_desc_table.html:38 +msgid "Take" +msgstr "拿走" + +#: templates/helpdesk/dashboard.html:110 +#: templates/helpdesk/email_ignore_list.html:13 +#: templates/helpdesk/email_ignore_list.html:23 +#: templates/helpdesk/ticket_cc_list.html:15 +#: templates/helpdesk/ticket_cc_list.html:23 +#: templates/helpdesk/ticket_list.html:262 +msgid "Delete" +msgstr "删除" + +#: templates/helpdesk/dashboard.html:114 +msgid "There are no unassigned tickets." +msgstr "没有未分配的工单" + +#: templates/helpdesk/dashboard.html:123 +msgid "Closed & resolved Tickets you used to work on" +msgstr "您过去关闭 & 已解决的工单" + +#: templates/helpdesk/delete_ticket.html:3 +#: templates/helpdesk/delete_ticket.html:6 +msgid "Delete Ticket" +msgstr "删除工单" + +#: templates/helpdesk/delete_ticket.html:8 +#, python-format +msgid "" +"Are you sure you want to delete this ticket (%(ticket_title)s)? All" +" traces of the ticket, including followups, attachments, and updates will be" +" irreversibly removed." +msgstr "您确认删除此工单 (%(ticket_title)s)? 此工单的所有痕迹包括跟进,附件,更新都将不可逆的删除." + +#: templates/helpdesk/edit_ticket.html:3 +msgid "Edit Ticket" +msgstr "编辑工单" + +#: templates/helpdesk/edit_ticket.html:9 +msgid "Edit a Ticket" +msgstr "编辑工单" + +#: templates/helpdesk/edit_ticket.html:13 +msgid "Note" +msgstr "备注" + +#: templates/helpdesk/edit_ticket.html:13 +msgid "" +"Editing a ticket does not send an e-mail to the ticket owner or " +"submitter. No new details should be entered, this form should only be used " +"to fix incorrect details or clean up the submission." +msgstr "编辑工单 并不 发送邮件给工单所有者或者提交者。不要输入新的详情, 这个表单仅在修正错误的详情或者清理提交时使用. " + +#: templates/helpdesk/edit_ticket.html:33 +msgid "Save Changes" +msgstr "保存变更" + +#: templates/helpdesk/email_ignore_add.html:3 +#: templates/helpdesk/email_ignore_add.html:6 +#: templates/helpdesk/email_ignore_add.html:23 +msgid "Ignore E-Mail Address" +msgstr "忽略邮件地址" + +#: templates/helpdesk/email_ignore_add.html:8 +msgid "" +"To ignore an e-mail address and prevent any emails from that address " +"creating tickets automatically, enter the e-mail address below." +msgstr "要忽略某个邮件地址,自动阻止该地址创建工单,输入邮件地址" + +#: templates/helpdesk/email_ignore_add.html:10 +msgid "" +"You can either enter a whole e-mail address such as " +"email@domain.com or a portion of an e-mail address with a wildcard," +" such as *@domain.com or user@*." +msgstr "您可以输入像 email@domain.com 的整个邮件地址, 或者含通配符地址如 *@domain.com 或者 user@*." + +#: templates/helpdesk/email_ignore_del.html:3 +msgid "Delete Ignored E-Mail Address" +msgstr "删除已忽略邮件地址" + +#: templates/helpdesk/email_ignore_del.html:6 +msgid "Un-Ignore E-Mail Address" +msgstr "取消忽略邮件地址" + +#: templates/helpdesk/email_ignore_del.html:8 +#, python-format +msgid "" +"Are you sure you wish to stop removing this email address " +"(%(email_address)s) and allow their e-mails to automatically create" +" tickets in your system? You can re-add this e-mail address at any time." +msgstr "确认停止删除该邮件地址 (%(email_address)s) 且允许邮件在系统自动创建工单?您可以以后重新添加这个邮件地址。" + +#: templates/helpdesk/email_ignore_del.html:10 +msgid "Keep Ignoring It" +msgstr "保持忽略" + +#: templates/helpdesk/email_ignore_del.html:12 +msgid "Stop Ignoring It" +msgstr "停止忽略" + +#: templates/helpdesk/email_ignore_list.html:3 +#: templates/helpdesk/email_ignore_list.html:12 +msgid "Ignored E-Mail Addresses" +msgstr "忽略邮件地址" + +#: templates/helpdesk/email_ignore_list.html:5 +msgid "" +"\n" +"

Ignored E-Mail Addresses

\n" +"\n" +"

The following e-mail addresses are currently being ignored by the incoming e-mail processor. You can add a new e-mail address to the list or delete any of the items below as required.

" +msgstr "\n

忽略邮件地址

\n\n

一下邮件地址当前已被忽略。您可以 添加新的邮件地址到列表 或者根据需要删除下面的项

" + +#: templates/helpdesk/email_ignore_list.html:13 +msgid "Date Added" +msgstr "已添加日期" + +#: templates/helpdesk/email_ignore_list.html:13 +msgid "Keep in mailbox?" +msgstr "保留在邮箱" + +#: templates/helpdesk/email_ignore_list.html:21 +#: templates/helpdesk/ticket_list.html:260 +msgid "All" +msgstr "所有" + +#: templates/helpdesk/email_ignore_list.html:22 +msgid "Keep" +msgstr "保留" + +#: templates/helpdesk/email_ignore_list.html:29 +msgid "" +"Note: If the 'Keep' option is not selected, emails sent " +"from that address will be deleted permanently." +msgstr "注意 如果'保留'选项没有选中, 那个邮箱发送的邮件将被永久删除." + +#: templates/helpdesk/followup_edit.html:2 +msgid "Edit followup" +msgstr "编辑跟进" + +#: templates/helpdesk/followup_edit.html:9 +msgid "Edit FollowUp" +msgstr "编辑跟进" + +#: templates/helpdesk/followup_edit.html:14 +msgid "Reassign ticket:" +msgstr "重新分配工单" + +#: templates/helpdesk/followup_edit.html:16 +msgid "Title:" +msgstr "标题" + +#: templates/helpdesk/followup_edit.html:18 +msgid "Comment:" +msgstr "评论" + +#: templates/helpdesk/kb_category.html:4 +#: templates/helpdesk/kb_category.html:12 +#, python-format +msgid "Knowledgebase Category: %(kbcat)s" +msgstr "知识库分类: %(kbcat)s" + +#: templates/helpdesk/kb_category.html:6 +#, python-format +msgid "You are viewing all items in the %(kbcat)s category." +msgstr "您正在查看 %(kbcat)s 分类的所有项." + +#: templates/helpdesk/kb_category.html:13 +msgid "Article" +msgstr "文章" + +#: templates/helpdesk/kb_index.html:4 templates/helpdesk/navigation.html:21 +#: templates/helpdesk/navigation.html:71 +msgid "Knowledgebase" +msgstr "知识库" + +#: templates/helpdesk/kb_index.html:6 +msgid "" +"We have listed a number of knowledgebase articles for your perusal in the " +"following categories. Please check to see if any of these articles address " +"your problem prior to opening a support ticket." +msgstr "我们列出了以下类别的知识库文章供您查阅。在开支持工单的时候,请检查是否有文章解决了该文题" + +#: templates/helpdesk/kb_index.html:10 +#: templates/helpdesk/public_homepage.html:10 +msgid "Knowledgebase Categories" +msgstr "知识库分类" + +#: templates/helpdesk/kb_item.html:4 +#, python-format +msgid "Knowledgebase: %(item)s" +msgstr "知识库: %(item)s" + +#: templates/helpdesk/kb_item.html:16 +#, python-format +msgid "" +"View other %(category_title)s " +"articles, or continue viewing other knowledgebase " +"articles." +msgstr "查看 其他 %(category_title)s 文章, 或继续 查看其他知识库文章." + +#: templates/helpdesk/kb_item.html:18 +msgid "Feedback" +msgstr "反馈" + +#: templates/helpdesk/kb_item.html:20 +msgid "" +"We give our users an opportunity to vote for items that they believe have " +"helped them out, in order for us to better serve future customers. We would " +"appreciate your feedback on this article. Did you find it useful?" +msgstr "我们让用户可以为他们感觉有帮助的项投票, 这样我们更好服务未来的客户。我们感谢您对该文的反馈, 您觉得该文有帮助吗?" + +#: templates/helpdesk/kb_item.html:23 +msgid "This article was useful to me" +msgstr "该文有帮助" + +#: templates/helpdesk/kb_item.html:24 +msgid "This article was not useful to me" +msgstr "该文对我 没有 帮助" + +#: templates/helpdesk/kb_item.html:27 +msgid "The results of voting by other readers of this article are below:" +msgstr "其他读者对该文的投票结果如下" + +#: templates/helpdesk/kb_item.html:30 +#, python-format +msgid "Recommendations: %(recommendations)s" +msgstr "推荐: %(recommendations)s" + +#: templates/helpdesk/kb_item.html:31 +#, python-format +msgid "Votes: %(votes)s" +msgstr "投票: %(votes)s" + +#: templates/helpdesk/kb_item.html:32 +#, python-format +msgid "Overall Rating: %(score)s" +msgstr "总体评价: %(score)s" + +#: templates/helpdesk/navigation.html:16 templates/helpdesk/navigation.html:64 +msgid "Dashboard" +msgstr "仪表盘" + +#: templates/helpdesk/navigation.html:18 +msgid "New Ticket" +msgstr "新工单" + +#: templates/helpdesk/navigation.html:19 +msgid "Stats" +msgstr "统计" + +#: templates/helpdesk/navigation.html:24 +msgid "Saved Query" +msgstr "已保存查询" + +#: templates/helpdesk/navigation.html:39 +msgid "Change password" +msgstr "修改密码" + +#: templates/helpdesk/navigation.html:50 +msgid "Search..." +msgstr "搜索..." + +#: templates/helpdesk/navigation.html:50 +msgid "Enter a keyword, or a ticket number to jump straight to that ticket." +msgstr "输入关键字,或者工单号直接进入工单" + +#: templates/helpdesk/navigation.html:73 +msgid "Logout" +msgstr "登出" + +#: templates/helpdesk/navigation.html:73 +msgid "Log In" +msgstr "登入" + +#: templates/helpdesk/public_change_language.html:2 +#: templates/helpdesk/public_homepage.html:73 +#: templates/helpdesk/public_view_form.html:4 +#: templates/helpdesk/public_view_ticket.html:2 +msgid "View a Ticket" +msgstr "查看工单" + +#: templates/helpdesk/public_change_language.html:5 +msgid "Change the display language" +msgstr "修改显示语言" + +#: templates/helpdesk/public_homepage.html:6 +msgid "Knowledgebase Articles" +msgstr "知识库文章" + +#: templates/helpdesk/public_homepage.html:28 +msgid "All fields are required." +msgstr "所有字段必须" + +#: templates/helpdesk/public_homepage.html:66 +msgid "Please use button at upper right to login first." +msgstr "请用右上角按钮先登录" + +#: templates/helpdesk/public_homepage.html:82 +#: templates/helpdesk/public_view_form.html:15 +msgid "Your E-mail Address" +msgstr "您的邮箱地址" + +#: templates/helpdesk/public_homepage.html:86 +#: templates/helpdesk/public_view_form.html:19 +msgid "View Ticket" +msgstr "查看工单" + +#: templates/helpdesk/public_spam.html:4 +msgid "Unable To Open Ticket" +msgstr "无法打开工单" + +#: templates/helpdesk/public_spam.html:5 +msgid "Sorry, but there has been an error trying to submit your ticket." +msgstr "对不起,提交工单出错" + +#: templates/helpdesk/public_spam.html:6 +msgid "" +"Our system has marked your submission as spam, so we are " +"unable to save it. If this is not spam, please press back and re-type your " +"message. Be careful to avoid sounding 'spammy', and if you have heaps of " +"links please try removing them if possible." +msgstr "系统已将您的提交标注为 垃圾广告, 因此不被保存。如果不是垃圾广告, 请按回退且重新输入消息。 注意避免带垃圾广告的嫌疑, 如果有太多链接请先移除." + +#: templates/helpdesk/public_spam.html:7 +msgid "" +"We are sorry for any inconvenience, however this check is required to avoid " +"our helpdesk resources being overloaded by spammers." +msgstr "为您带来不便我们表示道歉。 不过为了避免系统被广告垃圾过载,此检查是必须的。" + +#: templates/helpdesk/public_view_form.html:8 +msgid "Error:" +msgstr "错误:" + +#: templates/helpdesk/public_view_ticket.html:9 +#, python-format +msgid "Queue: %(queue_name)s" +msgstr "待办:%(queue_name)s" + +#: templates/helpdesk/public_view_ticket.html:13 +#: templates/helpdesk/ticket_desc_table.html:32 +msgid "Submitted On" +msgstr "提交于" + +#: templates/helpdesk/public_view_ticket.html:35 +msgid "Tags" +msgstr "标注" + +#: templates/helpdesk/public_view_ticket.html:48 +#: templates/helpdesk/ticket_desc_table.html:26 +msgid "Accept" +msgstr "接受" + +#: templates/helpdesk/public_view_ticket.html:48 +#: templates/helpdesk/ticket_desc_table.html:26 +msgid "Accept and Close" +msgstr "接受并关闭" + +#: templates/helpdesk/public_view_ticket.html:57 +#: templates/helpdesk/ticket.html:66 +msgid "Follow-Ups" +msgstr "跟进" + +#: templates/helpdesk/public_view_ticket.html:65 +#: templates/helpdesk/ticket.html:100 +#, python-format +msgid "Changed %(field)s from %(old_value)s to %(new_value)s." +msgstr "更改 %(field)s 自 %(old_value)s 到 %(new_value)s." + +#: templates/helpdesk/report_index.html:3 +#: templates/helpdesk/report_index.html:6 +#: templates/helpdesk/report_output.html:3 +#: templates/helpdesk/report_output.html:16 +msgid "Reports & Statistics" +msgstr "报告 & 统计" + +#: templates/helpdesk/report_index.html:9 +msgid "You haven't created any tickets yet, so you cannot run any reports." +msgstr "您还没有创建任何工单,因此您不能运行任何报表" + +#: templates/helpdesk/report_index.html:13 +msgid "Reports By User" +msgstr "按用户报表" + +#: templates/helpdesk/report_index.html:15 +#: templates/helpdesk/report_index.html:24 +msgid "by Priority" +msgstr "按优先级" + +#: templates/helpdesk/report_index.html:16 +msgid "by Queue" +msgstr "按待办" + +#: templates/helpdesk/report_index.html:17 +#: templates/helpdesk/report_index.html:25 +msgid "by Status" +msgstr "按状态" + +#: templates/helpdesk/report_index.html:18 +#: templates/helpdesk/report_index.html:26 +msgid "by Month" +msgstr "按月" + +#: templates/helpdesk/report_index.html:22 +msgid "Reports By Queue" +msgstr "按待办报表" + +#: templates/helpdesk/report_index.html:27 views/staff.py:1049 +msgid "Days until ticket closed by Month" +msgstr "按月,工单关闭的天数" + +#: templates/helpdesk/report_output.html:19 +msgid "" +"You can run this query on filtered data by using one of your saved queries." +msgstr "您可以用您保存的查询来查询数据" + +#: templates/helpdesk/report_output.html:21 +msgid "Select Query:" +msgstr "选择查询:" + +#: templates/helpdesk/report_output.html:26 +msgid "Filter Report" +msgstr "过滤报表" + +#: templates/helpdesk/report_output.html:29 +msgid "" +"Want to filter this report to just show a subset of data? Go to the Ticket " +"List, filter your query, and save your query." +msgstr "想要过滤次报表仅显示子集吗?到工单列表,过滤您的查询,并保存" + +#: templates/helpdesk/rss_list.html:6 +msgid "" +"The following RSS feeds are available for you to monitor using your " +"preferred RSS software. With the exception of the 'Latest Activity' feed, " +"all feeds provide information only on Open and Reopened cases. This ensures " +"your RSS reader isn't full of information about closed or historical tasks." +msgstr "以下RSS种子您可以用您喜欢的软件来监控。除了‘最近活动’种子,所有的种子仅提供打开和重新打开的信息,确保您的RSS阅读器不会满是已经关闭的或者历史的任务。" + +#: templates/helpdesk/rss_list.html:10 +msgid "" +"A summary of your open tickets - useful for getting alerted to new tickets " +"opened for you" +msgstr "您开放工单的摘要 - 当新工单开放给你时您能获得提示" + +#: templates/helpdesk/rss_list.html:12 +msgid "Latest Activity" +msgstr "最近活动" + +#: templates/helpdesk/rss_list.html:13 +msgid "" +"A summary of all helpdesk activity - including comments, emails, " +"attachments, and more" +msgstr "所有helpdesk活动的摘要 - 包括评论, 邮件, 附件等" + +#: templates/helpdesk/rss_list.html:16 +msgid "" +"All unassigned tickets - useful for being alerted to new tickets opened by " +"the public via the web or via e-mail" +msgstr "所有未分配的工单 - 当公众通过web或者email打开新工单时获得提示" + +#: templates/helpdesk/rss_list.html:19 +msgid "" +"These RSS feeds allow you to view a summary of either your own tickets, or " +"all tickets, for each of the queues in your helpdesk. For example, if you " +"manage the staff who utilise a particular queue, this may be used to view " +"new tickets coming into that queue." +msgstr "这些RSS种子让你能看到您自己工单的摘要, 或者所有待办的工单摘要。比如, 如果您管理的员工用了一个特定的待办, 这可以用来查看该待办下的新工单。" + +#: templates/helpdesk/rss_list.html:23 +msgid "Per-Queue Feeds" +msgstr "根据待办的种子" + +#: templates/helpdesk/rss_list.html:24 +msgid "All Open Tickets" +msgstr "所有开放的工单" + +#: templates/helpdesk/rss_list.html:30 +msgid "Open Tickets" +msgstr "开放工单" + +#: templates/helpdesk/system_settings.html:3 +msgid "Change System Settings" +msgstr "更改系统设置" + +#: templates/helpdesk/system_settings.html:8 +msgid "The following items can be maintained by you or other superusers:" +msgstr "以下项可以由您或者其他超级用户来维护" + +#: templates/helpdesk/system_settings.html:11 +msgid "E-Mail Ignore list" +msgstr "邮件忽略列表" + +#: templates/helpdesk/system_settings.html:12 +msgid "Maintain Queues" +msgstr "维护待办" + +#: templates/helpdesk/system_settings.html:13 +msgid "Maintain Pre-Set Replies" +msgstr "维护预设回复" + +#: templates/helpdesk/system_settings.html:14 +msgid "Maintain Knowledgebase Categories" +msgstr "维护知识库分类" + +#: templates/helpdesk/system_settings.html:15 +msgid "Maintain Knowledgebase Items" +msgstr "维护知识库项" + +#: templates/helpdesk/system_settings.html:16 +msgid "Maintain E-Mail Templates" +msgstr "维护邮件模板" + +#: templates/helpdesk/system_settings.html:17 +msgid "Maintain Users" +msgstr "维护用户" + +#: templates/helpdesk/ticket.html:2 +msgid "View Ticket Details" +msgstr "查看工单详情" + +#: templates/helpdesk/ticket.html:34 +msgid "Attach another File" +msgstr "附加另一个文件" + +#: templates/helpdesk/ticket.html:34 templates/helpdesk/ticket.html.py:200 +msgid "Add Another File" +msgstr "添加另一个文件" + +#: templates/helpdesk/ticket.html:73 templates/helpdesk/ticket.html.py:86 +msgid "Private" +msgstr "私有" + +#: templates/helpdesk/ticket.html:119 +msgid "Respond to this ticket" +msgstr "响应工单" + +#: templates/helpdesk/ticket.html:126 +msgid "Use a Pre-set Reply" +msgstr "使用预设回复" + +#: templates/helpdesk/ticket.html:126 templates/helpdesk/ticket.html.py:166 +msgid "(Optional)" +msgstr "(可选)" + +#: templates/helpdesk/ticket.html:128 +msgid "" +"Selecting a pre-set reply will over-write your comment below. You can then " +"modify the pre-set reply to your liking before saving this update." +msgstr "选择预设回复将覆盖您下面的评论. 您可以保存本更新之后,修改预设回复。" + +#: templates/helpdesk/ticket.html:131 +msgid "Comment / Resolution" +msgstr "评论/方案" + +#: templates/helpdesk/ticket.html:133 +msgid "" +"You can insert ticket and queue details in your message. For more " +"information, see the context help page." +msgstr "您可以插入工单到您的消息. 更多信息,查看上下文帮助页." + +#: templates/helpdesk/ticket.html:136 +msgid "" +"This ticket cannot be resolved or closed until the tickets it depends on are" +" resolved." +msgstr "此工单不能解决或者关闭, 除非其依赖的工单被解决" + +#: templates/helpdesk/ticket.html:166 +msgid "Is this update public?" +msgstr "是否为公开更新?" + +#: templates/helpdesk/ticket.html:168 +msgid "" +"If this is public, the submitter will be e-mailed your comment or " +"resolution." +msgstr "如果公开, 提交者将收到您评论或者方案的邮件" + +#: templates/helpdesk/ticket.html:172 +msgid "Change Further Details »" +msgstr "变更更多详情" + +#: templates/helpdesk/ticket.html:181 templates/helpdesk/ticket_list.html:68 +#: templates/helpdesk/ticket_list.html:97 +#: templates/helpdesk/ticket_list.html:225 +msgid "Owner" +msgstr "所有者" + +#: templates/helpdesk/ticket.html:182 +msgid "Unassign" +msgstr "未分配" + +#: templates/helpdesk/ticket.html:193 +msgid "Attach File(s) »" +msgstr " 附加文件(s) »" + +#: templates/helpdesk/ticket.html:199 +msgid "Attach a File" +msgstr "附加一个文件" + +#: templates/helpdesk/ticket.html:207 +msgid "Update This Ticket" +msgstr "更新此工单" + +#: templates/helpdesk/ticket_cc_add.html:3 +msgid "Add Ticket CC" +msgstr "添加工单CC" + +#: templates/helpdesk/ticket_cc_add.html:5 +msgid "" +"\n" +"

Add Ticket CC

\n" +"\n" +"

To automatically send an email to a user or e-mail address when this ticket is updated, select the user or enter an e-mail address below.

" +msgstr "\n

添加工单CC

\n\n

当工单更新时要自动发送邮件给用户或者某个地址, 选择用户或者输入邮件地址

" + +#: templates/helpdesk/ticket_cc_add.html:21 +msgid "Save Ticket CC" +msgstr "保存工单CC" + +#: templates/helpdesk/ticket_cc_del.html:3 +msgid "Delete Ticket CC" +msgstr "删除工单CC" + +#: templates/helpdesk/ticket_cc_del.html:5 +#, python-format +msgid "" +"\n" +"

Delete Ticket CC

\n" +"\n" +"

Are you sure you wish to delete this email address (%(email_address)s) from the CC list for this ticket? They will stop receiving updates.

\n" +msgstr "\n

删除工单CC

\n\n

确认从CC列表删除此邮件地址 (%(email_address)s) ? 他们将不会再收到更新.

\n" + +#: templates/helpdesk/ticket_cc_del.html:11 +#: templates/helpdesk/ticket_dependency_del.html:11 +msgid "Don't Delete" +msgstr "不要删除" + +#: templates/helpdesk/ticket_cc_del.html:13 +#: templates/helpdesk/ticket_dependency_del.html:13 +msgid "Yes, Delete" +msgstr "是,删除" + +#: templates/helpdesk/ticket_cc_list.html:3 +msgid "Ticket CC Settings" +msgstr "工单CC设置" + +#: templates/helpdesk/ticket_cc_list.html:5 +#, python-format +msgid "" +"\n" +"

Ticket CC Settings

\n" +"\n" +"

The following people will receive an e-mail whenever %(ticket_title)s is updated. Some people can also view or edit the ticket via the public ticket views.

\n" +"\n" +"

You can add a new e-mail address to the list or delete any of the items below as required.

" +msgstr "\n

工单CC设置

\n\n

每当%(ticket_title)s更新时,以下人将收到邮件. 有些人也能通过公开工单视图查看或者编辑工单.

\n\n

你可以 添加新邮件地址到列表 或者根据需要删除以下\n项.

" + +#: templates/helpdesk/ticket_cc_list.html:14 +msgid "Ticket CC List" +msgstr "工单CC列表" + +#: templates/helpdesk/ticket_cc_list.html:15 +msgid "View?" +msgstr "查看?" + +#: templates/helpdesk/ticket_cc_list.html:15 +msgid "Update?" +msgstr "更新?" + +#: templates/helpdesk/ticket_cc_list.html:29 +#, python-format +msgid "Return to %(ticket_title)s" +msgstr "返回到 %(ticket_title)s" + +#: templates/helpdesk/ticket_dependency_add.html:3 +msgid "Add Ticket Dependency" +msgstr "添加工单依赖" + +#: templates/helpdesk/ticket_dependency_add.html:5 +msgid "" +"\n" +"

Add Ticket Dependency

\n" +"\n" +"

Adding a dependency will stop you resolving this ticket until the dependent ticket has been resolved or closed.

" +msgstr "\n

添加工单依赖

\n\n

添加以来将停止您解决这个工单, 直到依赖的工单被解决或者关闭.

" + +#: templates/helpdesk/ticket_dependency_add.html:21 +msgid "Save Ticket Dependency" +msgstr "保存工单依赖" + +#: templates/helpdesk/ticket_dependency_del.html:3 +msgid "Delete Ticket Dependency" +msgstr "删除工单依赖" + +#: templates/helpdesk/ticket_dependency_del.html:5 +msgid "" +"\n" +"

Delete Ticket Dependency

\n" +"\n" +"

Are you sure you wish to remove the dependency on this ticket?

\n" +msgstr "\n

删除工单依赖

\n\n

您确认删除此工单的依赖?

\n" + +#: templates/helpdesk/ticket_desc_table.html:7 +msgid "Unhold" +msgstr "解除暂停" + +#: templates/helpdesk/ticket_desc_table.html:7 +msgid "Hold" +msgstr "暂停" + +#: templates/helpdesk/ticket_desc_table.html:9 +#, python-format +msgid "Queue: %(queue)s" +msgstr "待办: %(queue)s" + +#: templates/helpdesk/ticket_desc_table.html:37 +msgid "Assigned To" +msgstr "分配给" + +#: templates/helpdesk/ticket_desc_table.html:43 +msgid "Ignore" +msgstr "忽略" + +#: templates/helpdesk/ticket_desc_table.html:52 +msgid "Copies To" +msgstr "拷贝至" + +#: templates/helpdesk/ticket_desc_table.html:53 +msgid "Manage" +msgstr "管理" + +#: templates/helpdesk/ticket_desc_table.html:53 +msgid "" +"Click here to add / remove people who should receive an e-mail whenever this" +" ticket is updated." +msgstr "点这里添加/移除此工单更新时收到邮件的人" + +#: templates/helpdesk/ticket_desc_table.html:53 +msgid "Subscribe" +msgstr "订阅" + +#: templates/helpdesk/ticket_desc_table.html:53 +msgid "" +"Click here to subscribe yourself to this ticket, if you want to receive an " +"e-mail whenever this ticket is updated." +msgstr "点这里订阅此工单,当工单更新您将收到邮件" + +#: templates/helpdesk/ticket_desc_table.html:57 +msgid "Dependencies" +msgstr "依赖" + +#: templates/helpdesk/ticket_desc_table.html:59 +msgid "" +"This ticket cannot be resolved until the following ticket(s) are resolved" +msgstr "除非以下工单(s)被解决,此工单不能解决" + +#: templates/helpdesk/ticket_desc_table.html:60 +msgid "Remove Dependency" +msgstr "移除依赖" + +#: templates/helpdesk/ticket_desc_table.html:63 +msgid "This ticket has no dependencies." +msgstr "此工单无依赖" + +#: templates/helpdesk/ticket_desc_table.html:65 +msgid "Add Dependency" +msgstr "添加依赖" + +#: templates/helpdesk/ticket_desc_table.html:65 +msgid "" +"Click on 'Add Dependency', if you want to make this ticket dependent on " +"another ticket. A ticket may not be closed until all tickets it depends on " +"are closed." +msgstr "如果要让工单依赖其他工单,点击'添加依赖'。除非依赖的工单关闭,原工单不能关闭。" + +#: templates/helpdesk/ticket_list.html:59 +msgid "Change Query" +msgstr "更改查询" + +#: templates/helpdesk/ticket_list.html:67 +#: templates/helpdesk/ticket_list.html:79 +msgid "Sorting" +msgstr "排序" + +#: templates/helpdesk/ticket_list.html:71 +#: templates/helpdesk/ticket_list.html:139 +msgid "Keywords" +msgstr "关键字" + +#: templates/helpdesk/ticket_list.html:72 +msgid "Date Range" +msgstr "日期范围" + +#: templates/helpdesk/ticket_list.html:100 +msgid "Reverse" +msgstr "逆序" + +#: templates/helpdesk/ticket_list.html:102 +msgid "Ordering applied to tickets" +msgstr "排序应用到工单" + +#: templates/helpdesk/ticket_list.html:107 +msgid "Owner(s)" +msgstr "所有者" + +#: templates/helpdesk/ticket_list.html:111 +msgid "(ME)" +msgstr "(我)" + +#: templates/helpdesk/ticket_list.html:115 +msgid "Ctrl-Click to select multiple options" +msgstr "Ctrol-Click选择多项" + +#: templates/helpdesk/ticket_list.html:120 +msgid "Queue(s)" +msgstr "待办(s)" + +#: templates/helpdesk/ticket_list.html:121 +#: templates/helpdesk/ticket_list.html:127 +msgid "Ctrl-click to select multiple options" +msgstr "Ctrol-click选择多项" + +#: templates/helpdesk/ticket_list.html:126 +msgid "Status(es)" +msgstr "状态(es)" + +#: templates/helpdesk/ticket_list.html:132 +msgid "Date (From)" +msgstr "日期(从)" + +#: templates/helpdesk/ticket_list.html:133 +msgid "Date (To)" +msgstr "日期(至)" + +#: templates/helpdesk/ticket_list.html:134 +msgid "Use YYYY-MM-DD date format, eg 2011-05-29" +msgstr "用 YYYY-MM-DD 日期格式, 如 2011-05-29" + +#: templates/helpdesk/ticket_list.html:140 +msgid "" +"Keywords are case-insensitive, and will be looked for in the title, body and" +" submitter fields." +msgstr "关键字大小写敏感, 将在标题,内容和提交者中被查找" + +#: templates/helpdesk/ticket_list.html:144 +msgid "Apply Filter" +msgstr "应用过滤" + +#: templates/helpdesk/ticket_list.html:146 +#, python-format +msgid "You are currently viewing saved query \"%(query_name)s\"." +msgstr "您正在查看保存的查询 \"%(query_name)s\"." + +#: templates/helpdesk/ticket_list.html:149 +#, python-format +msgid "" +"Run a report on this " +"query to see stats and charts for the data listed below." +msgstr " 在本查询 运行报表 查看下面的数据统计和图表." + +#: templates/helpdesk/ticket_list.html:162 +#: templates/helpdesk/ticket_list.html:181 +msgid "Save Query" +msgstr "保存查询" + +#: templates/helpdesk/ticket_list.html:172 +msgid "" +"This name appears in the drop-down list of saved queries. If you share your " +"query, other users will see this name, so choose something clear and " +"descriptive!" +msgstr "此名称出现在已保存查询的下拉列表, 如果您要共享查询,其他用户可以看到这个名字, 因此请选择清晰和描述性的名字" + +#: templates/helpdesk/ticket_list.html:174 +msgid "Shared?" +msgstr "共享?" + +#: templates/helpdesk/ticket_list.html:175 +msgid "Yes, share this query with other users." +msgstr "是,共享查询给其他用户" + +#: templates/helpdesk/ticket_list.html:176 +msgid "" +"If you share this query, it will be visible by all other logged-in " +"users." +msgstr "如果您共享此查询,它将被 所有 其他登录的用户所见." + +#: templates/helpdesk/ticket_list.html:195 +msgid "Use Saved Query" +msgstr "使用保存的查询" + +#: templates/helpdesk/ticket_list.html:202 +msgid "Query" +msgstr "查询" + +#: templates/helpdesk/ticket_list.html:207 +msgid "Run Query" +msgstr "运行查询" + +#: templates/helpdesk/ticket_list.html:240 +msgid "No Tickets Match Your Selection" +msgstr "没有匹配到您选择的工单" + +#: templates/helpdesk/ticket_list.html:247 +msgid "Previous" +msgstr "向前" + +#: templates/helpdesk/ticket_list.html:251 +#, python-format +msgid "Page %(ticket_num)s of %(num_pages)s." +msgstr "页 %(ticket_num)s of %(num_pages)s." + +#: templates/helpdesk/ticket_list.html:255 +msgid "Next" +msgstr "下一个" + +#: templates/helpdesk/ticket_list.html:260 +msgid "Select:" +msgstr "选择" + +#: templates/helpdesk/ticket_list.html:260 +msgid "None" +msgstr "空" + +#: templates/helpdesk/ticket_list.html:260 +msgid "Inverse" +msgstr "倒序" + +#: templates/helpdesk/ticket_list.html:262 +msgid "With Selected Tickets:" +msgstr "对选中的工单" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Take (Assign to me)" +msgstr "拿走(分配给我)" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Close" +msgstr "关闭" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Close (Don't Send E-Mail)" +msgstr "关闭(不要发送邮件)" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Close (Send E-Mail)" +msgstr "关闭(发送邮件)" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Assign To" +msgstr "分配给" + +#: templates/helpdesk/ticket_list.html:262 +msgid "Nobody (Unassign)" +msgstr "没有人(未分配)" + +#: templates/helpdesk/user_settings.html:3 +msgid "Change User Settings" +msgstr "改变用户设置" + +#: templates/helpdesk/user_settings.html:8 +msgid "" +"Use the following options to change the way your helpdesk system works for " +"you. These settings do not impact any other user." +msgstr "使用以下选项更改您系统的工作方式.这些设置不影响其他用户" + +#: templates/helpdesk/user_settings.html:14 +msgid "Save Options" +msgstr "保存选项" + +#: templates/helpdesk/registration/logged_out.html:2 +msgid "Logged Out" +msgstr "等出" + +#: templates/helpdesk/registration/logged_out.html:4 +msgid "" +"\n" +"

Logged Out

\n" +"\n" +"

Thanks for being here. Hopefully you've helped resolve a few tickets and make the world a better place.

\n" +"\n" +msgstr "\n

登出

\n\n

谢谢光顾,希望您帮助解决了一些工单,让世界更美好.

\n\n" + +#: templates/helpdesk/registration/login.html:2 +msgid "Helpdesk Login" +msgstr "Helpdesk 登录" + +#: templates/helpdesk/registration/login.html:14 +msgid "To log in simply enter your username and password below." +msgstr "输入您的用户名密码登录" + +#: templates/helpdesk/registration/login.html:17 +msgid "Your username and password didn't match. Please try again." +msgstr "您的用户名/密码不匹配,再试一次" + +#: templates/helpdesk/registration/login.html:20 +msgid "Login" +msgstr "登录" + +#: views/feeds.py:39 +#, python-format +msgid "Helpdesk: Open Tickets in queue %(queue)s for %(username)s" +msgstr "Helpdesk: 为用户 %(username)s在待办 %(queue)s 打开工单" + +#: views/feeds.py:44 +#, python-format +msgid "Helpdesk: Open Tickets for %(username)s" +msgstr "Helpdesk: 为用户 %(username)s 打开工单" + +#: views/feeds.py:50 +#, python-format +msgid "Open and Reopened Tickets in queue %(queue)s for %(username)s" +msgstr "在待办 %(queue)s 为用户 %(username)s 打开或者重开工单" + +#: views/feeds.py:55 +#, python-format +msgid "Open and Reopened Tickets for %(username)s" +msgstr "为用户 %(username)s 打开或者重开工单" + +#: views/feeds.py:102 +msgid "Helpdesk: Unassigned Tickets" +msgstr "Helpdesk: 未分配工单" + +#: views/feeds.py:103 +msgid "Unassigned Open and Reopened tickets" +msgstr "未分配的开放或者重新打开的工单" + +#: views/feeds.py:128 +msgid "Helpdesk: Recent Followups" +msgstr "Helpdesk: 最近跟进人" + +#: views/feeds.py:129 +msgid "" +"Recent FollowUps, such as e-mail replies, comments, attachments and " +"resolutions" +msgstr "最近更近,比如email回复,评论,附件和方案" + +#: views/feeds.py:144 +#, python-format +msgid "Helpdesk: Open Tickets in queue %(queue)s" +msgstr "Helpdesk: 代办 %(queue)s 中的开放工单 " + +#: views/feeds.py:149 +#, python-format +msgid "Open and Reopened Tickets in queue %(queue)s" +msgstr "在 %(queue)s 中打开和重新打开的工单" + +#: views/public.py:89 +msgid "Invalid ticket ID or e-mail address. Please try again." +msgstr "无效工单ID或者邮件地址, 请重试" + +#: views/public.py:107 +msgid "Submitter accepted resolution and closed ticket" +msgstr "提交者接受方案并关闭了工单" + +#: views/staff.py:235 +msgid "Accepted resolution and closed ticket" +msgstr "已接受方案并关闭的工单" + +#: views/staff.py:369 +#, python-format +msgid "Assigned to %(username)s" +msgstr "分配给 %(username)s" + +#: views/staff.py:392 +msgid "Updated" +msgstr "已更新" + +#: views/staff.py:577 +#, python-format +msgid "Assigned to %(username)s in bulk update" +msgstr "在集体更新中分配给 %(username)s in bulk update" + +#: views/staff.py:582 +msgid "Unassigned in bulk update" +msgstr "在集体更新中未分配" + +#: views/staff.py:587 views/staff.py:592 +msgid "Closed in bulk update" +msgstr "在集体更新中已关闭" + +#: views/staff.py:806 +msgid "" +"

Note: Your keyword search is case sensitive because of " +"your database. This means the search will not be accurate. " +"By switching to a different database system you will gain better searching! " +"For more information, read the Django Documentation on string matching in SQLite." +msgstr "

注意: 因为数据库,您的关键字查找大小写敏感,意味着搜索 精确. 切换到不同的数据库系统, 你可以获得更好的搜索, 更多信息,参考 Django Documentation on string matching in SQLite." + +#: views/staff.py:910 +msgid "Ticket taken off hold" +msgstr "从暂停区拿走的工单" + +#: views/staff.py:913 +msgid "Ticket placed on hold" +msgstr "待定工单" + +#: views/staff.py:1007 +msgid "User by Priority" +msgstr "用户按照优先级" + +#: views/staff.py:1013 +msgid "User by Queue" +msgstr "用户按照待办" + +#: views/staff.py:1019 +msgid "User by Status" +msgstr "用户按照状态" + +#: views/staff.py:1025 +msgid "User by Month" +msgstr "用户按月" + +#: views/staff.py:1031 +msgid "Queue by Priority" +msgstr "待办按照优先级" + +#: views/staff.py:1037 +msgid "Queue by Status" +msgstr "待办按照状态" + +#: views/staff.py:1043 +msgid "Queue by Month" +msgstr "待办按月" From 686d0f95404193a9f9f24f68e593c894efc7b692 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Sat, 9 Dec 2017 12:12:48 -0500 Subject: [PATCH 18/19] Update demodesk project version to match the django-helpdesk version --- demo/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/setup.py b/demo/setup.py index 02a18ebb..29e4dea8 100644 --- a/demo/setup.py +++ b/demo/setup.py @@ -13,7 +13,7 @@ project_root = os.path.dirname(here) NAME = 'django-helpdesk-demodesk' DESCRIPTION = 'A demo Django project using django-helpdesk' README = open(os.path.join(here, 'README.rst')).read() -VERSION = '0.2.0' +VERSION = '0.2.2' #VERSION = open(os.path.join(project_root, 'VERSION')).read().strip() AUTHOR = 'django-helpdesk team' URL = 'https://github.com/django-helpdesk/django-helpdesk' From 980e8b6f7d06ef1e3bac297782058ed7ad247b64 Mon Sep 17 00:00:00 2001 From: Garret Wassermann Date: Sat, 9 Dec 2017 22:53:47 -0500 Subject: [PATCH 19/19] Update version to 0.2.3 to include zh_Hans translations forgotten from 0.2.2 upload --- demo/setup.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demo/setup.py b/demo/setup.py index 29e4dea8..998c5e69 100644 --- a/demo/setup.py +++ b/demo/setup.py @@ -13,7 +13,7 @@ project_root = os.path.dirname(here) NAME = 'django-helpdesk-demodesk' DESCRIPTION = 'A demo Django project using django-helpdesk' README = open(os.path.join(here, 'README.rst')).read() -VERSION = '0.2.2' +VERSION = '0.2.3' #VERSION = open(os.path.join(project_root, 'VERSION')).read().strip() AUTHOR = 'django-helpdesk team' URL = 'https://github.com/django-helpdesk/django-helpdesk' diff --git a/setup.py b/setup.py index 6b2a1c26..9ebf707f 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ from distutils.util import convert_path from fnmatch import fnmatchcase from setuptools import setup, find_packages -version = '0.2.2' +version = '0.2.3' # Provided as an attribute, so you can append to these instead # of replicating them: