├── tests
├── __init__.py
├── urls.py
├── manage.py
└── settings.py
├── django_messages
├── signals.py
├── management
│ ├── __init__.py
│ └── commands
│ │ ├── __init__.py
│ │ └── delete_deleted_messages.py
├── migrations
│ ├── __init__.py
│ ├── 0002_auto_20160607_0852.py
│ ├── 0003_auto_20190617_1316.py
│ └── 0001_initial.py
├── templatetags
│ ├── __init__.py
│ └── inbox.py
├── locale
│ ├── ar
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── ca
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── cs
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── da
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── de
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── el
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── es
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── eu
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── fa
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── fr
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── id
│ │ └── LC_MESSAGES
│ │ │ └── django.mo
│ ├── it
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── ko
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── lt
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── nl
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── pl
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── ro
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── ru
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── es_AR
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ ├── pt_BR
│ │ └── LC_MESSAGES
│ │ │ ├── django.mo
│ │ │ └── django.po
│ └── zh_CN
│ │ └── LC_MESSAGES
│ │ ├── django.mo
│ │ └── django.po
├── __init__.py
├── templates
│ ├── notification
│ │ ├── messages_deleted
│ │ │ ├── full.txt
│ │ │ └── notice.html
│ │ ├── messages_recovered
│ │ │ ├── full.txt
│ │ │ └── notice.html
│ │ ├── messages_received
│ │ │ ├── short.txt
│ │ │ ├── notice.html
│ │ │ └── full.txt
│ │ ├── messages_reply_received
│ │ │ ├── short.txt
│ │ │ ├── notice.html
│ │ │ └── full.txt
│ │ ├── messages_sent
│ │ │ ├── full.txt
│ │ │ └── notice.html
│ │ └── messages_replied
│ │ │ ├── full.txt
│ │ │ └── notice.html
│ ├── base.html
│ └── django_messages
│ │ ├── compose.html
│ │ ├── new_message.html
│ │ ├── base.html
│ │ ├── outbox.html
│ │ ├── trash.html
│ │ ├── inbox.html
│ │ └── view.html
├── apps.py
├── context_processors.py
├── urls.py
├── management.py
├── forms.py
├── fields.py
├── utils.py
├── models.py
├── admin.py
└── views.py
├── .gitignore
├── docs
├── django-messages.png
├── README.txt
├── install.txt
├── index.txt
├── usage.txt
├── customizing.txt
└── conf.py
├── MANIFEST.in
├── AUTHORS
├── INSTALL
├── setup.py
├── LICENSE
├── tox.ini
├── UPGRADING
└── README.rst
/tests/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/django_messages/signals.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/django_messages/management/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/django_messages/migrations/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/django_messages/templatetags/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/django_messages/management/commands/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.pyc
2 | MANIFEST
3 | dist
4 | .tox
5 | .DS_Store
6 | docs/build
7 |
--------------------------------------------------------------------------------
/docs/django-messages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/docs/django-messages.png
--------------------------------------------------------------------------------
/docs/README.txt:
--------------------------------------------------------------------------------
1 | run
2 |
3 | sphinx-build . build/
4 |
5 | to build the documentation into the a directory named ./build/
6 |
--------------------------------------------------------------------------------
/django_messages/locale/ar/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/ar/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/ca/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/ca/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/cs/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/cs/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/da/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/da/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/de/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/de/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/el/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/el/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/es/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/es/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/eu/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/eu/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/fa/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/fa/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/fr/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/fr/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/id/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/id/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/it/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/it/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/ko/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/ko/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/lt/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/lt/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/nl/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/nl/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/pl/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/pl/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/ro/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/ro/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/ru/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/ru/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/es_AR/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/es_AR/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/pt_BR/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/pt_BR/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/django_messages/locale/zh_CN/LC_MESSAGES/django.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/arneb/django-messages/HEAD/django_messages/locale/zh_CN/LC_MESSAGES/django.mo
--------------------------------------------------------------------------------
/tests/urls.py:
--------------------------------------------------------------------------------
1 | from django.conf.urls import url, include
2 |
3 |
4 | urlpatterns = [
5 | url(r'^messages/', include('django_messages.urls')),
6 | ]
7 |
--------------------------------------------------------------------------------
/django_messages/__init__.py:
--------------------------------------------------------------------------------
1 | VERSION = (0, 6, 0,)
2 | __version__ = '.'.join(map(str, VERSION))
3 | default_app_config = 'django_messages.apps.DjangoMessagesConfig'
4 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_deleted/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans %}You have deleted the message '{{ message }}'.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_recovered/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans %}You have recovered the message '{{ message }}'.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_received/short.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.sender as message_sender %}{{ notice }} by {{ message_sender }}{% endblocktrans %}
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_reply_received/short.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.sender as message_sender %}{{ notice }} by {{ message_sender }}{% endblocktrans %}
--------------------------------------------------------------------------------
/django_messages/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {% block content %}
8 |
9 | {% endblock %}
10 |
11 |
12 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_sent/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.recipient as message_recipient %}You have sent the message '{{ message }}' to {{ message_recipient }}.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/django_messages/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 | from django.utils.translation import ugettext_lazy as _
3 |
4 | class DjangoMessagesConfig(AppConfig):
5 | name = 'django_messages'
6 | verbose_name = _('Messages')
7 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_deleted/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.get_absolute_url as message_url %}You have deleted the message {{ message }}.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_recovered/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.get_absolute_url as message_url %}You have recovered the message {{ message }}.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include AUTHORS
2 | include LICENSE
3 | include INSTALL
4 | include UPGRADING
5 | include README.rst
6 | recursive-include django_messages/locale *.po *.mo
7 | recursive-include django_messages/templates *.html *.txt
8 | include docs/*
9 | exclude docs/conf.py
10 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_replied/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.parent_msg as message_parent_msg and message.recipient as message_recipient %}You have replied to '{{ message_parent_msg }}' from {{ message_recipient }}.{% endblocktrans %}
2 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_received/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}
2 | {% blocktrans with message.get_absolute_url as message_url and message.sender as message_sender %}You have received the message {{ message }} from {{ message_sender }}.{% endblocktrans %}
3 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_sent/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}
2 | {% blocktrans with message.get_absolute_url as message_url and message.recipient as message_recipient %}You have sent the message {{ message }} to {{ message_recipient }}.{% endblocktrans %}
3 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | Arne Brodowski
2 | Jannis Leidel
3 | Frédéric Roland
4 | Juanjo-sfe
5 | maczewski
6 | paz.lupita
7 | Diego Martins
8 | overkrik
9 | krisje8
10 | Michael Lind Mortensen
11 | Markos Gogoulos
12 | Gene Wu
13 | dpaccoud
14 | speedy
15 | Sergio Morstabilini
16 | paluh
17 | Jeong YunWon
18 | Jay S. Liew
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_reply_received/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}
2 | {% blocktrans with message.get_absolute_url as message_url and message.sender as message_sender and message.parent_msg as message_parent_msg %}{{ message_sender }} has sent you a reply to {{ message_parent_msg }}.{% endblocktrans %}
3 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_replied/notice.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}
2 | {% blocktrans with message.parent_msg.get_absolute_url as message_url and message.parent_msg as message_parent_msg and message.recipient as message_recipient %}You have replied to {{ message_parent_msg }} from {{ message_recipient }}.{% endblocktrans %}
3 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_received/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.sender as message_sender and message.body|safe as message_body and message.get_absolute_url as message_url %}{{ message_sender }} has sent you a message:
2 |
3 | {{ message }}
4 |
5 | {{ message_body }}
6 |
7 | http://{{ current_site }}{{ message_url }}{% endblocktrans %}
8 |
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/compose.html:
--------------------------------------------------------------------------------
1 | {% extends "django_messages/base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% trans "Compose Message"%}
6 |
13 |
14 | {% endblock %}
15 |
--------------------------------------------------------------------------------
/django_messages/templates/notification/messages_reply_received/full.txt:
--------------------------------------------------------------------------------
1 | {% load i18n %}{% blocktrans with message.sender as message_sender and message.parent_msg as message_parent_msg and message.body|safe as message_body and message.get_absolute_url as message_url %}{{ message_sender }} replied to '{{ message_parent_msg }}':
2 |
3 | {{ message }}
4 |
5 | {{ message_body }}
6 |
7 | http://{{ current_site }}{{ message_url }}{% endblocktrans %}
--------------------------------------------------------------------------------
/django_messages/context_processors.py:
--------------------------------------------------------------------------------
1 | from django_messages.models import inbox_count_for
2 |
3 | def _user_is_authenticated(user):
4 | # django < 2.0
5 | try:
6 | return user.is_authenticated()
7 | except TypeError:
8 | # django >= 2.0
9 | return user.is_authenticated
10 |
11 | def inbox(request):
12 | if _user_is_authenticated(request.user):
13 | return {'messages_inbox_count': inbox_count_for(request.user)}
14 | else:
15 | return {}
16 |
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/new_message.html:
--------------------------------------------------------------------------------
1 | {% load i18n %}
2 |
3 | {% blocktrans with recipient=message.recipient sender=message.sender %}Hello {{ recipient }},
4 |
5 | you received a private message from {{ sender }} with
6 | the following contents:{% endblocktrans %}
7 |
8 | {{ message.body|safe }}
9 |
10 | --
11 | {% blocktrans %}Sent from {{ site_url }}{% endblocktrans %}
12 | {% trans "Inbox" %}: {{ site_url }}{% url 'messages_inbox' %}
13 | {% trans "Reply" %}: {{ site_url }}{% url 'messages_reply' message.pk %}
--------------------------------------------------------------------------------
/tests/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 | from django import VERSION
5 |
6 | sys.path.insert(0, os.path.join(os.path.dirname(__file__), os.path.pardir))
7 |
8 | if __name__ == "__main__":
9 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
10 |
11 | if VERSION < (1, 6):
12 | test_runners_args = {
13 | 'TEST_RUNNER': 'discover_runner.DiscoverRunner',
14 | }
15 | from django.core.management import execute_from_command_line
16 |
17 | execute_from_command_line(sys.argv)
18 |
--------------------------------------------------------------------------------
/django_messages/migrations/0002_auto_20160607_0852.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | from django.db import models, migrations
5 |
6 |
7 | class Migration(migrations.Migration):
8 |
9 | dependencies = [
10 | ('django_messages', '0001_initial'),
11 | ]
12 |
13 | operations = [
14 | migrations.AlterField(
15 | model_name='message',
16 | name='subject',
17 | field=models.CharField(max_length=140, verbose_name='Subject'),
18 | preserve_default=True,
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/base.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% endblock %}
6 | {% block sidebar %}
7 |
13 | {% endblock %}
14 |
--------------------------------------------------------------------------------
/django_messages/migrations/0003_auto_20190617_1316.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.2.2 on 2019-06-17 11:16
2 |
3 | from django.conf import settings
4 | from django.db import migrations, models
5 | import django.db.models.deletion
6 |
7 |
8 | class Migration(migrations.Migration):
9 |
10 | dependencies = [
11 | ('django_messages', '0002_auto_20160607_0852'),
12 | ]
13 |
14 | operations = [
15 | migrations.AlterField(
16 | model_name='message',
17 | name='sender',
18 | field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='sent_messages', to=settings.AUTH_USER_MODEL, verbose_name='Sender'),
19 | ),
20 | ]
21 |
--------------------------------------------------------------------------------
/django_messages/urls.py:
--------------------------------------------------------------------------------
1 | from django.conf.urls import url
2 | from django.views.generic import RedirectView
3 |
4 | from django_messages.views import *
5 |
6 | urlpatterns = [
7 | url(r'^$', RedirectView.as_view(permanent=True, url='inbox/'), name='messages_redirect'),
8 | url(r'^inbox/$', inbox, name='messages_inbox'),
9 | url(r'^outbox/$', outbox, name='messages_outbox'),
10 | url(r'^compose/$', compose, name='messages_compose'),
11 | url(r'^compose/(?P[\w.@+-]+)/$', compose, name='messages_compose_to'),
12 | url(r'^reply/(?P[\d]+)/$', reply, name='messages_reply'),
13 | url(r'^view/(?P[\d]+)/$', view, name='messages_detail'),
14 | url(r'^delete/(?P[\d]+)/$', delete, name='messages_delete'),
15 | url(r'^undelete/(?P[\d]+)/$', undelete, name='messages_undelete'),
16 | url(r'^trash/$', trash, name='messages_trash'),
17 | ]
18 |
--------------------------------------------------------------------------------
/INSTALL:
--------------------------------------------------------------------------------
1 | To install it, run the following command inside this directory:
2 |
3 | python setup.py install
4 |
5 | If you have the Python ``easy_install`` utility available, you can
6 | also type the following to download and install in one step::
7 |
8 | easy_install django-messages
9 |
10 | Or if you're using ``pip``::
11 |
12 | pip install django-messages
13 |
14 | Or if you'd prefer you can simply place the included ``messages``
15 | directory somewhere on your Python path, or symlink to it from
16 | somewhere on your Python path; this is useful if you're working from a
17 | Subversion checkout.
18 |
19 | Note that this application requires Python 2.4 or later, and Django 1.0 or
20 | later. You can obtain Python from http://www.python.org/ and Django
21 | from http://www.djangoproject.com/.
22 |
23 | Most of this install notice was bluntly stolen from James Bennett's registration
24 | package, http://www.bitbucket.org/ubernostrum/django-registration/
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/outbox.html:
--------------------------------------------------------------------------------
1 | {% extends "django_messages/base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% trans "Sent Messages" %}
6 | {% if message_list %}
7 |
8 |
9 | | {% trans "Recipient" %} | {% trans "Subject" %} | {% trans "Sent" %} | {% trans "Action" %} |
10 |
11 |
12 | {% for message in message_list %}
13 |
14 | | {{ message.recipient }} |
15 |
16 | {{ message.subject }}
17 | |
18 | {{ message.sent_at|date:_("DATETIME_FORMAT") }} |
19 | {% trans "delete" %} |
20 |
21 | {% endfor %}
22 |
23 |
24 | {% else %}
25 | {% trans "No messages." %}
26 | {% endif %}
27 | {% endblock %}
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/trash.html:
--------------------------------------------------------------------------------
1 | {% extends "django_messages/base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% trans "Deleted Messages" %}
6 | {% if message_list %}
7 |
8 |
9 | | {% trans "Sender" %} | {% trans "Subject" %} | {% trans "Date" %} | {% trans "Action" %} |
10 |
11 |
12 | {% for message in message_list %}
13 |
14 | | {{ message.sender }} |
15 |
16 | {{ message.subject }}
17 | |
18 | {{ message.sent_at|date:_("DATETIME_FORMAT") }} |
19 | {% trans "undelete" %} |
20 |
21 | {% endfor %}
22 |
23 |
24 | {% else %}
25 | {% trans "No messages." %}
26 | {% endif %}
27 |
28 | {% trans "Deleted Messages are removed from the trash at unregular intervals, don't rely on this feature for long-time storage." %}
29 | {% endblock %}
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/inbox.html:
--------------------------------------------------------------------------------
1 | {% extends "django_messages/base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% trans "Inbox" %}
6 | {% if message_list %}
7 |
8 |
9 | | {% trans "Sender" %} | {% trans "Subject" %} | {% trans "Received" %} | {% trans "Action" %} |
10 |
11 |
12 | {% for message in message_list %}
13 |
14 | | {{ message.sender }} |
15 |
16 | {% if message.new %}{% endif %}
17 | {% if message.replied %}{% endif %}
18 | {{ message.subject }}
19 | {% if message.replied %}{% endif %}
20 | {% if message.new %}{% endif %} |
21 | {{ message.sent_at|date:_("DATETIME_FORMAT") }} |
22 | {% trans "delete" %} |
23 |
24 | {% endfor %}
25 |
26 |
27 | {% else %}
28 | {% trans "No messages." %}
29 | {% endif %}
30 | {% endblock %}
--------------------------------------------------------------------------------
/django_messages/management/commands/delete_deleted_messages.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | from django.core.management.base import BaseCommand, CommandError
3 | from django.utils import timezone
4 | from ...models import Message
5 |
6 |
7 | class Command(BaseCommand):
8 | args = ''
9 | help = (
10 | 'Deletes messages that have been marked as deleted by both the sender '
11 | 'and recipient. You must provide the minimum age in days.'
12 | )
13 |
14 | def add_arguments(self, parser):
15 | parser.add_argument('age', type=int)
16 |
17 | def handle(self, *args, **options):
18 | if not options['age']:
19 | raise CommandError('You must provide the minimum age in days.')
20 |
21 | try:
22 | age_in_days = options['age']
23 | except ValueError:
24 | raise CommandError('"%s" is not an integer.' % options['age'])
25 |
26 | the_date = timezone.now() - datetime.timedelta(days=age_in_days)
27 |
28 | Message.objects.filter(
29 | recipient_deleted_at__lte=the_date,
30 | sender_deleted_at__lte=the_date,
31 | ).delete()
32 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from distutils.core import setup
2 |
3 | setup(
4 | name='django-messages',
5 | version=__import__('django_messages').__version__,
6 | description='User-to-user messaging system for Django',
7 | long_description=open('README.rst').read(),
8 | author='Arne Brodowski',
9 | author_email='mail@arnebrodowski.de',
10 | url='https://github.com/arneb/django-messages',
11 | install_requires=[
12 | 'Django'
13 | ],
14 | packages=(
15 | 'django_messages',
16 | 'django_messages.templatetags',
17 | 'django_messages.migrations',
18 | ),
19 | package_data={
20 | 'django_messages': [
21 | 'templates/django_messages/*',
22 | 'templates/notification/*/*',
23 | 'locale/*/LC_MESSAGES/*',
24 | ]
25 | },
26 | classifiers=(
27 | 'Development Status :: 4 - Beta',
28 | 'Environment :: Web Environment',
29 | 'Intended Audience :: Developers',
30 | 'License :: OSI Approved :: BSD License',
31 | 'Operating System :: OS Independent',
32 | 'Programming Language :: Python',
33 | 'Topic :: Utilities',
34 | 'Framework :: Django',
35 | ),
36 | )
37 |
--------------------------------------------------------------------------------
/django_messages/templates/django_messages/view.html:
--------------------------------------------------------------------------------
1 | {% extends "django_messages/base.html" %}
2 | {% load i18n %}
3 |
4 | {% block content %}
5 | {% trans "View Message" %}
6 |
16 | {{ message.body|linebreaksbr }}
17 |
18 | {% ifequal message.recipient.pk user.pk %}
19 | {% trans "Reply" %}
20 | {% endifequal %}
21 | {% trans "Delete" %}
22 |
23 | {% comment %}Example reply_form integration
24 | {% if reply_form %}
25 | {% trans "Compose reply"%}
26 |
33 | {% endif %}
34 | {% endcomment %}
35 | {% endblock %}
--------------------------------------------------------------------------------
/django_messages/management.py:
--------------------------------------------------------------------------------
1 | from django.db.models import signals
2 | from django.conf import settings
3 | from django.utils.translation import ugettext_noop as _
4 |
5 | if "pinax.notifications" in settings.INSTALLED_APPS and getattr(settings, 'DJANGO_MESSAGES_NOTIFY', True):
6 | from pinax.notifications import models as notification
7 |
8 | def create_notice_types(app, created_models, verbosity, **kwargs):
9 | notification.create_notice_type("messages_received", _("Message Received"), _("you have received a message"), default=2)
10 | notification.create_notice_type("messages_sent", _("Message Sent"), _("you have sent a message"), default=1)
11 | notification.create_notice_type("messages_replied", _("Message Replied"), _("you have replied to a message"), default=1)
12 | notification.create_notice_type("messages_reply_received", _("Reply Received"), _("you have received a reply to a message"), default=2)
13 | notification.create_notice_type("messages_deleted", _("Message Deleted"), _("you have deleted a message"), default=1)
14 | notification.create_notice_type("messages_recovered", _("Message Recovered"), _("you have undeleted a message"), default=1)
15 |
16 | signals.post_syncdb.connect(create_notice_types, sender=notification)
17 | else:
18 | print("Skipping creation of NoticeTypes as notification app not found")
19 |
--------------------------------------------------------------------------------
/django_messages/templatetags/inbox.py:
--------------------------------------------------------------------------------
1 | from django.template import Library, Node, TemplateSyntaxError
2 |
3 | class InboxOutput(Node):
4 | def __init__(self, varname=None):
5 | self.varname = varname
6 |
7 | def render(self, context):
8 | try:
9 | user = context['user']
10 | count = user.received_messages.filter(read_at__isnull=True, recipient_deleted_at__isnull=True).count()
11 | except (KeyError, AttributeError):
12 | count = ''
13 | if self.varname is not None:
14 | context[self.varname] = count
15 | return ""
16 | else:
17 | return "%s" % (count)
18 |
19 | def do_print_inbox_count(parser, token):
20 | """
21 | A templatetag to show the unread-count for a logged in user.
22 | Returns the number of unread messages in the user's inbox.
23 | Usage::
24 |
25 | {% load inbox %}
26 | {% inbox_count %}
27 |
28 | {# or assign the value to a variable: #}
29 |
30 | {% inbox_count as my_var %}
31 | {{ my_var }}
32 |
33 | """
34 | bits = token.contents.split()
35 | if len(bits) > 1:
36 | if len(bits) != 3:
37 | raise TemplateSyntaxError("inbox_count tag takes either no arguments or exactly two arguments")
38 | if bits[1] != 'as':
39 | raise TemplateSyntaxError("first argument to inbox_count tag must be 'as'")
40 | return InboxOutput(bits[2])
41 | else:
42 | return InboxOutput()
43 |
44 | register = Library()
45 | register.tag('inbox_count', do_print_inbox_count)
46 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008-2010, Arne Brodowski
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are
6 | met:
7 |
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 | * Redistributions in binary form must reproduce the above
11 | copyright notice, this list of conditions and the following
12 | disclaimer in the documentation and/or other materials provided
13 | with the distribution.
14 | * Neither the name of the author nor the names of other
15 | contributors may be used to endorse or promote products derived
16 | from this software without specific prior written permission.
17 |
18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/tests/settings.py:
--------------------------------------------------------------------------------
1 | import os.path
2 |
3 | INSTALLED_APPS = [
4 | 'django.contrib.auth',
5 | 'django.contrib.contenttypes',
6 | 'django.contrib.sessions',
7 | 'django.contrib.sites',
8 | 'django_messages'
9 | ]
10 |
11 | # Django >= 2.0
12 | MIDDLEWARE = (
13 | 'django.contrib.sessions.middleware.SessionMiddleware',
14 | 'django.middleware.common.CommonMiddleware',
15 | 'django.middleware.csrf.CsrfViewMiddleware',
16 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
17 | 'django.contrib.messages.middleware.MessageMiddleware',
18 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
19 | )
20 |
21 | # Django < 2.0
22 | MIDDLEWARE_CLASSES = MIDDLEWARE
23 |
24 |
25 | SITE_ID = 1
26 | SECRET_KEY = '+zzix-&k$afk-k0d0s7v01w0&15z#ne$71qf28#e$$c*@g742z'
27 |
28 | ROOT_URLCONF = "urls"
29 |
30 | DEBUG = True
31 |
32 | STATIC_URL = '/static/'
33 |
34 | DATABASES = {
35 | 'default': {
36 | 'ENGINE': 'django.db.backends.sqlite3',
37 | 'NAME': os.path.join(os.path.dirname(__file__), 'database.db'),
38 | }
39 | }
40 |
41 | TEMPLATES = [
42 | {
43 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
44 | 'DIRS': [],
45 | 'APP_DIRS': True,
46 | 'OPTIONS': {
47 | 'context_processors': [
48 | 'django.template.context_processors.debug',
49 | 'django.template.context_processors.request',
50 | 'django.contrib.auth.context_processors.auth',
51 | 'django.contrib.messages.context_processors.messages',
52 | ],
53 | },
54 | },
55 | ]
56 |
--------------------------------------------------------------------------------
/tox.ini:
--------------------------------------------------------------------------------
1 | [tox]
2 | envlist =
3 | py2.7-d1.7, py2.7-d1.8, py2.7-d1.9, py2.7-d1.10, py2.7-d1.11,
4 | py3.5-d1.8, py3.5-d1.9, py3.5-d1.10, py3.5-d1.11, py3.5-d2.0,
5 | py3.5-d2.1, py3.5-d2.2, py3.6-d1.11, py3.6-d2.0, py3.6-d2.1,
6 | py3.6-d2.2
7 |
8 | [testenv]
9 | commands = {envpython} tests/manage.py test django_messages --settings=settings
10 |
11 |
12 | # Python 2.7
13 |
14 | [testenv:py2.7-d1.7]
15 | basepython = python2.7
16 | deps = django>=1.7.1,<1.8
17 |
18 | [testenv:py2.7-d1.8]
19 | basepython = python2.7
20 | deps = django>=1.8,<1.9
21 |
22 | [testenv:py2.7-d1.9]
23 | basepython = python2.7
24 | deps = django>=1.9,<1.9.99
25 |
26 | [testenv:py2.7-d1.10]
27 | basepython = python2.7
28 | deps = django>=1.10,<1.10.99
29 |
30 | [testenv:py2.7-d1.11]
31 | basepython = python2.7
32 | deps = django>=1.11,<1.11.99
33 |
34 | # Python 3.5
35 |
36 | [testenv:py3.5-d1.8]
37 | basepython = python3.5
38 | deps = django>=1.8,<1.9
39 |
40 | [testenv:py3.5-d1.9]
41 | basepython = python3.5
42 | deps = django>=1.9,<1.9.99
43 |
44 | [testenv:py3.5-d1.10]
45 | basepython = python3.5
46 | deps = django>=1.10,<1.10.99
47 |
48 | [testenv:py3.5-d1.11]
49 | basepython = python3.5
50 | deps = django>=1.11,<1.11.99
51 |
52 | [testenv:py3.5-d2.0]
53 | basepython = python3.5
54 | deps = django>=2.0,<2.0.99
55 |
56 | [testenv:py3.5-d2.1]
57 | basepython = python3.5
58 | deps = django>=2.1,<2.1.99
59 |
60 | [testenv:py3.5-d2.2]
61 | basepython = python3.5
62 | deps = django>=2.2,<2.2.99
63 |
64 | # Python 3.6
65 |
66 | [testenv:py3.6-d1.11]
67 | basepython = python3.6
68 | deps = django>=1.11,<1.11.99
69 |
70 | [testenv:py3.6-d2.0]
71 | basepython = python3.6
72 | deps = django>=2.0,<2.0.99
73 |
74 | [testenv:py3.6-d2.1]
75 | basepython = python3.6
76 | deps = django>=2.1,<2.1.99
77 |
78 | [testenv:py3.6-d2.2]
79 | basepython = python3.6
80 | deps = django>=2.2,<2.2.99
--------------------------------------------------------------------------------
/UPGRADING:
--------------------------------------------------------------------------------
1 | ========================================
2 | Upgrading django-messages 0.4.x to 0.5.x
3 | ========================================
4 |
5 | To Upgrade from django-messages 0.4.x to django-messages 0.5.x the following
6 | changes might be neccessary in your project.
7 |
8 |
9 | Settings
10 | --------
11 |
12 | To avoid name clashes with the new django.contrib.messages app (new in Django 1.2)
13 | the django-messages python module was renamed from ``messages`` to ``django_messages``.
14 |
15 | This makes a change of the INSTALLED_APPS setting neccessary:
16 |
17 | Old::
18 |
19 | INSTALLED_APPS = (
20 | ...
21 | 'messages',
22 | ...
23 | )
24 |
25 | New::
26 |
27 | INSTALLED_APPS = (
28 | ...
29 | 'django_messages',
30 | ...
31 | )
32 |
33 | If you are using the ``inbox`` context processor, the TEMPLATE_CONTEXT_PROCESSORS
34 | setting also needs to be changed:
35 |
36 | Old::
37 |
38 | TEMPLATE_CONTEXT_PROCESSORS = (
39 | ...
40 | 'messages.context_processors.inbox',
41 | ...
42 | )
43 |
44 | New::
45 |
46 | TEMPLATE_CONTEXT_PROCESSORS = (
47 | ...
48 | 'django_messages.context_processors.inbox',
49 | ...
50 | )
51 |
52 |
53 | Templates
54 | ---------
55 |
56 | To keep the convention that a reuseable app should keep its templates in a
57 | folder with the name of the app, all templates where moved from the folder
58 | ``messages`` to the folder ``django_messages``. That means if you provided
59 | your own templates for django-messages, you should also move the directory from
60 | ``messages`` to ``django_messages``. Example::
61 |
62 | mv myproject/templates/messages myproject/templates/django_messages
63 |
64 |
65 | Database
66 | --------
67 |
68 | Depending on the Database used this process may differ but you have to
69 | rename the existing table ``messages_message`` to ``django_messages_message``.
70 |
71 |
--------------------------------------------------------------------------------
/django_messages/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | from __future__ import unicode_literals
3 |
4 | from django.db import models, migrations
5 | from django.conf import settings
6 |
7 |
8 | class Migration(migrations.Migration):
9 |
10 | dependencies = [
11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12 | ]
13 |
14 | operations = [
15 | migrations.CreateModel(
16 | name='Message',
17 | fields=[
18 | ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
19 | ('subject', models.CharField(max_length=120, verbose_name='Subject')),
20 | ('body', models.TextField(verbose_name='Body')),
21 | ('sent_at', models.DateTimeField(null=True, verbose_name='sent at', blank=True)),
22 | ('read_at', models.DateTimeField(null=True, verbose_name='read at', blank=True)),
23 | ('replied_at', models.DateTimeField(null=True, verbose_name='replied at', blank=True)),
24 | ('sender_deleted_at', models.DateTimeField(null=True, verbose_name='Sender deleted at', blank=True)),
25 | ('recipient_deleted_at', models.DateTimeField(null=True, verbose_name='Recipient deleted at', blank=True)),
26 | ('parent_msg', models.ForeignKey(related_name='next_messages', verbose_name='Parent message', blank=True, to='django_messages.Message', null=True, on_delete=models.SET_NULL)),
27 | ('recipient', models.ForeignKey(related_name='received_messages', verbose_name='Recipient', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)),
28 | ('sender', models.ForeignKey(related_name='sent_messages', verbose_name='Sender', to=settings.AUTH_USER_MODEL, on_delete=models.SET_NULL)),
29 | ],
30 | options={
31 | 'ordering': ['-sent_at'],
32 | 'verbose_name': 'Message',
33 | 'verbose_name_plural': 'Messages',
34 | },
35 | bases=(models.Model,),
36 | ),
37 | ]
38 |
--------------------------------------------------------------------------------
/django_messages/forms.py:
--------------------------------------------------------------------------------
1 | from django import forms
2 | from django.conf import settings
3 | from django.utils.translation import ugettext_lazy as _
4 | from django.utils import timezone
5 |
6 | if "pinax.notifications" in settings.INSTALLED_APPS and getattr(settings, 'DJANGO_MESSAGES_NOTIFY', True):
7 | from pinax.notifications import models as notification
8 | else:
9 | notification = None
10 |
11 | from django_messages.models import Message
12 | from django_messages.fields import CommaSeparatedUserField
13 |
14 | class ComposeForm(forms.Form):
15 | """
16 | A simple default form for private messages.
17 | """
18 | recipient = CommaSeparatedUserField(label=_(u"Recipient"))
19 | subject = forms.CharField(label=_(u"Subject"), max_length=140)
20 | body = forms.CharField(label=_(u"Body"),
21 | widget=forms.Textarea(attrs={'rows': '12', 'cols':'55'}))
22 |
23 |
24 | def __init__(self, *args, **kwargs):
25 | recipient_filter = kwargs.pop('recipient_filter', None)
26 | super(ComposeForm, self).__init__(*args, **kwargs)
27 | if recipient_filter is not None:
28 | self.fields['recipient']._recipient_filter = recipient_filter
29 |
30 |
31 | def save(self, sender, parent_msg=None):
32 | recipients = self.cleaned_data['recipient']
33 | subject = self.cleaned_data['subject']
34 | body = self.cleaned_data['body']
35 | message_list = []
36 | for r in recipients:
37 | msg = Message(
38 | sender = sender,
39 | recipient = r,
40 | subject = subject,
41 | body = body,
42 | )
43 | if parent_msg is not None:
44 | msg.parent_msg = parent_msg
45 | parent_msg.replied_at = timezone.now()
46 | parent_msg.save()
47 | msg.save()
48 | message_list.append(msg)
49 | if notification:
50 | if parent_msg is not None:
51 | notification.send([sender], "messages_replied", {'message': msg,})
52 | notification.send([r], "messages_reply_received", {'message': msg,})
53 | else:
54 | notification.send([sender], "messages_sent", {'message': msg,})
55 | notification.send([r], "messages_received", {'message': msg,})
56 | return message_list
57 |
--------------------------------------------------------------------------------
/django_messages/fields.py:
--------------------------------------------------------------------------------
1 | """
2 | Based on http://www.djangosnippets.org/snippets/595/
3 | by sopelkin
4 | """
5 |
6 | from django import forms
7 | from django.forms import widgets
8 | from django.utils.translation import ugettext_lazy as _
9 |
10 | from django_messages.utils import get_user_model, get_username_field
11 |
12 | User = get_user_model()
13 |
14 |
15 | class CommaSeparatedUserInput(widgets.Input):
16 | input_type = 'text'
17 |
18 | def render(self, name, value, **kwargs):
19 | if value is None:
20 | value = ''
21 | elif isinstance(value, (list, tuple)):
22 | value = (', '.join([getattr(user, get_username_field()) for user in value]))
23 | return super(CommaSeparatedUserInput, self).render(name, value, **kwargs)
24 |
25 |
26 |
27 | class CommaSeparatedUserField(forms.Field):
28 | widget = CommaSeparatedUserInput
29 |
30 | def __init__(self, *args, **kwargs):
31 | recipient_filter = kwargs.pop('recipient_filter', None)
32 | self._recipient_filter = recipient_filter
33 | super(CommaSeparatedUserField, self).__init__(*args, **kwargs)
34 |
35 | def clean(self, value):
36 | super(CommaSeparatedUserField, self).clean(value)
37 | if not value:
38 | return ''
39 | if isinstance(value, (list, tuple)):
40 | return value
41 |
42 | names = set(value.split(','))
43 | names_set = set([name.strip() for name in names if name.strip()])
44 | users = list(User.objects.filter(**{'%s__in' % get_username_field(): names_set}))
45 | unknown_names = names_set ^ set([getattr(user, get_username_field()) for user in users])
46 |
47 | recipient_filter = self._recipient_filter
48 | invalid_users = []
49 | if recipient_filter is not None:
50 | for r in users:
51 | if recipient_filter(r) is False:
52 | users.remove(r)
53 | invalid_users.append(getattr(r, get_username_field()))
54 |
55 | if unknown_names or invalid_users:
56 | raise forms.ValidationError(_(u"The following usernames are incorrect: %(users)s") % {'users': ', '.join(list(unknown_names)+invalid_users)})
57 |
58 | return users
59 |
60 | def prepare_value(self, value):
61 | if value is None:
62 | value = ''
63 | elif isinstance(value, (list, tuple)):
64 | value = (', '.join([getattr(user, get_username_field()) for user in value]))
65 | return value
66 |
--------------------------------------------------------------------------------
/docs/install.txt:
--------------------------------------------------------------------------------
1 | .. _ref-messages-install:
2 |
3 | ==========================
4 | Installing django-messages
5 | ==========================
6 |
7 | Basically all you have to do is get the ``messages`` folder somewhere on the
8 | Python path. There are multiple ways to achive this.
9 |
10 | Quickstart
11 | ----------
12 |
13 | If you already downloaded the package change into the ``django-messages``
14 | directory and run::
15 |
16 | python setup.py install
17 |
18 | Otherwise you will find more information in the remainder of this document.
19 |
20 | Django-messages is available via PyPi, so the following command will download
21 | and install django-messages on your system in one step::
22 |
23 | easy_install django-messages
24 |
25 | If you prefer using pip, you may achieve the same result by running::
26 |
27 | pip install django-messages
28 |
29 |
30 | Download
31 | ---------
32 |
33 | You will always find and download the latest packaged version at:
34 | http://code.google.com/p/django-messages/downloads/list
35 |
36 | If you prefer to use the current developement version to get earlier access to
37 | new features you can checkout the code from the GIT repository::
38 |
39 | git clone https://github.com/arneb/django-messages.git
40 |
41 |
42 | Install
43 | -------
44 |
45 | If you downloaded the tar-ball extract it with (change the version number if
46 | required)::
47 |
48 | tar -xcvf django-messages-0.4.tar.gz
49 |
50 | After extracting the tar-ball or checking out the code from the repository,
51 | change into the ``django-messages`` directory and install the code::
52 |
53 | cd django-messages
54 | python setup.py install
55 |
56 |
57 | Manual Install
58 | --------------
59 |
60 | Instead of using ``setup.py install`` it is also possible to copy or symlink
61 | the ``django_messages`` folder inside the toplevel ``django-messages`` folder
62 | to your Python path. This will be enough to make djano-messages available to
63 | your system.
64 |
65 |
66 | Dependencies
67 | ------------
68 |
69 | Django-messages has no external dependencies except for django. However, if
70 | pinax-notifications and/or django-mailer are found, it will make use of them.
71 |
72 | Please note, that these apps have to be listed in ``INSTALLED_APPS`` to be
73 | used by django-messages.
74 |
75 | * If you use `pinax-notifications`_ django-messages will use it for sending
76 | notifications to users about new messages instead of using the built-in
77 | mechanism.
78 |
79 | * If `django-mailer`_ is used the built-in messages sending code will use it
80 | instead of the django built-in ``send_mail`` function.
81 |
82 |
83 | .. _`pinax-notifications`: https://github.com/pinax/pinax-notifications
84 | .. _`django-mailer`: http://code.google.com/p/django-mailer/
85 |
--------------------------------------------------------------------------------
/docs/index.txt:
--------------------------------------------------------------------------------
1 | ==========================================
2 | A user-to-user messaging system for Django
3 | ==========================================
4 |
5 | Django-messages enables your users to send private messages to each other.
6 | It provides a basic set of functionality that you would expect from such a system.
7 | Every user has an Inbox, an Outbox and a Trash. Messages can be composed and
8 | there is an easy, url-based approach to preloading the compose-form with the
9 | recipient-user, which makes it extremly easy to put "send xyz a message" links
10 | on a profile-page.
11 |
12 | Currently django-messages comes with over 20 translations, see them here:
13 | https://github.com/arneb/django-messages/tree/master/django_messages/locale
14 |
15 |
16 | Versions
17 | --------
18 |
19 | +--------+-------------------------------------------------------------------+
20 | | master | compatible with Django 1.11 - 2.2 |
21 | +--------+-------------------------------------------------------------------+
22 | | 0.6.x | compatible with Django 1.7 - 1.11 and with Python 3 |
23 | +--------+-------------------------------------------------------------------+
24 | | 0.5.x | compatible with Django 1.4, 1.5, 1.6 and 1.7; if you are |
25 | | | upgrading from 0.4.x to trunk please read the UPGRADING docs. |
26 | +--------+-------------------------------------------------------------------+
27 | | 0.4.x | compatible with Django 1.1 (may work with Django 1.0/1.2), no |
28 | | | longer maintained |
29 | +--------+-------------------------------------------------------------------+
30 | | 0.3 | compatible with Django 1.0, no longer maintained |
31 | +--------+-------------------------------------------------------------------+
32 |
33 |
34 | Install
35 | -------
36 | Download the tar archive, unpack and run python setup.py install or checkout
37 | the trunk and put the ``django_messages`` folder on your ``PYTHONPATH``.
38 | Released versions of django-messages are also available on pypi and can be
39 | installed with easy_install or pip.
40 |
41 |
42 | Usage
43 | -----
44 |
45 | Add ``django_messages`` to your ``INSTALLED_APPS`` setting and add an
46 | ``include('django_messages.urls')`` at any point in your url-conf.
47 |
48 | The app includes some default templates, which are pretty simple. They
49 | extend a template called ``base.html`` and only emit stuff in the block
50 | ``content`` and block ``sidebar``. You may want to use your own templates,
51 | but the included ones are good enough for testing and getting started.
52 |
53 |
54 | Contents
55 | --------
56 |
57 | .. toctree::
58 | :maxdepth: 2
59 |
60 | install
61 | usage
62 | customizing
63 |
--------------------------------------------------------------------------------
/docs/usage.txt:
--------------------------------------------------------------------------------
1 | .. _ref-messages-usage:
2 |
3 | =====================
4 | Using django-messages
5 | =====================
6 |
7 | To enable django-messages in your Django project make sure it is
8 | :ref:`installed `. You can check if django-messages was
9 | successfully installed by opening a python shell and running::
10 |
11 | >>> import django_messages
12 | >>>
13 |
14 | If no error occured, you can assume that the app was installed correctly.
15 |
16 |
17 | Edit settings
18 | -------------
19 |
20 | The next step is to add ``django_messages`` to the ``INSTALLED_APPS`` setting::
21 |
22 | INSTALLED_APPS = (
23 | ...
24 | 'django_messages',
25 | ...
26 | )
27 |
28 |
29 | Add urls
30 | --------
31 |
32 | To make django-messages available to your users you should include the
33 | bunlded url-conf in your root url-conf. One example would be to edit
34 | your main ``urls.py`` and add a line like this::
35 |
36 | urlpatterns = patterns(''
37 | ...
38 | (r'^messages/', include('django_messages.urls')),
39 | ...
40 | )
41 |
42 |
43 | Templates
44 | ---------
45 |
46 | Django-messages provides some simple default templates which will get you
47 | started quickly. The templates make the assumption that a base template with
48 | the name ``base.html`` exists which defines a block ``content`` and a block
49 | ``sidebar``. If this is not the case, or the template doesn't fit due to other
50 | concerns, it's very easy to provide your own templates. Please see the
51 | :ref:`customization docs ` fore more details.
52 |
53 |
54 | Templatetags and Context-Processors
55 | -----------------------------------
56 |
57 | Django-messages provides a Templatetag and a Template Context Processor to
58 | make it easy to print the number of unread messages of a user in the templates.
59 |
60 | To use the Templatetag simply add this to your template::
61 |
62 | {% load inbox %}
63 |
64 | Now you can either print the number of unread messages in the users inbox by
65 | using::
66 |
67 | {% inbox_count %}
68 |
69 | Or you can assign the count to a variable to further process it in the template::
70 |
71 | {% inbox_count as my_var %}
72 | {{ my_var }}
73 |
74 | If you want to show the inbox count on every page of your site you could also
75 | use the bundled Context Processor to add the value to every Template Context
76 | instead of loading the Templatetag. Simply add the Context Processor to the
77 | TEMPLATE_CONTEXT_PROCESSORS settings in your settings.py::
78 |
79 | TEMPLATE_CONTEXT_PROCESSORS = (
80 | ...
81 | 'django_messages.context_processors.inbox',
82 | )
83 |
84 | And now every Template Context will contain a variable named
85 | ``messages_inbox_count``, if the user is logged in::
86 |
87 | {{ messages_inbox_count }}
88 |
89 |
90 | Settings Options
91 | ----------------
92 |
93 | If you do want to disable django-messages from sending either a
94 | 'pinax-notifications' notice or an email (fallback if 'pinax-notifications
95 | not installed' then set the following in your django settings::
96 |
97 | DJANGO_MESSAGES_NOTIFY = False
98 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | ==========================================
2 | A user-to-user messaging system for Django
3 | ==========================================
4 |
5 | Django-messages enables your users to send private messages to each other.
6 | It provides a basic set of functionality that you would expect from such a system.
7 | Every user has an Inbox, an Outbox and a Trash. Messages can be composed and
8 | there is an easy, url-based approach to preloading the compose-form with the
9 | recipient-user, which makes it extremly easy to put "send xyz a message" links
10 | on a profile-page.
11 |
12 | Currently django-messages comes with over 20 translations, see them here:
13 | https://github.com/arneb/django-messages/tree/master/django_messages/locale
14 |
15 |
16 | Versions
17 | --------
18 |
19 | +--------+-------------------------------------------------------------------+
20 | | master | compatible with Django 1.11 - 2.2 |
21 | +--------+-------------------------------------------------------------------+
22 | | 0.6.x | compatible with Django 1.7 - 1.11 and with Python 3 |
23 | +--------+-------------------------------------------------------------------+
24 | | 0.5.x | compatible with Django 1.4, 1.5, 1.6 and 1.7; if you are |
25 | | | upgrading from 0.4.x to trunk please read the UPGRADING docs. |
26 | +--------+-------------------------------------------------------------------+
27 | | 0.4.x | compatible with Django 1.1 (may work with Django 1.0/1.2), no |
28 | | | longer maintained |
29 | +--------+-------------------------------------------------------------------+
30 | | 0.3 | compatible with Django 1.0, no longer maintained |
31 | +--------+-------------------------------------------------------------------+
32 |
33 |
34 | Documentation
35 | -------------
36 |
37 | The documentation is contained in the /docs/ directory and can be build with
38 | sphinx. A HTML version of the documentation is available at:
39 | http://django-messages.readthedocs.org
40 |
41 |
42 | Install
43 | -------
44 | Download the tar archive, unpack and run python setup.py install or checkout
45 | the trunk and put the ``django_messages`` folder on your ``PYTHONPATH``.
46 | Released versions of django-messages are also available on pypi and can be
47 | installed with easy_install or pip.
48 |
49 |
50 | Usage
51 | -----
52 |
53 | Add ``django_messages`` to your ``INSTALLED_APPS`` setting and add an
54 | ``include('django_messages.urls')`` at any point in your url-conf.
55 |
56 | The app includes some default templates, which are pretty simple. They
57 | extend a template called ``base.html`` and only emit stuff in the block
58 | ``content`` and block ``sidebar``. You may want to use your own templates,
59 | but the included ones are good enough for testing and getting started.
60 |
61 |
62 | Dependencies
63 | ------------
64 |
65 | Django-messages has no external dependencies except for django. However, if
66 | pinax-notifications and/or django-mailer are found, it will make use of them.
67 | Note: as of r65 django-messages will only use pinax-notifications if
68 | 'pinax.notifications' is also added to the INSTALLED_APPS setting. This has been
69 | done to make situations possible where notification is on pythonpath but
70 | should not be used, or where notification is another python package, such as
71 | django-notification which has the same name.
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/django_messages/utils.py:
--------------------------------------------------------------------------------
1 | import re
2 | import django
3 | from django.utils.text import wrap
4 | from django.utils.translation import ugettext, ugettext_lazy as _
5 | from django.template.loader import render_to_string
6 | from django.conf import settings
7 |
8 | # favour django-mailer but fall back to django.core.mail
9 |
10 | if "mailer" in settings.INSTALLED_APPS:
11 | from mailer import send_mail
12 | else:
13 | from django.core.mail import send_mail
14 |
15 | def format_quote(sender, body):
16 | """
17 | Wraps text at 55 chars and prepends each
18 | line with `> `.
19 | Used for quoting messages in replies.
20 | """
21 | lines = wrap(body, 55).split('\n')
22 | for i, line in enumerate(lines):
23 | lines[i] = "> %s" % line
24 | quote = '\n'.join(lines)
25 | return ugettext(u"%(sender)s wrote:\n%(body)s") % {
26 | 'sender': sender,
27 | 'body': quote
28 | }
29 |
30 | def format_subject(subject):
31 | """
32 | Prepends 'Re:' to the subject. To avoid multiple 'Re:'s
33 | a counter is added.
34 | NOTE: Currently unused. First step to fix Issue #48.
35 | FIXME: Any hints how to make this i18n aware are very welcome.
36 |
37 | """
38 | subject_prefix_re = r'^Re\[(\d*)\]:\ '
39 | m = re.match(subject_prefix_re, subject, re.U)
40 | prefix = u""
41 | if subject.startswith('Re: '):
42 | prefix = u"[2]"
43 | subject = subject[4:]
44 | elif m is not None:
45 | try:
46 | num = int(m.group(1))
47 | prefix = u"[%d]" % (num+1)
48 | subject = subject[6+len(str(num)):]
49 | except:
50 | # if anything fails here, fall back to the old mechanism
51 | pass
52 |
53 | return ugettext(u"Re%(prefix)s: %(subject)s") % {
54 | 'subject': subject,
55 | 'prefix': prefix
56 | }
57 |
58 | def new_message_email(sender, instance, signal,
59 | subject_prefix=_(u'New Message: %(subject)s'),
60 | template_name="django_messages/new_message.html",
61 | default_protocol=None,
62 | *args, **kwargs):
63 | """
64 | This function sends an email and is called via Django's signal framework.
65 | Optional arguments:
66 | ``template_name``: the template to use
67 | ``subject_prefix``: prefix for the email subject.
68 | ``default_protocol``: default protocol in site URL passed to template
69 | """
70 | if default_protocol is None:
71 | default_protocol = getattr(settings, 'DEFAULT_HTTP_PROTOCOL', 'http')
72 |
73 | if 'created' in kwargs and kwargs['created']:
74 | try:
75 | from django.contrib.sites.models import Site
76 | current_domain = Site.objects.get_current().domain
77 | subject = subject_prefix % {'subject': instance.subject}
78 | message = render_to_string(template_name, {
79 | 'site_url': '%s://%s' % (default_protocol, current_domain),
80 | 'message': instance,
81 | })
82 | if instance.recipient.email != "":
83 | send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
84 | [instance.recipient.email,])
85 | except Exception as e:
86 | #print e
87 | pass #fail silently
88 |
89 |
90 | def get_user_model():
91 | if django.VERSION[:2] >= (1, 5):
92 | from django.contrib.auth import get_user_model
93 | return get_user_model()
94 | else:
95 | from django.contrib.auth.models import User
96 | return User
97 |
98 |
99 | def get_username_field():
100 | if django.VERSION[:2] >= (1, 5):
101 | return get_user_model().USERNAME_FIELD
102 | else:
103 | return 'username'
104 |
--------------------------------------------------------------------------------
/django_messages/models.py:
--------------------------------------------------------------------------------
1 | from django.conf import settings
2 | try:
3 | from django.core.urlresolvers import reverse
4 | except ImportError:
5 | from django.urls import reverse
6 | from django.db import models
7 | from django.db.models import signals
8 | from django.utils import timezone
9 | from django.utils.encoding import python_2_unicode_compatible
10 | from django.utils.translation import ugettext_lazy as _
11 |
12 | AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
13 |
14 |
15 | class MessageManager(models.Manager):
16 |
17 | def inbox_for(self, user):
18 | """
19 | Returns all messages that were received by the given user and are not
20 | marked as deleted.
21 | """
22 | return self.filter(
23 | recipient=user,
24 | recipient_deleted_at__isnull=True,
25 | )
26 |
27 | def outbox_for(self, user):
28 | """
29 | Returns all messages that were sent by the given user and are not
30 | marked as deleted.
31 | """
32 | return self.filter(
33 | sender=user,
34 | sender_deleted_at__isnull=True,
35 | )
36 |
37 | def trash_for(self, user):
38 | """
39 | Returns all messages that were either received or sent by the given
40 | user and are marked as deleted.
41 | """
42 | return self.filter(
43 | recipient=user,
44 | recipient_deleted_at__isnull=False,
45 | ) | self.filter(
46 | sender=user,
47 | sender_deleted_at__isnull=False,
48 | )
49 |
50 |
51 | @python_2_unicode_compatible
52 | class Message(models.Model):
53 | """
54 | A private message from user to user
55 | """
56 | subject = models.CharField(_("Subject"), max_length=140)
57 | body = models.TextField(_("Body"))
58 | sender = models.ForeignKey(AUTH_USER_MODEL, related_name='sent_messages', verbose_name=_("Sender"), on_delete=models.PROTECT)
59 | recipient = models.ForeignKey(AUTH_USER_MODEL, related_name='received_messages', null=True, blank=True, verbose_name=_("Recipient"), on_delete=models.SET_NULL)
60 | parent_msg = models.ForeignKey('self', related_name='next_messages', null=True, blank=True, verbose_name=_("Parent message"), on_delete=models.SET_NULL)
61 | sent_at = models.DateTimeField(_("sent at"), null=True, blank=True)
62 | read_at = models.DateTimeField(_("read at"), null=True, blank=True)
63 | replied_at = models.DateTimeField(_("replied at"), null=True, blank=True)
64 | sender_deleted_at = models.DateTimeField(_("Sender deleted at"), null=True, blank=True)
65 | recipient_deleted_at = models.DateTimeField(_("Recipient deleted at"), null=True, blank=True)
66 |
67 | objects = MessageManager()
68 |
69 | def new(self):
70 | """returns whether the recipient has read the message or not"""
71 | if self.read_at is not None:
72 | return False
73 | return True
74 |
75 | def replied(self):
76 | """returns whether the recipient has written a reply to this message"""
77 | if self.replied_at is not None:
78 | return True
79 | return False
80 |
81 | def __str__(self):
82 | return self.subject
83 |
84 | def get_absolute_url(self):
85 | return reverse('messages_detail', args=[self.id])
86 |
87 | def save(self, **kwargs):
88 | if not self.id:
89 | self.sent_at = timezone.now()
90 | super(Message, self).save(**kwargs)
91 |
92 | class Meta:
93 | ordering = ['-sent_at']
94 | verbose_name = _("Message")
95 | verbose_name_plural = _("Messages")
96 |
97 |
98 | def inbox_count_for(user):
99 | """
100 | returns the number of unread messages for the given user but does not
101 | mark them seen
102 | """
103 | return Message.objects.filter(recipient=user, read_at__isnull=True, recipient_deleted_at__isnull=True).count()
104 |
105 | # fallback for email notification if django-notification could not be found
106 | if "pinax.notifications" not in settings.INSTALLED_APPS and getattr(settings, 'DJANGO_MESSAGES_NOTIFY', True):
107 | from django_messages.utils import new_message_email
108 | signals.post_save.connect(new_message_email, sender=Message)
109 |
--------------------------------------------------------------------------------
/django_messages/admin.py:
--------------------------------------------------------------------------------
1 | from django import forms
2 | from django.conf import settings
3 | from django.utils.translation import gettext_lazy as _
4 | from django.contrib import admin
5 | from django.contrib.auth.models import Group
6 |
7 | from django_messages.utils import get_user_model
8 | User = get_user_model()
9 |
10 | if "pinax.notifications" in settings.INSTALLED_APPS and getattr(settings, 'DJANGO_MESSAGES_NOTIFY', True):
11 | from pinax.notifications import models as notification
12 | else:
13 | notification = None
14 |
15 | from django_messages.models import Message
16 |
17 | class MessageAdminForm(forms.ModelForm):
18 | """
19 | Custom AdminForm to enable messages to groups and all users.
20 | """
21 | group = forms.ChoiceField(label=_('group'), required=False,
22 | help_text=_('Creates the message optionally for all users or a group of users.'))
23 |
24 | def __init__(self, *args, **kwargs):
25 | super(MessageAdminForm, self).__init__(*args, **kwargs)
26 | self.fields['group'].choices = self._get_group_choices()
27 | self.fields['recipient'].required = True
28 |
29 | def _get_group_choices(self):
30 | return [('', u'---------'), ('all', _('All users'))] + \
31 | [(group.pk, group.name) for group in Group.objects.all()]
32 |
33 | class Meta:
34 | model = Message
35 | fields = ('sender', 'recipient', 'group', 'parent_msg', 'subject',
36 | 'body', 'sent_at', 'read_at', 'replied_at', 'sender_deleted_at',
37 | 'recipient_deleted_at')
38 |
39 | class MessageAdmin(admin.ModelAdmin):
40 | form = MessageAdminForm
41 | fieldsets = (
42 | (None, {
43 | 'fields': (
44 | 'sender',
45 | ('recipient', 'group'),
46 | ),
47 | }),
48 | (_('Message'), {
49 | 'fields': (
50 | 'parent_msg',
51 | 'subject', 'body',
52 | ),
53 | 'classes': ('monospace' ),
54 | }),
55 | (_('Date/time'), {
56 | 'fields': (
57 | 'sent_at', 'read_at', 'replied_at',
58 | 'sender_deleted_at', 'recipient_deleted_at',
59 | ),
60 | 'classes': ('collapse', 'wide'),
61 | }),
62 | )
63 | list_display = ('subject', 'sender', 'recipient', 'sent_at', 'read_at')
64 | list_filter = ('sent_at', 'sender', 'recipient')
65 | search_fields = ('subject', 'body')
66 | raw_id_fields = ('sender', 'recipient', 'parent_msg')
67 |
68 | def save_model(self, request, obj, form, change):
69 | """
70 | Saves the message for the recipient and looks in the form instance
71 | for other possible recipients. Prevents duplication by excludin the
72 | original recipient from the list of optional recipients.
73 |
74 | When changing an existing message and choosing optional recipients,
75 | the message is effectively resent to those users.
76 | """
77 | obj.save()
78 |
79 | if notification:
80 | # Getting the appropriate notice labels for the sender and recipients.
81 | if obj.parent_msg is None:
82 | sender_label = 'messages_sent'
83 | recipients_label = 'messages_received'
84 | else:
85 | sender_label = 'messages_replied'
86 | recipients_label = 'messages_reply_received'
87 |
88 | # Notification for the sender.
89 | notification.send([obj.sender], sender_label, {'message': obj,})
90 |
91 | if form.cleaned_data['group'] == 'all':
92 | # send to all users
93 | recipients = User.objects.exclude(pk=obj.recipient.pk)
94 | else:
95 | # send to a group of users
96 | recipients = []
97 | group = form.cleaned_data['group']
98 | if group:
99 | group = Group.objects.get(pk=group)
100 | recipients.extend(
101 | list(group.user_set.exclude(pk=obj.recipient.pk)))
102 | # create messages for all found recipients
103 | for user in recipients:
104 | obj.pk = None
105 | obj.recipient = user
106 | obj.save()
107 |
108 | if notification:
109 | # Notification for the recipient.
110 | notification.send([user], recipients_label, {'message' : obj,})
111 |
112 | admin.site.register(Message, MessageAdmin)
113 |
--------------------------------------------------------------------------------
/docs/customizing.txt:
--------------------------------------------------------------------------------
1 | .. _ref-messages-customization:
2 |
3 | ===========================
4 | Customizing django-messages
5 | ===========================
6 |
7 | There are multiple levels at which you can customize django-messages without
8 | altering the code directly.
9 |
10 |
11 | Templates
12 | ---------
13 |
14 | Django-messages comes with a set of built-in templates which you can use.
15 | If these templates don't fit your project you can override any or all of them
16 | by putting files with the same filenames in one the directories listes in
17 | ``TEMPLATES_DIRS`` in your ``settings.py``.
18 |
19 | Django-messages uses the following templates:
20 |
21 | * :file:`django_messages/base.html` - A base template from which all the
22 | following templates inherit. Maybe it's enough to customize this template
23 | for your project.
24 | * :file:`django_messages/compose.html` - This template is rendered, when a
25 | user composes a new messages.
26 | * :file:`django_messages/inbox.html` - This template lists the users inbox.
27 | * :file:`django_messages/new_messages.html` - This template is used to
28 | construct the notification mail sent to a user, whenever a new message is
29 | received.
30 | * :file:`django_messages/outbox.html` - This template lists the users outbox
31 | aka sent messages.
32 | * :file:`django_messages/trash.html` - This template lists the users trash.
33 | * :file:`django_messages/view.html` - This template renders a single message
34 | with all details.
35 |
36 | Additionally django-message provides a set of template for pinax-notifications.
37 | These template can be found in :file:`django_messages/templates/notification/`
38 | and can also be overwritten in one of your project's ``TEMPLATE_DIRS``.
39 |
40 |
41 | URL-conf
42 | --------
43 |
44 | If you want to further customize how django-messages works it is possible to
45 | write your own url-conf instead of including ``django_messages.urls`` in your
46 | root url-conf. This not only allows changing the url structure but also allows
47 | modifying the kwargs passed to the views and therefore modifying some behaviour.
48 |
49 | Please note: If you provide your own url-conf, or urlpatterns directly embedded
50 | in your root url-conf, you shouldn't include ``django_messages.urls``.
51 |
52 | Three common customizations are described in more detail below.
53 |
54 |
55 | Modifying template names
56 | ~~~~~~~~~~~~~~~~~~~~~~~~
57 |
58 | If overwriting templates in your project's ``TEMPLATE_DIRS`` does not provide
59 | enough freedom, you can change the names of the used templates by providing
60 | a `template_name` keyword argument to the views. Every view which renders a
61 | template accepts this keyword-argument.
62 |
63 | If you want to change the template the ``inbox`` view uses to ``my_inbox.html``
64 | instead of the default ``django_messages/inbox.html`` you can use this line
65 | in your own url-conf::
66 |
67 | url(r'^inbox/$',
68 | inbox,
69 | {'template_name': 'my_inbox.html',},
70 | name='messages_inbox'),
71 |
72 |
73 | Modifying form classes
74 | ~~~~~~~~~~~~~~~~~~~~~~
75 |
76 | If you want to use your own form for composing messages, for example to add
77 | new features, you can simply pass the form-class to the views via kwargs.
78 | Every view which renders a form accepts a `form_class` keyword argument to
79 | specify the form-class.
80 |
81 | If you want to use Your own ``MyComposeForm`` you can pass it to the view by
82 | using a line like the following in your own url-conf::
83 |
84 | from somewhere import MyComposeForm
85 | ...
86 | url(r'^compose/$',
87 | compose,
88 | {'form_class': MyComposeForm,},
89 | name='messages_compose'),
90 |
91 |
92 | Modifying success urls
93 | ~~~~~~~~~~~~~~~~~~~~~~
94 |
95 | All views, which will redirect the user after a successfull action accept a
96 | `success_url` keyword argument to specify the destination url. The ``delete``
97 | and ``undelete`` views will additionally check if a ``next`` parameter is
98 | provided in the querystring appended to the url.
99 |
100 | If you don't want to append the next target to the url, or want to change
101 | the redirecting behaviour of other views, you can pass a ``success_url``
102 | parameter in your own url-conf, for example like this::
103 |
104 | url(r'^delete/(?P[\d]+)/$',
105 | delete,
106 | {'success_url': '/profile/',},
107 | name='messages_delete'),
108 |
109 |
110 | Adding recipient filter
111 | ~~~~~~~~~~~~~~~~~~~~~~~
112 |
113 | To restrict allowed recipients a ``recipient_filter`` function can be added
114 | to the compose view.
115 |
116 | The following filter function makes sure messages can only be sent to active
117 | users::
118 |
119 | lambda u: u.is_active
120 |
121 | To use this filter, integrate it into your url-conf::
122 |
123 | url(r'^compose/$',
124 | compose,
125 | {'recipient_filter': lambda u: u.is_active},
126 | name='messages_compose'),
127 |
--------------------------------------------------------------------------------
/docs/conf.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | #
3 | # django-messages documentation build configuration file, created by
4 | # sphinx-quickstart on Mon Jan 26 10:27:49 2009.
5 | #
6 | # This file is execfile()d with the current directory set to its containing dir.
7 | #
8 | # The contents of this file are pickled, so don't put values in the namespace
9 | # that aren't pickleable (module imports are okay, they're removed automatically).
10 | #
11 | # Note that not all possible configuration values are present in this
12 | # autogenerated file.
13 | #
14 | # All configuration values have a default; values that are commented out
15 | # serve to show the default.
16 |
17 | import sys, os
18 |
19 | # If your extensions are in another directory, add it here. If the directory
20 | # is relative to the documentation root, use os.path.abspath to make it
21 | # absolute, like shown here.
22 | #sys.path.append(os.path.abspath('.'))
23 |
24 | # General configuration
25 | # ---------------------
26 |
27 | # Add any Sphinx extension module names here, as strings. They can be extensions
28 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
29 | extensions = []
30 |
31 | # Add any paths that contain templates here, relative to this directory.
32 | templates_path = ['.templates']
33 |
34 | # The suffix of source filenames.
35 | source_suffix = '.txt'
36 |
37 | # The encoding of source files.
38 | #source_encoding = 'utf-8'
39 |
40 | # The master toctree document.
41 | master_doc = 'index'
42 |
43 | # General information about the project.
44 | project = u'django-messages'
45 | copyright = u'2009-2014, Arne Brodowski'
46 |
47 | # The version info for the project you're documenting, acts as replacement for
48 | # |version| and |release|, also used in various other places throughout the
49 | # built documents.
50 | #
51 | # The short X.Y version.
52 | version = '0.6'
53 | # The full version, including alpha/beta/rc tags.
54 | release = '0.6.0'
55 |
56 | # The language for content autogenerated by Sphinx. Refer to documentation
57 | # for a list of supported languages.
58 | #language = None
59 |
60 | # There are two options for replacing |today|: either, you set today to some
61 | # non-false value, then it is used:
62 | #today = ''
63 | # Else, today_fmt is used as the format for a strftime call.
64 | #today_fmt = '%B %d, %Y'
65 |
66 | # List of documents that shouldn't be included in the build.
67 | unused_docs = ['README',]
68 |
69 | # List of directories, relative to source directory, that shouldn't be searched
70 | # for source files.
71 | exclude_trees = []
72 |
73 | # The reST default role (used for this markup: `text`) to use for all documents.
74 | #default_role = None
75 |
76 | # If true, '()' will be appended to :func: etc. cross-reference text.
77 | #add_function_parentheses = True
78 |
79 | # If true, the current module name will be prepended to all description
80 | # unit titles (such as .. function::).
81 | #add_module_names = True
82 |
83 | # If true, sectionauthor and moduleauthor directives will be shown in the
84 | # output. They are ignored by default.
85 | #show_authors = False
86 |
87 | # The name of the Pygments (syntax highlighting) style to use.
88 | pygments_style = 'sphinx'
89 |
90 |
91 | # Options for HTML output
92 | # -----------------------
93 |
94 | html_theme_path = ['.',]
95 |
96 | # The style sheet to use for HTML and HTML Help pages. A file of that name
97 | # must exist either in Sphinx' static/ path, or in one of the custom paths
98 | # given in html_static_path.
99 | # html_style = 'default.css'
100 |
101 | # The name for this set of Sphinx documents. If None, it defaults to
102 | # " v documentation".
103 | #html_title = None
104 |
105 | # A shorter title for the navigation bar. Default is the same as html_title.
106 | #html_short_title = None
107 |
108 | # The name of an image file (relative to this directory) to place at the top
109 | # of the sidebar.
110 | html_logo = './django-messages.png'
111 |
112 | # The name of an image file (within the static path) to use as favicon of the
113 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
114 | # pixels large.
115 | #html_favicon = None
116 |
117 | # Add any paths that contain custom static files (such as style sheets) here,
118 | # relative to this directory. They are copied after the builtin static files,
119 | # so a file named "default.css" will overwrite the builtin "default.css".
120 | html_static_path = ['.static']
121 |
122 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
123 | # using the given strftime format.
124 | #html_last_updated_fmt = '%b %d, %Y'
125 |
126 | # If true, SmartyPants will be used to convert quotes and dashes to
127 | # typographically correct entities.
128 | #html_use_smartypants = True
129 |
130 | # Custom sidebar templates, maps document names to template names.
131 | #html_sidebars = {}
132 |
133 | # Additional templates that should be rendered to pages, maps page names to
134 | # template names.
135 | #html_additional_pages = {}
136 |
137 | # If false, no module index is generated.
138 | html_use_modindex = False
139 |
140 | # If false, no index is generated.
141 | html_use_index = False
142 |
143 | # If true, the index is split into individual pages for each letter.
144 | #html_split_index = False
145 |
146 | # If true, the reST sources are included in the HTML build as _sources/.
147 | html_copy_source = False
148 |
149 | # If true, an OpenSearch description file will be output, and all pages will
150 | # contain a tag referring to it. The value of this option must be the
151 | # base URL from which the finished HTML is served.
152 | #html_use_opensearch = ''
153 |
154 | # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
155 | #html_file_suffix = ''
156 |
157 | # Output file base name for HTML help builder.
158 | htmlhelp_basename = 'django-messagesdoc'
159 |
160 |
161 | # Options for LaTeX output
162 | # ------------------------
163 |
164 | # The paper size ('letter' or 'a4').
165 | #latex_paper_size = 'letter'
166 |
167 | # The font size ('10pt', '11pt' or '12pt').
168 | #latex_font_size = '10pt'
169 |
170 | # Grouping the document tree into LaTeX files. List of tuples
171 | # (source start file, target name, title, author, document class [howto/manual]).
172 | latex_documents = [
173 | ('index', 'django-messages.tex', ur'django-messages Documentation',
174 | ur'Arne Brodowski', 'manual'),
175 | ]
176 |
177 | # The name of an image file (relative to this directory) to place at the top of
178 | # the title page.
179 | #latex_logo = None
180 |
181 | # For "manual" documents, if this is true, then toplevel headings are parts,
182 | # not chapters.
183 | #latex_use_parts = False
184 |
185 | # Additional stuff for the LaTeX preamble.
186 | #latex_preamble = ''
187 |
188 | # Documents to append as an appendix to all manuals.
189 | #latex_appendices = []
190 |
191 | # If false, no module index is generated.
192 | #latex_use_modindex = True
193 |
--------------------------------------------------------------------------------
/django_messages/locale/zh_CN/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # django-messages in Simplify Chinese.
2 | # django-messages 简体中文.
3 | # Copyright (C) 2008
4 | # This file is distributed under the same license as the django-messages package.
5 | # Gene Wu , 2008.
6 | #
7 | #, fuzzy
8 | msgid ""
9 | msgstr ""
10 | "Project-Id-Version: PACKAGE VERSION\n"
11 | "Report-Msgid-Bugs-To: \n"
12 | "POT-Creation-Date: 2009-10-04 12:00-0000\n"
13 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14 | "Last-Translator: GENE WU \n"
15 | "Language-Team: LANGUAGE \n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 |
20 | #: fields.py:39
21 | #, python-format
22 | msgid "The following usernames are incorrect: %(users)s"
23 | msgstr "以下用户名不正确: %(users)s"
24 |
25 | #: forms.py:23 models.py:53 templates\messages\outbox.html.py:7
26 | #: templates\messages\view.html.py:12
27 | msgid "Recipient"
28 | msgstr "收信人"
29 |
30 | #: forms.py:24 models.py:50 templates\messages\inbox.html.py:7
31 | #: templates\messages\outbox.html.py:7 templates\messages\trash.html.py:7
32 | #: templates\messages\view.html.py:6
33 | msgid "Subject"
34 | msgstr "主题"
35 |
36 | #: forms.py:25 models.py:51
37 | msgid "Body"
38 | msgstr "消息主体"
39 |
40 | #: management.py:10
41 | msgid "Message Received"
42 | msgstr "收到的消息"
43 |
44 | #: management.py:10
45 | msgid "you have received a message"
46 | msgstr "你受到了一条消息"
47 |
48 | #: management.py:11
49 | msgid "Message Sent"
50 | msgstr "消息已发出"
51 |
52 | #: management.py:11
53 | msgid "you have sent a message"
54 | msgstr "你已发出了一条消息"
55 |
56 | #: management.py:12
57 | msgid "Message Replied"
58 | msgstr "消息已回复"
59 |
60 | #: management.py:12
61 | msgid "you have replied to a message"
62 | msgstr "你已回复了一条消息"
63 |
64 | #: management.py:13
65 | msgid "Reply Received"
66 | msgstr "回复已收到"
67 |
68 | #: management.py:13
69 | msgid "you have received a reply to a message"
70 | msgstr "你已收到了消息的一条回复"
71 |
72 | #: management.py:14
73 | msgid "Message Deleted"
74 | msgstr "消息已删除"
75 |
76 | #: management.py:14
77 | msgid "you have deleted a message"
78 | msgstr "你已删除了一条消息"
79 |
80 | #: management.py:15
81 | msgid "Message Recovered"
82 | msgstr "消息已恢复"
83 |
84 | #: management.py:15
85 | msgid "you have undelete a message"
86 | msgstr "你已恢复了一条消息"
87 |
88 | #: models.py:52 templates\messages\inbox.html.py:7
89 | #: templates\messages\trash.html.py:7 templates\messages\view.html.py:8
90 | msgid "Sender"
91 | msgstr "发信人"
92 |
93 | #: models.py:54
94 | msgid "Parent message"
95 | msgstr "原消息"
96 |
97 | #: models.py:55
98 | msgid "sent at"
99 | msgstr "发送于"
100 |
101 | #: models.py:56
102 | msgid "read at"
103 | msgstr "阅读于"
104 |
105 | #: models.py:57
106 | msgid "replied at"
107 | msgstr "回复于"
108 |
109 | #: models.py:58
110 | msgid "Sender deleted at"
111 | msgstr "发信人删除于"
112 |
113 | #: models.py:59
114 | msgid "Recipient deleted at"
115 | msgstr "收件人删除于"
116 |
117 | #: models.py:89
118 | msgid "Message"
119 | msgstr "消息"
120 |
121 | #: models.py:90
122 | msgid "Messages"
123 | msgstr "消息"
124 |
125 | #: utils.py:29
126 | #, python-format
127 | msgid "New Message: %(subject)s"
128 | msgstr "新消息: %(subject)s"
129 |
130 | #: views.py:80 views.py:108
131 | msgid "Message successfully sent."
132 | msgstr "消息已成功发送。"
133 |
134 | #: views.py:114
135 | #, python-format
136 | msgid ""
137 | "%(sender)s wrote:\n"
138 | "%(body)s"
139 | msgstr ""
140 | "%(sender)s 写道:\n"
141 | "%(body)s"
142 |
143 | #: views.py:118
144 | #, python-format
145 | msgid "Re: %(subject)s"
146 | msgstr "回复: %(subject)s"
147 |
148 | #: views.py:154
149 | msgid "Message successfully deleted."
150 | msgstr "消息已成功删除。"
151 |
152 | #: views.py:181
153 | msgid "Message successfully recovered."
154 | msgstr "消息已成功恢复。"
155 |
156 | #: templates\messages\base.html.py:8 templates\messages\inbox.html.py:4
157 | #: templates\messages\new_message.html.py:10
158 | msgid "Inbox"
159 | msgstr "收件箱"
160 |
161 | #: templates\messages\base.html.py:9 templates\messages\outbox.html.py:4
162 | msgid "Sent Messages"
163 | msgstr "发送的消息"
164 |
165 | #: templates\messages\base.html.py:10
166 | msgid "New Message"
167 | msgstr "新消息"
168 |
169 | #: templates\messages\base.html.py:11
170 | msgid "Trash"
171 | msgstr "回收站"
172 |
173 | #: templates\messages\compose.html.py:4
174 | msgid "Compose Message"
175 | msgstr "撰写消息"
176 |
177 | #: templates\messages\compose.html.py:9
178 | msgid "Send"
179 | msgstr "发送"
180 |
181 | #: templates\messages\inbox.html.py:7
182 | msgid "Received"
183 | msgstr "受到于"
184 |
185 | #: templates\messages\inbox.html.py:7 templates\messages\outbox.html.py:7
186 | #: templates\messages\trash.html.py:7
187 | msgid "Action"
188 | msgstr "动作"
189 |
190 | #: templates\messages\inbox.html.py:19
191 | #: templates\messages\outbox.html.py:16
192 | #: templates\messages\trash.html.py:16 templates\messages\view.html.py:11
193 | msgid "DATETIME_FORMAT"
194 | msgstr ""
195 |
196 | #: templates\messages\inbox.html.py:20
197 | #: templates\messages\outbox.html.py:17
198 | msgid "delete"
199 | msgstr "删除"
200 |
201 | #: templates\messages\new_message.html.py:1
202 | #, python-format
203 | msgid ""
204 | "Hello %(recipient)s,\n"
205 | "\n"
206 | "you received a private message from %(sender)s with\n"
207 | "the following contents:"
208 | msgstr ""
209 | "%(recipient)s:\n"
210 | "\n"
211 | "你受到一条从%(sender)s发出的私人信息有\n"
212 | "以下内容:"
213 |
214 | #: templates\messages\new_message.html.py:9
215 | #, python-format
216 | msgid "Sent from %(site_url)s"
217 | msgstr "消息已从%(site_url)s发出"
218 |
219 | #: templates\messages\new_message.html.py:11
220 | #: templates\messages\view.html.py:18
221 | msgid "Reply"
222 | msgstr "回复"
223 |
224 | #: templates\messages\outbox.html.py:7
225 | msgid "Sent"
226 | msgstr "已发出"
227 |
228 | #: templates\messages\trash.html.py:4
229 | msgid "Deleted Messages"
230 | msgstr "删除的消息"
231 |
232 | #: templates\messages\trash.html.py:7 templates\messages\view.html.py:10
233 | msgid "Date"
234 | msgstr "日期"
235 |
236 | #: templates\messages\trash.html.py:17
237 | msgid "undelete"
238 | msgstr "恢复"
239 |
240 | #: templates\messages\trash.html.py:23
241 | msgid ""
242 | "Deleted Messages are removed from the trash at unregular intervals, don't "
243 | "rely on this feature for long-time storage."
244 | msgstr ""
245 | "删除的消息将定期删除,不要依赖此功能作为长期存储。"
246 | ""
247 |
248 | #: templates\messages\view.html.py:4
249 | msgid "View Message"
250 | msgstr "浏览消息"
251 |
252 | #: templates\messages\view.html.py:20
253 | msgid "Delete"
254 | msgstr "删除"
255 |
256 | #: templates\notification\messages_deleted\notice.html.py:1
257 | #, python-format
258 | msgid ""
259 | "You have deleted the message %(message)s."
260 | msgstr "你已删除了消息%(message)s."
261 |
262 | #: templates\notification\messages_received\notice.html.py:2
263 | #, python-format
264 | msgid ""
265 | "You have received the message %(message)s "
266 | "from %(message_sender)s."
267 | msgstr ""
268 | "你已收到%(message_sender)s的消息%(message)s。"
269 | ""
270 |
271 | #: templates\notification\messages_recovered\notice.html.py:1
272 | #, python-format
273 | msgid ""
274 | "You have recovered the message %(message)s."
275 | msgstr "你已恢复了消息%(message)s."
276 |
277 | #: templates\notification\messages_replied\notice.html.py:2
278 | #, python-format
279 | msgid ""
280 | "You have replied to %(message_parent_msg)s "
281 | "from %(message_recipient)s."
282 | msgstr ""
283 | "你已回复了%(message_recipient)s.发出的消息%(message_parent_msg)s"
284 | ""
285 |
286 | #: templates\notification\messages_reply_received\notice.html.py:2
287 | #, python-format
288 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
289 | msgstr ""
290 | "%(message_sender)s已回复你发出的消息:%(message_parent_msg)s."
291 |
292 | #: templates\notification\messages_sent\notice.html.py:2
293 | #, python-format
294 | msgid ""
295 | "You have sent the message %(message)s to %"
296 | "(message_recipient)s."
297 | msgstr ""
298 | "你已发送消息%(message)s到%"
299 | "(message_recipient)s."
300 |
--------------------------------------------------------------------------------
/django_messages/locale/ko/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # django-messages translation for Korean.
2 | # Copyright (C) 2012 Jeong YunWon
3 | # This file is distributed under the same license as the django-messages package.
4 | # Jeong YunWon , 2012.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: messages\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
11 | "PO-Revision-Date: 2012-02-04 10:58+0900\n"
12 | "Last-Translator: Jeong YunWon \n"
13 | "Language-Team: Jeong YunWon \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Poedit-Language: Korean\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "받는이"
23 |
24 | #: admin.py:38 models.py:88
25 | msgid "Message"
26 | msgstr "쪽지"
27 |
28 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
29 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
30 | #: templates/messages/view.html:6
31 | msgid "Subject"
32 | msgstr "제목"
33 |
34 | #: forms.py:22 models.py:50
35 | msgid "Body"
36 | msgstr "내용"
37 |
38 | #: management.py:9
39 | msgid "Message Received"
40 | msgstr "받은 시각"
41 |
42 | #: management.py:9
43 | msgid "you have received a message"
44 | msgstr "쪽지를 받았습니다"
45 |
46 | #: management.py:10
47 | msgid "Message Sent"
48 | msgstr "쪽지 보냄"
49 |
50 | #: management.py:10
51 | msgid "you have sent a message"
52 | msgstr "쪽지를 보냈습니다"
53 |
54 | #: management.py:11
55 | msgid "Message Replied"
56 | msgstr "쪽지 답장"
57 |
58 | #: management.py:11
59 | msgid "you have replied to a message"
60 | msgstr "쪽지에 답장하였습니다"
61 |
62 | #: management.py:12
63 | msgid "Reply Received"
64 | msgstr "답장 받음"
65 |
66 | #: management.py:12
67 | msgid "you have received a reply to a message"
68 | msgstr "쪽지에 답장을 받았습니다"
69 |
70 | #: management.py:13
71 | msgid "Message Deleted"
72 | msgstr "쪽지 지움"
73 |
74 | #: management.py:13
75 | msgid "you have deleted a message"
76 | msgstr "쪽지를 지웠습니다"
77 |
78 | #: management.py:14
79 | msgid "Message Recovered"
80 | msgstr "쪽지 되살림"
81 |
82 | #: management.py:14
83 | msgid "you have undeleted a message"
84 | msgstr "쪽지를 되살렸습니다"
85 |
86 | #: models.py:51 templates/messages/inbox.html:7
87 | #: templates/messages/trash.html:7 templates/messages/view.html:8
88 | msgid "Sender"
89 | msgstr "보낸이"
90 |
91 | #: models.py:53
92 | msgid "Parent message"
93 | msgstr "이전 쪽지"
94 |
95 | #: models.py:54
96 | msgid "sent at"
97 | msgstr "보낸 시각:"
98 |
99 | #: models.py:55
100 | msgid "read at"
101 | msgstr "읽은 시각:"
102 |
103 | #: models.py:56
104 | msgid "replied at"
105 | msgstr "답장 시각:"
106 |
107 | #: models.py:57
108 | msgid "Sender deleted at"
109 | msgstr "보낸이가 지운 시각:"
110 |
111 | #: models.py:58
112 | msgid "Recipient deleted at"
113 | msgstr "받는이가 지운 시각:"
114 |
115 | #: models.py:89
116 | msgid "Messages"
117 | msgstr "쪽지"
118 |
119 | #: views.py:78 views.py:112
120 | msgid "Message successfully sent."
121 | msgstr "쪽지를 보냈습니다."
122 |
123 | #: views.py:118
124 | #, python-format
125 | msgid ""
126 | "%(sender)s wrote:\n"
127 | "%(body)s"
128 | msgstr ""
129 | "%(sender)s 님의 글:\n"
130 | "%(body)s"
131 |
132 | #: views.py:122
133 | #, python-format
134 | msgid "Re: %(subject)s"
135 | msgstr "Re: %(subject)s"
136 |
137 | #: views.py:158
138 | msgid "Message successfully deleted."
139 | msgstr "쪽지를 지웠습니다."
140 |
141 | #: views.py:185
142 | msgid "Message successfully recovered."
143 | msgstr "쪽지를 되살렸습니다."
144 |
145 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
146 | #: templates/messages/new_message.html:10
147 | msgid "Inbox"
148 | msgstr "받은 편지함"
149 |
150 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
151 | msgid "Sent Messages"
152 | msgstr "보낸 편지함"
153 |
154 | #: templates/messages/base.html:10
155 | msgid "New Message"
156 | msgstr "새 쪽지"
157 |
158 | #: templates/messages/base.html:11
159 | msgid "Trash"
160 | msgstr "휴지통"
161 |
162 | #: templates/messages/compose.html:4
163 | msgid "Compose Message"
164 | msgstr "새 쪽지 쓰기"
165 |
166 | #: templates/messages/compose.html:9
167 | msgid "Send"
168 | msgstr "보내기"
169 |
170 | #: templates/messages/inbox.html:7
171 | msgid "Received"
172 | msgstr "받은 시각"
173 |
174 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
175 | #: templates/messages/trash.html:7
176 | msgid "Action"
177 | msgstr "할일"
178 |
179 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
180 | #: templates/messages/trash.html:16 templates/messages/view.html:11
181 | msgid "DATETIME_FORMAT"
182 | msgstr "Y-m-d G:i"
183 |
184 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
185 | msgid "delete"
186 | msgstr "지우기"
187 |
188 | #: templates/messages/new_message.html:9
189 | #, python-format
190 | msgid "Sent from %(site_url)s"
191 | msgstr "%(site_url)s 에서 보냄"
192 |
193 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
194 | msgid "Reply"
195 | msgstr "답장"
196 |
197 | #: templates/messages/outbox.html:7
198 | msgid "Sent"
199 | msgstr "보낸 시각"
200 |
201 | #: templates/messages/trash.html:4
202 | msgid "Deleted Messages"
203 | msgstr "지운 쪽지"
204 |
205 | #: templates/messages/trash.html:7 templates/messages/view.html:10
206 | msgid "Date"
207 | msgstr "날짜"
208 |
209 | #: templates/messages/trash.html:17
210 | msgid "undelete"
211 | msgstr "되살리기"
212 |
213 | #: templates/messages/trash.html:23
214 | msgid "Deleted Messages are removed from the trash at unregular intervals, don't rely on this feature for long-time storage."
215 | msgstr "지운 쪽지는 비정기적으로 휴지통에서 완전히 삭제됩니다. 오래 보관해야 하는 쪽지에 이 기능을 사용하지 마세요."
216 |
217 | #: templates/messages/view.html:4
218 | msgid "View Message"
219 | msgstr "쪽지 보기"
220 |
221 | #: templates/messages/view.html:20
222 | msgid "Delete"
223 | msgstr "지우기"
224 |
225 | #: templates/notification/messages_deleted/notice.html:1
226 | #, python-format
227 | msgid "You have deleted the message %(message)s."
228 | msgstr "%(message)s 지윘습니다."
229 |
230 | #: templates/notification/messages_recovered/notice.html:1
231 | #, python-format
232 | msgid "You have recovered the message %(message)s."
233 | msgstr "%(message)s 되살렸습니다."
234 |
235 | #: templates/notification/messages_received/notice.html:2
236 | #, python-format
237 | msgid "You have received the message %(message)s from %(message_sender)s."
238 | msgstr "%(message_sender)s 님에게 %(message)s 받았습니다."
239 |
240 | #: templates/notification/messages_reply_received/notice.html:2
241 | #, python-format
242 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
243 | msgstr "%(message_sender)s 님이 %(message_parent_msg)s 에 답장을 보냈습니다."
244 |
245 | #: templates/notification/messages_sent/notice.html:2
246 | #, python-format
247 | msgid "You have sent the message %(message)s to %(message_recipient)s."
248 | msgstr "%(message_recipient)s 님에게 %(message)s 보냈습니다."
249 |
250 | #: templates/notification/messages_replied/notice.html:2
251 | #, python-format
252 | msgid "You have replied to %(message_parent_msg)s from %(message_recipient)s."
253 | msgstr "%(message_recipient)s 님의 %(message_parent_msg)s 에 답장하였습니다."
254 |
255 | #: templates/messages/new_message.html:1
256 | #, python-format
257 | msgid ""
258 | "Hello %(recipient)s,\n"
259 | "\n"
260 | "you received a private message from %(sender)s with\n"
261 | "the following contents:"
262 | msgstr ""
263 | "%(recipient)s 님\n"
264 | "\n"
265 | "%(sender)s 님께 다음 내용으로 쪽지를 받았습니다:"
266 |
267 | #: admin.py:16
268 | msgid "Creates the message optionally for all users or a group of users."
269 | msgstr "Creates the message optionally for all users or a group of users."
270 |
271 | #: admin.py:15
272 | msgid "group"
273 | msgstr "그룹"
274 |
275 | #: admin.py:23
276 | msgid "All users"
277 | msgstr "모든 사용자"
278 |
279 | #: fields.py:53
280 | #, python-format
281 | msgid "The following usernames are incorrect: %(users)s"
282 | msgstr "올바르지 않은 사용자 이름을 입력하였습니다: %(users)s"
283 |
284 | #: admin.py:45
285 | msgid "Date/time"
286 | msgstr "날짜/시각"
287 |
288 | #: utils.py:27
289 | #, python-format
290 | msgid "New Message: %(subject)s"
291 | msgstr "새 쪽지: %(subject)s"
292 |
293 |
--------------------------------------------------------------------------------
/django_messages/locale/pl/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: FULL NAME \n"
14 | "Language-Team: LANGUAGE \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "Odbiorca"
23 |
24 | #: admin.py:15
25 | msgid "group"
26 | msgstr ""
27 |
28 | #: admin.py:16
29 | msgid "Creates the message optionally for all users or a group of users."
30 | msgstr ""
31 |
32 | #: admin.py:23
33 | msgid "All users"
34 | msgstr ""
35 |
36 | #: admin.py:38 models.py:88
37 | msgid "Message"
38 | msgstr "Wiadomość"
39 |
40 | #: admin.py:45
41 | #, fuzzy
42 | msgid "Date/time"
43 | msgstr "Data"
44 |
45 | #: fields.py:53
46 | #, python-format
47 | msgid "The following usernames are incorrect: %(users)s"
48 | msgstr "Te nazwy użytkowników są niewłaściwe: %(users)s"
49 |
50 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
51 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
52 | #: templates/messages/view.html:6
53 | msgid "Subject"
54 | msgstr "Temat"
55 |
56 | #: forms.py:22 models.py:50
57 | msgid "Body"
58 | msgstr "Treść"
59 |
60 | #: management.py:9
61 | msgid "Message Received"
62 | msgstr "Wiadomość otrzymana"
63 |
64 | #: management.py:9
65 | msgid "you have received a message"
66 | msgstr "otrzymałeś wiadomość"
67 |
68 | #: management.py:10
69 | msgid "Message Sent"
70 | msgstr "Wiadomość wysłana"
71 |
72 | #: management.py:10
73 | msgid "you have sent a message"
74 | msgstr "wysłałeś wiadomość"
75 |
76 | #: management.py:11
77 | msgid "Message Replied"
78 | msgstr "Odpowiedź wysłana"
79 |
80 | #: management.py:11
81 | msgid "you have replied to a message"
82 | msgstr "odpowiedziałeś na wiadomość"
83 |
84 | #: management.py:12
85 | msgid "Reply Received"
86 | msgstr "Odpowiedź otrzymana"
87 |
88 | #: management.py:12
89 | msgid "you have received a reply to a message"
90 | msgstr "Dostałeś odpowiedź na wiadomość"
91 |
92 | #: management.py:13
93 | msgid "Message Deleted"
94 | msgstr "Wiadomość skasowana"
95 |
96 | #: management.py:13
97 | msgid "you have deleted a message"
98 | msgstr "skasowałeś wiadomość"
99 |
100 | #: management.py:14
101 | msgid "Message Recovered"
102 | msgstr "Wiadomość odzyskana"
103 |
104 | #: management.py:14
105 | msgid "you have undeleted a message"
106 | msgstr "Odzyskałeś skasowaną wiadomość"
107 |
108 | #: models.py:51 templates/messages/inbox.html:7
109 | #: templates/messages/trash.html:7 templates/messages/view.html:8
110 | msgid "Sender"
111 | msgstr "Nadawca"
112 |
113 | #: models.py:53
114 | msgid "Parent message"
115 | msgstr "Poprzednia wiadomość"
116 |
117 | #: models.py:54
118 | msgid "sent at"
119 | msgstr "wysłano"
120 |
121 | #: models.py:55
122 | msgid "read at"
123 | msgstr "przeczytano"
124 |
125 | #: models.py:56
126 | msgid "replied at"
127 | msgstr "odpowiedziano"
128 |
129 | #: models.py:57
130 | msgid "Sender deleted at"
131 | msgstr "Nadawcę skasowano"
132 |
133 | #: models.py:58
134 | msgid "Recipient deleted at"
135 | msgstr "Adresata skasowano"
136 |
137 | #: models.py:89
138 | msgid "Messages"
139 | msgstr "Wiadomości"
140 |
141 | #: utils.py:27
142 | #, python-format
143 | msgid "New Message: %(subject)s"
144 | msgstr "Nowa wiadomość: %(subject)s"
145 |
146 | #: views.py:78 views.py:112
147 | msgid "Message successfully sent."
148 | msgstr "Wiadomość wysłana"
149 |
150 | #: views.py:118
151 | #, python-format
152 | msgid ""
153 | "%(sender)s wrote:\n"
154 | "%(body)s"
155 | msgstr ""
156 | "%(sender)s napisał:\n"
157 | "%(body)s"
158 |
159 | #: views.py:122
160 | #, python-format
161 | msgid "Re: %(subject)s"
162 | msgstr "Odp: %(subject)s"
163 |
164 | #: views.py:158
165 | msgid "Message successfully deleted."
166 | msgstr "Wiadomość skasowana"
167 |
168 | #: views.py:185
169 | msgid "Message successfully recovered."
170 | msgstr "Wiadomość odzyskana"
171 |
172 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
173 | #: templates/messages/new_message.html:10
174 | msgid "Inbox"
175 | msgstr "Wiadomości otrzymane"
176 |
177 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
178 | msgid "Sent Messages"
179 | msgstr "Wiadomości wysłane"
180 |
181 | #: templates/messages/base.html:10
182 | msgid "New Message"
183 | msgstr "Nowa wiadomość"
184 |
185 | #: templates/messages/base.html:11
186 | msgid "Trash"
187 | msgstr "Kosz"
188 |
189 | #: templates/messages/compose.html:4
190 | msgid "Compose Message"
191 | msgstr "Stwórz wiadomość"
192 |
193 | #: templates/messages/compose.html:9
194 | msgid "Send"
195 | msgstr "Wyślij"
196 |
197 | #: templates/messages/inbox.html:7
198 | msgid "Received"
199 | msgstr "Otrzymane"
200 |
201 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
202 | #: templates/messages/trash.html:7
203 | msgid "Action"
204 | msgstr "akcja"
205 |
206 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
207 | #: templates/messages/trash.html:16 templates/messages/view.html:11
208 | msgid "DATETIME_FORMAT"
209 | msgstr ""
210 |
211 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
212 | msgid "delete"
213 | msgstr "usuń"
214 |
215 | #: templates/messages/new_message.html:1
216 | #, python-format
217 | msgid ""
218 | "Hello %(recipient)s,\n"
219 | "\n"
220 | "you received a private message from %(sender)s with\n"
221 | "the following contents:"
222 | msgstr ""
223 | "Witaj, %(recipient)s,\n"
224 | "\n"
225 | "otrzymałeś od użytkownika %(sender)s wiadomość\n"
226 | "o następującej treści:"
227 |
228 | #: templates/messages/new_message.html:9
229 | #, python-format
230 | msgid "Sent from %(site_url)s"
231 | msgstr "Wysłane z adresu %(site_url)s"
232 |
233 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
234 | msgid "Reply"
235 | msgstr "Odpowiedz"
236 |
237 | #: templates/messages/outbox.html:7
238 | msgid "Sent"
239 | msgstr "Wiadomości wysłane"
240 |
241 | #: templates/messages/trash.html:4
242 | msgid "Deleted Messages"
243 | msgstr "Wiadomości skasowane"
244 |
245 | #: templates/messages/trash.html:7 templates/messages/view.html:10
246 | msgid "Date"
247 | msgstr "Data"
248 |
249 | #: templates/messages/trash.html:17
250 | msgid "undelete"
251 | msgstr "odzyskaj"
252 |
253 | #: templates/messages/trash.html:23
254 | msgid ""
255 | "Deleted Messages are removed from the trash at unregular intervals, don't "
256 | "rely on this feature for long-time storage."
257 | msgstr ""
258 | "Wiadomości są usuwane z Kosza nieregularnie. Nie licz, że zastaniesz je "
259 | "tutaj po dłuższym czasie"
260 |
261 | #: templates/messages/view.html:4
262 | msgid "View Message"
263 | msgstr "Zobacz wiadomość"
264 |
265 | #: templates/messages/view.html:20
266 | msgid "Delete"
267 | msgstr "Usuń"
268 |
269 | #: templates/notification/messages_deleted/notice.html:1
270 | #, python-format
271 | msgid ""
272 | "You have deleted the message %(message)s."
273 | msgstr ""
274 |
275 | #: templates/notification/messages_received/notice.html:2
276 | #, python-format
277 | msgid ""
278 | "You have received the message %(message)s "
279 | "from %(message_sender)s."
280 | msgstr ""
281 |
282 | #: templates/notification/messages_recovered/notice.html:1
283 | #, python-format
284 | msgid ""
285 | "You have recovered the message %(message)s."
286 | msgstr ""
287 |
288 | #: templates/notification/messages_replied/notice.html:2
289 | #, python-format
290 | msgid ""
291 | "You have replied to %(message_parent_msg)s "
292 | "from %(message_recipient)s."
293 | msgstr ""
294 |
295 | #: templates/notification/messages_reply_received/notice.html:2
296 | #, python-format
297 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
298 | msgstr ""
299 |
300 | #: templates/notification/messages_sent/notice.html:2
301 | #, python-format
302 | msgid ""
303 | "You have sent the message %(message)s to %"
304 | "(message_recipient)s."
305 | msgstr ""
306 |
--------------------------------------------------------------------------------
/django_messages/locale/es_AR/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # django-messages in Spanish Argentina.
2 | # django-messages en Español Argentina.
3 | # Copyright (C) 2008
4 | # This file is distributed under the same license as the django-messages package.
5 | # Cecilia Lorena Puccinelli , 2008.
6 | # Juan José Conti , 2008.
7 | #
8 | #, fuzzy
9 | msgid ""
10 | msgstr ""
11 | "Project-Id-Version: PACKAGE VERSION\n"
12 | "Report-Msgid-Bugs-To: \n"
13 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
14 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
15 | "Last-Translator: FULL NAME \n"
16 | "Language-Team: LANGUAGE \n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 |
21 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
22 | #: templates/messages/view.html:12
23 | msgid "Recipient"
24 | msgstr "Destinatario"
25 |
26 | #: admin.py:15
27 | msgid "group"
28 | msgstr ""
29 |
30 | #: admin.py:16
31 | msgid "Creates the message optionally for all users or a group of users."
32 | msgstr ""
33 |
34 | #: admin.py:23
35 | msgid "All users"
36 | msgstr ""
37 |
38 | #: admin.py:38 models.py:88
39 | msgid "Message"
40 | msgstr "Mensaje"
41 |
42 | #: admin.py:45
43 | #, fuzzy
44 | msgid "Date/time"
45 | msgstr "Fecha"
46 |
47 | #: fields.py:53
48 | #, python-format
49 | msgid "The following usernames are incorrect: %(users)s"
50 | msgstr ""
51 |
52 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
53 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
54 | #: templates/messages/view.html:6
55 | msgid "Subject"
56 | msgstr "Asunto"
57 |
58 | #: forms.py:22 models.py:50
59 | msgid "Body"
60 | msgstr "Cuerpo"
61 |
62 | #: management.py:9
63 | msgid "Message Received"
64 | msgstr "Mensaje Recibido"
65 |
66 | #: management.py:9
67 | msgid "you have received a message"
68 | msgstr "ha recibido un mensaje"
69 |
70 | #: management.py:10
71 | msgid "Message Sent"
72 | msgstr "Mensaje Enviado"
73 |
74 | #: management.py:10
75 | msgid "you have sent a message"
76 | msgstr "ha enviado un mensaje"
77 |
78 | #: management.py:11
79 | msgid "Message Replied"
80 | msgstr "Mensaje Respondido"
81 |
82 | #: management.py:11
83 | msgid "you have replied to a message"
84 | msgstr "ha respondido un mensaje"
85 |
86 | #: management.py:12
87 | msgid "Reply Received"
88 | msgstr "Respuesta Recibida"
89 |
90 | #: management.py:12
91 | msgid "you have received a reply to a message"
92 | msgstr "ha recibido una respuesta a un mensaje"
93 |
94 | #: management.py:13
95 | msgid "Message Deleted"
96 | msgstr "Mensaje Eliminado"
97 |
98 | #: management.py:13
99 | msgid "you have deleted a message"
100 | msgstr "ha eliminado un mensaje"
101 |
102 | #: management.py:14
103 | msgid "Message Recovered"
104 | msgstr "Mensaje Recuperado"
105 |
106 | #: management.py:14
107 | msgid "you have undeleted a message"
108 | msgstr "ha recuperado un mensaje"
109 |
110 | #: models.py:51 templates/messages/inbox.html:7
111 | #: templates/messages/trash.html:7 templates/messages/view.html:8
112 | msgid "Sender"
113 | msgstr "Emisor"
114 |
115 | #: models.py:53
116 | msgid "Parent message"
117 | msgstr "Mensaje padre"
118 |
119 | #: models.py:54
120 | msgid "sent at"
121 | msgstr "enviado"
122 |
123 | #: models.py:55
124 | msgid "read at"
125 | msgstr "leído"
126 |
127 | #: models.py:56
128 | msgid "replied at"
129 | msgstr "respondido"
130 |
131 | #: models.py:57
132 | msgid "Sender deleted at"
133 | msgstr "Emisor borrado"
134 |
135 | #: models.py:58
136 | msgid "Recipient deleted at"
137 | msgstr "Destinatario borrado"
138 |
139 | #: models.py:89
140 | msgid "Messages"
141 | msgstr "Mensajes"
142 |
143 | #: utils.py:27
144 | #, fuzzy, python-format
145 | msgid "New Message: %(subject)s"
146 | msgstr "Re: %(subject)s"
147 |
148 | #: views.py:78 views.py:112
149 | msgid "Message successfully sent."
150 | msgstr "Se envió con éxito el mensaje."
151 |
152 | #: views.py:118
153 | #, python-format
154 | msgid ""
155 | "%(sender)s wrote:\n"
156 | "%(body)s"
157 | msgstr ""
158 | "%(sender)s escribió:\n"
159 | "%(body)s"
160 |
161 | #: views.py:122
162 | #, python-format
163 | msgid "Re: %(subject)s"
164 | msgstr "Re: %(subject)s"
165 |
166 | #: views.py:158
167 | msgid "Message successfully deleted."
168 | msgstr "Se eliminó con éxito el mensaje."
169 |
170 | #: views.py:185
171 | msgid "Message successfully recovered."
172 | msgstr "Se recuperó con éxito el mensaje."
173 |
174 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
175 | #: templates/messages/new_message.html:10
176 | msgid "Inbox"
177 | msgstr "Bandeja de entrada"
178 |
179 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
180 | msgid "Sent Messages"
181 | msgstr "Mensajes Enviados"
182 |
183 | #: templates/messages/base.html:10
184 | msgid "New Message"
185 | msgstr "Nuevo Mensaje"
186 |
187 | #: templates/messages/base.html:11
188 | msgid "Trash"
189 | msgstr "Papelera"
190 |
191 | #: templates/messages/compose.html:4
192 | msgid "Compose Message"
193 | msgstr "Redactar Mensaje"
194 |
195 | #: templates/messages/compose.html:9
196 | msgid "Send"
197 | msgstr "Enviar"
198 |
199 | #: templates/messages/inbox.html:7
200 | msgid "Received"
201 | msgstr "Recibido"
202 |
203 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
204 | #: templates/messages/trash.html:7
205 | msgid "Action"
206 | msgstr "Acción"
207 |
208 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
209 | #: templates/messages/trash.html:16 templates/messages/view.html:11
210 | msgid "DATETIME_FORMAT"
211 | msgstr ""
212 |
213 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
214 | msgid "delete"
215 | msgstr "eliminar"
216 |
217 | #: templates/messages/new_message.html:1
218 | #, python-format
219 | msgid ""
220 | "Hello %(recipient)s,\n"
221 | "\n"
222 | "you received a private message from %(sender)s with\n"
223 | "the following contents:"
224 | msgstr ""
225 |
226 | #: templates/messages/new_message.html:9
227 | #, python-format
228 | msgid "Sent from %(site_url)s"
229 | msgstr "Enviado desde %(site_url)s"
230 |
231 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
232 | msgid "Reply"
233 | msgstr "Responder"
234 |
235 | #: templates/messages/outbox.html:7
236 | msgid "Sent"
237 | msgstr "Enviado"
238 |
239 | #: templates/messages/trash.html:4
240 | msgid "Deleted Messages"
241 | msgstr "Mensajes Eliminados"
242 |
243 | #: templates/messages/trash.html:7 templates/messages/view.html:10
244 | msgid "Date"
245 | msgstr "Fecha"
246 |
247 | #: templates/messages/trash.html:17
248 | msgid "undelete"
249 | msgstr "recuperar"
250 |
251 | #: templates/messages/trash.html:23
252 | msgid ""
253 | "Deleted Messages are removed from the trash at unregular intervals, don't "
254 | "rely on this feature for long-time storage."
255 | msgstr ""
256 | "Los Mensajes Eliminados son borrados de la Papelera a intérvalos irregulares,"
257 | "no se confíe en esta característica para almacenamiento a largo plazo."
258 |
259 | #: templates/messages/view.html:4
260 | msgid "View Message"
261 | msgstr "Ver Mensaje"
262 |
263 | #: templates/messages/view.html:20
264 | msgid "Delete"
265 | msgstr "Eliminar"
266 |
267 | #: templates/notification/messages_deleted/notice.html:1
268 | #, fuzzy, python-format
269 | msgid ""
270 | "You have deleted the message %(message)s."
271 | msgstr "ha eliminado el mensaje %(message)s."
272 |
273 | #: templates/notification/messages_received/notice.html:2
274 | #, fuzzy, python-format
275 | msgid ""
276 | "You have received the message %(message)s "
277 | "from %(message_sender)s."
278 | msgstr "ha recibido un mensaje de %(sender)s."
279 |
280 | #: templates/notification/messages_recovered/notice.html:1
281 | #, fuzzy, python-format
282 | msgid ""
283 | "You have recovered the message %(message)s."
284 | msgstr "ha recuperado el mensaje %(message)s."
285 |
286 | #: templates/notification/messages_replied/notice.html:2
287 | #, fuzzy, python-format
288 | msgid ""
289 | "You have replied to %(message_parent_msg)s "
290 | "from %(message_recipient)s."
291 | msgstr "ha respondido a %(message)s de %(recipient)s."
292 |
293 | #: templates/notification/messages_reply_received/notice.html:2
294 | #, fuzzy, python-format
295 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
296 | msgstr "%(sender)s le ha enviado una respuesta a %(message)s."
297 |
298 | #: templates/notification/messages_sent/notice.html:2
299 | #, python-format
300 | msgid ""
301 | "You have sent the message %(message)s to %"
302 | "(message_recipient)s."
303 | msgstr ""
304 |
305 | #~ msgid "There is no user with this username."
306 | #~ msgstr "No hay ningún usuario con ese nombre."
307 |
308 | #~ msgid "you have sent a message to %(recipient)s."
309 | #~ msgstr "ha enviado un mensaje a %(recipient)s."
310 |
311 | #~ msgid "New Message:"
312 | #~ msgstr "Mensaje Nuevo"
313 |
--------------------------------------------------------------------------------
/django_messages/locale/el/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: PACKAGE VERSION\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
11 | "PO-Revision-Date: 2009-09-08 15:50+0200\n"
12 | "Last-Translator: markos \n"
13 | "Language-Team: Markos Gogoulos \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 |
18 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
19 | #: templates/messages/view.html:12
20 | msgid "Recipient"
21 | msgstr "Αποδέκτης"
22 |
23 | #: admin.py:15
24 | msgid "group"
25 | msgstr "ομάδα"
26 |
27 | #: admin.py:16
28 | msgid "Creates the message optionally for all users or a group of users."
29 | msgstr "Δημιουργεί το μήνυμα προαιρετικά για όλους τους χρήστες ή για ομάδα χρηστών."
30 |
31 | #: admin.py:23
32 | msgid "All users"
33 | msgstr "Όλοι οι χρήστες"
34 |
35 | #: admin.py:38 models.py:88
36 | msgid "Message"
37 | msgstr "Μήνυμα"
38 |
39 | #: admin.py:45
40 | msgid "Date/time"
41 | msgstr "Ημερομηνία/Ώρα"
42 |
43 | #: fields.py:53
44 | #, python-format
45 | msgid "The following usernames are incorrect: %(users)s"
46 | msgstr "Τα παρακάτω usernames δεν είναι σωστά: %(users)s"
47 |
48 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
49 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
50 | #: templates/messages/view.html:6
51 | msgid "Subject"
52 | msgstr "Θέμα"
53 |
54 | #: forms.py:22 models.py:50
55 | msgid "Body"
56 | msgstr "Κυρίως μέρος"
57 |
58 | #: management.py:9
59 | msgid "Message Received"
60 | msgstr "Το μήνυμα ελήφθη "
61 |
62 | #: management.py:9
63 | msgid "you have received a message"
64 | msgstr "έχετε λάβει ένα μήνυμα"
65 |
66 | #: management.py:10
67 | msgid "Message Sent"
68 | msgstr "Το μήνυμα εστάλει"
69 |
70 | #: management.py:10
71 | msgid "you have sent a message"
72 | msgstr "έχετε στείλει ένα μήνυμα"
73 |
74 | #: management.py:11
75 | msgid "Message Replied"
76 | msgstr "Το μήνυμα έχει απαντηθεί"
77 |
78 | #: management.py:11
79 | msgid "you have replied to a message"
80 | msgstr "έχετε απαντήσει σε ένα μήνυμα"
81 |
82 | #: management.py:12
83 | msgid "Reply Received"
84 | msgstr "Η απάντηση ελήφθη"
85 |
86 | #: management.py:12
87 | msgid "you have received a reply to a message"
88 | msgstr "έχετε λάβει μια απάντηση σε ένα μήνυμα"
89 |
90 | #: management.py:13
91 | msgid "Message Deleted"
92 | msgstr "Το μήνυμα έχει διαγραφεί"
93 |
94 | #: management.py:13
95 | msgid "you have deleted a message"
96 | msgstr "διαγράψατε ένα μήνυμα"
97 |
98 | #: management.py:14
99 | msgid "Message Recovered"
100 | msgstr "Το μήνυμα έχει ανακληθεί"
101 |
102 | #: management.py:14
103 | msgid "you have undeleted a message"
104 | msgstr "έχετε ανακτήσει ένα μήνυμα"
105 |
106 | #: models.py:51 templates/messages/inbox.html:7
107 | #: templates/messages/trash.html:7 templates/messages/view.html:8
108 | msgid "Sender"
109 | msgstr "Αποστολέας"
110 |
111 | #: models.py:53
112 | msgid "Parent message"
113 | msgstr "Μήνυμα Γονέας"
114 |
115 | #: models.py:54
116 | msgid "sent at"
117 | msgstr "εστάλει στις"
118 |
119 | #: models.py:55
120 | msgid "read at"
121 | msgstr "αναγνώστηκε στις"
122 |
123 | #: models.py:56
124 | msgid "replied at"
125 | msgstr "απαντήθηκε στις"
126 |
127 | #: models.py:57
128 | msgid "Sender deleted at"
129 | msgstr "Ο αποστολέας το διέγραψε στις"
130 |
131 | #: models.py:58
132 | msgid "Recipient deleted at"
133 | msgstr "Ο αποδέκτης το διέγραψε στις"
134 |
135 | #: models.py:89
136 | msgid "Messages"
137 | msgstr "Μηνύματα"
138 |
139 | #: utils.py:27
140 | #, python-format
141 | msgid "New Message: %(subject)s"
142 | msgstr "καινούργιο μήνυμα: %(subject)s"
143 |
144 | #: views.py:78 views.py:112
145 | msgid "Message successfully sent."
146 | msgstr "Το μήνυμα έχει αποσταλεί με επιτυχία."
147 |
148 | #: views.py:118
149 | #, python-format
150 | msgid ""
151 | "%(sender)s wrote:\n"
152 | "%(body)s"
153 | msgstr ""
154 | "%(sender)s έγραψε:\n"
155 | "%(body)s"
156 |
157 | #: views.py:122
158 | #, python-format
159 | msgid "Re: %(subject)s"
160 | msgstr "Re: %(subject)s"
161 |
162 | #: views.py:158
163 | msgid "Message successfully deleted."
164 | msgstr "Το μήνυμα διεγράφει."
165 |
166 | #: views.py:185
167 | msgid "Message successfully recovered."
168 | msgstr "Το μήνυμα έχει ανακληθεί επιτυχημένα"
169 |
170 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
171 | #: templates/messages/new_message.html:10
172 | msgid "Inbox"
173 | msgstr "Εισερχόμενα"
174 |
175 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
176 | msgid "Sent Messages"
177 | msgstr "Σταλμένα μηνύματα"
178 |
179 | #: templates/messages/base.html:10
180 | msgid "New Message"
181 | msgstr "Νέο μήνυμα"
182 |
183 | #: templates/messages/base.html:11
184 | msgid "Trash"
185 | msgstr "Άχρηστα"
186 |
187 | #: templates/messages/compose.html:4
188 | msgid "Compose Message"
189 | msgstr "Συντάξτε μήνυμα"
190 |
191 | #: templates/messages/compose.html:9
192 | msgid "Send"
193 | msgstr "Στείλτε"
194 |
195 | #: templates/messages/inbox.html:7
196 | msgid "Received"
197 | msgstr "Ελήφθη"
198 |
199 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
200 | #: templates/messages/trash.html:7
201 | msgid "Action"
202 | msgstr "Ενέργεια"
203 |
204 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
205 | #: templates/messages/trash.html:16 templates/messages/view.html:11
206 | msgid "DATETIME_FORMAT"
207 | msgstr "DATETIME_FORMAT"
208 |
209 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
210 | msgid "delete"
211 | msgstr "διαγράφω"
212 |
213 | #: templates/messages/new_message.html:1
214 | #, python-format
215 | msgid ""
216 | "Hello %(recipient)s,\n"
217 | "\n"
218 | "you received a private message from %(sender)s with\n"
219 | "the following contents:"
220 | msgstr ""
221 | "Γειά χαρά %(recipient)s,\n"
222 | "\n"
223 | "έχετε λάβει ένα προσωπικό μήνυμα από τον/την %(sender)s με\n"
224 | "το ακόλουθο περιεχόμενο:"
225 |
226 | #: templates/messages/new_message.html:9
227 | #, python-format
228 | msgid "Sent from %(site_url)s"
229 | msgstr "Εστάλει απο %(site_url)s"
230 |
231 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
232 | msgid "Reply"
233 | msgstr "Απαντήστε"
234 |
235 | #: templates/messages/outbox.html:7
236 | msgid "Sent"
237 | msgstr "Απεσταλμένα"
238 |
239 | #: templates/messages/trash.html:4
240 | msgid "Deleted Messages"
241 | msgstr "Διαγραμμένα μηνύματα"
242 |
243 | #: templates/messages/trash.html:7 templates/messages/view.html:10
244 | msgid "Date"
245 | msgstr "Ημερομηνία"
246 |
247 | #: templates/messages/trash.html:17
248 | msgid "undelete"
249 | msgstr "ξεδιαγράψτε"
250 |
251 | #: templates/messages/trash.html:23
252 | msgid "Deleted Messages are removed from the trash at unregular intervals, don't rely on this feature for long-time storage."
253 | msgstr "Τα διαγραμμένα μηνύματα απομακρύνονται απο τα Άχρηστα σε μη τακτά διαστήματα, μη βασίζεστε σε αυτά για μακροχρόνια αποθήκευση."
254 |
255 | #: templates/messages/view.html:4
256 | msgid "View Message"
257 | msgstr "Προβολή Μηνύματος"
258 |
259 | #: templates/messages/view.html:20
260 | msgid "Delete"
261 | msgstr "Διαγραφή"
262 |
263 | #: templates/notification/messages_deleted/notice.html:1
264 | #, python-format
265 | msgid "You have deleted the message %(message)s."
266 | msgstr "Έχετε διαγράψει το μήνυμα %(message)s."
267 |
268 | #: templates/notification/messages_received/notice.html:2
269 | #, python-format
270 | msgid "You have received the message %(message)s from %(message_sender)s."
271 | msgstr "Έχετε λάβει το μήνυμα %(message)s από τον/την %(message_sender)s."
272 |
273 | #: templates/notification/messages_recovered/notice.html:1
274 | #, python-format
275 | msgid "You have recovered the message %(message)s."
276 | msgstr "Έχετε ανακτήσει το μήνυμα %(message)s."
277 |
278 | #: templates/notification/messages_replied/notice.html:2
279 | #, python-format
280 | msgid "You have replied to %(message_parent_msg)s from %(message_recipient)s."
281 | msgstr "Έχετε απαντήσει στο %(message_parent_msg)sαπό τον/την %(message_recipient)s."
282 |
283 | #: templates/notification/messages_reply_received/notice.html:2
284 | #, python-format
285 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
286 | msgstr "Ο/η %(message_sender)s σας έστειλε μια απάντηση στο %(message_parent_msg)s."
287 |
288 | #: templates/notification/messages_sent/notice.html:2
289 | #, python-format
290 | msgid "You have sent the message %(message)s to %(message_recipient)s."
291 | msgstr "Έχετε στείλει το μήνυμα %(message)s στον/στην %(message_recipient)s."
292 |
--------------------------------------------------------------------------------
/django_messages/locale/eu/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # django-messages in Basque.
2 | # django-messages Euskaraz.
3 | # Copyright (C) 2008
4 | # This file is distributed under the same license as the django-messages package.
5 | # Urtzi Odriozola Lizaso , 2017.
6 | #
7 | #, fuzzy
8 | msgid ""
9 | msgstr ""
10 | "Project-Id-Version: PACKAGE VERSION\n"
11 | "Report-Msgid-Bugs-To: \n"
12 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
13 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14 | "Last-Translator: FULL NAME \n"
15 | "Language-Team: LANGUAGE \n"
16 | "MIME-Version: 1.0\n"
17 | "Content-Type: text/plain; charset=UTF-8\n"
18 | "Content-Transfer-Encoding: 8bit\n"
19 |
20 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
21 | #: templates/messages/view.html:12
22 | msgid "Recipient"
23 | msgstr "Hartzailea"
24 |
25 | #: admin.py:15
26 | msgid "group"
27 | msgstr "taldea"
28 |
29 | #: admin.py:16
30 | msgid "Creates the message optionally for all users or a group of users."
31 | msgstr "Erabiltzaile bat edo talde batentzat mezua sortzen du aukeran"
32 |
33 | #: admin.py:23
34 | msgid "All users"
35 | msgstr "Erabiltzaile guztiak"
36 |
37 | #: admin.py:38 models.py:88
38 | msgid "Message"
39 | msgstr "Mezua"
40 |
41 | #: admin.py:45
42 | #, fuzzy
43 | msgid "Date/time"
44 | msgstr "Data/ordua"
45 |
46 | #: fields.py:53
47 | #, python-format
48 | msgid "The following usernames are incorrect: %(users)s"
49 | msgstr "Erabiltzaile hauek okerrak dira: %(users)s"
50 |
51 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
52 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
53 | #: templates/messages/view.html:6
54 | msgid "Subject"
55 | msgstr "Gaia"
56 |
57 | #: forms.py:22 models.py:50
58 | msgid "Body"
59 | msgstr "Testua"
60 |
61 | #: management.py:9
62 | msgid "Message Received"
63 | msgstr "Mezua jasota"
64 |
65 | #: management.py:9
66 | msgid "you have received a message"
67 | msgstr "mezu bat jaso duzu"
68 |
69 | #: management.py:10
70 | msgid "Message Sent"
71 | msgstr "Mezua bidalita"
72 |
73 | #: management.py:10
74 | msgid "you have sent a message"
75 | msgstr "mezu bat bidali duzu"
76 |
77 | #: management.py:11
78 | msgid "Message Replied"
79 | msgstr "Mezua erantzunda"
80 |
81 | #: management.py:11
82 | msgid "you have replied to a message"
83 | msgstr "mezu bat erantzun duzu"
84 |
85 | #: management.py:12
86 | msgid "Reply Received"
87 | msgstr "Erantzuna jasota"
88 |
89 | #: management.py:12
90 | msgid "you have received a reply to a message"
91 | msgstr "mezu baten erantzuna jaso duzu"
92 |
93 | #: management.py:13
94 | msgid "Message Deleted"
95 | msgstr "Mezua ezabatuta"
96 |
97 | #: management.py:13
98 | msgid "you have deleted a message"
99 | msgstr "mezu bat ezabatu duzu"
100 |
101 | #: management.py:14
102 | msgid "Message Recovered"
103 | msgstr "Mezua berreskuratuta"
104 |
105 | #: management.py:14
106 | msgid "you have undeleted a message"
107 | msgstr "mezu bat berreskuratu duzu"
108 |
109 | #: models.py:51 templates/messages/inbox.html:7
110 | #: templates/messages/trash.html:7 templates/messages/view.html:8
111 | msgid "Sender"
112 | msgstr "Igorlea"
113 |
114 | #: models.py:53
115 | msgid "Parent message"
116 | msgstr "Mezu gurasoa"
117 |
118 | #: models.py:54
119 | msgid "sent at"
120 | msgstr "bidalita"
121 |
122 | #: models.py:55
123 | msgid "read at"
124 | msgstr "irakurrita"
125 |
126 | #: models.py:56
127 | msgid "replied at"
128 | msgstr "erantzunda"
129 |
130 | #: models.py:57
131 | msgid "Sender deleted at"
132 | msgstr "Igorlea ezabatuta"
133 |
134 | #: models.py:58
135 | msgid "Recipient deleted at"
136 | msgstr "Hartzailea ezabatuta"
137 |
138 | #: models.py:89
139 | msgid "Messages"
140 | msgstr "Mezuak"
141 |
142 | #: utils.py:27
143 | #, python-format
144 | msgid "New Message: %(subject)s"
145 | msgstr "Mezu berria: %(subject)s"
146 |
147 | #: views.py:78 views.py:112
148 | msgid "Message successfully sent."
149 | msgstr "Mezua arrakastaz bidali da."
150 |
151 | #: views.py:118
152 | #, python-format
153 | msgid ""
154 | "%(sender)s wrote:\n"
155 | "%(body)s"
156 | msgstr ""
157 | "%(sender)s idatzi du:\n"
158 | "%(body)s"
159 |
160 | #: views.py:122
161 | #, python-format
162 | msgid "Re: %(subject)s"
163 | msgstr "Re: %(subject)s"
164 |
165 | #: views.py:158
166 | msgid "Message successfully deleted."
167 | msgstr "Mezua arrakastaz ezabatu da."
168 |
169 | #: views.py:185
170 | msgid "Message successfully recovered."
171 | msgstr "Mezua arrakastaz berreskuratu da."
172 |
173 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
174 | #: templates/messages/new_message.html:10
175 | msgid "Inbox"
176 | msgstr "Sarrera-ontzia"
177 |
178 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
179 | msgid "Sent Messages"
180 | msgstr "Bidalitako mezuak"
181 |
182 | #: templates/messages/base.html:10
183 | msgid "New Message"
184 | msgstr "Mezu berria"
185 |
186 | #: templates/messages/base.html:11
187 | msgid "Trash"
188 | msgstr "Zaborrontzia"
189 |
190 | #: templates/messages/compose.html:4
191 | msgid "Compose Message"
192 | msgstr "Idatzi mezua"
193 |
194 | #: templates/messages/compose.html:9
195 | msgid "Send"
196 | msgstr "Bidali"
197 |
198 | #: templates/messages/inbox.html:7
199 | msgid "Received"
200 | msgstr "Jasota"
201 |
202 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
203 | #: templates/messages/trash.html:7
204 | msgid "Action"
205 | msgstr "Ekintza"
206 |
207 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
208 | #: templates/messages/trash.html:16 templates/messages/view.html:11
209 | msgid "DATETIME_FORMAT"
210 | msgstr ""
211 |
212 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
213 | msgid "delete"
214 | msgstr "ezabatu"
215 |
216 | #: templates/messages/new_message.html:1
217 | #, python-format
218 | msgid ""
219 | "Hello %(recipient)s,\n"
220 | "\n"
221 | "you received a private message from %(sender)s with\n"
222 | "the following contents:"
223 | msgstr ""
224 | "Kaixo %(recipient)s,\n"
225 | "\n"
226 | "%(sender)s-(r)en mezu bat jaso duzu\n"
227 | "ondorengo edukiarekin:"
228 |
229 | #: templates/messages/new_message.html:9
230 | #, python-format
231 | msgid "Sent from %(site_url)s"
232 | msgstr "%(site_url)s-(e)tik bidalita"
233 |
234 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
235 | msgid "Reply"
236 | msgstr "Erantzun"
237 |
238 | #: templates/messages/outbox.html:7
239 | msgid "Sent"
240 | msgstr "Bidalita"
241 |
242 | #: templates/messages/trash.html:4
243 | msgid "Deleted Messages"
244 | msgstr "Ezabatutako mezuak"
245 |
246 | #: templates/messages/trash.html:7 templates/messages/view.html:10
247 | msgid "Date"
248 | msgstr "Data"
249 |
250 | #: templates/messages/trash.html:17
251 | msgid "undelete"
252 | msgstr "berreskuratu"
253 |
254 | #: templates/messages/trash.html:23
255 | msgid ""
256 | "Deleted Messages are removed from the trash at unregular intervals, don't "
257 | "rely on this feature for long-time storage."
258 | msgstr ""
259 | "Ezabatutako mezuak periodo irregularretan ezabatzen dira zaborrontzitik,"
260 | "ez zaitez fidatu luzerako gordeko direla pentsatuz."
261 |
262 | #: templates/messages/view.html:4
263 | msgid "View Message"
264 | msgstr "Ikusi mezua"
265 |
266 | #: templates/messages/view.html:20
267 | msgid "Delete"
268 | msgstr "Eliminar"
269 |
270 | #: templates/notification/messages_deleted/notice.html:1
271 | #, python-format
272 | msgid ""
273 | "You have deleted the message %(message)s."
274 | msgstr "%(message)s mezua ezabatu duzu."
275 |
276 | #: templates/notification/messages_received/notice.html:2
277 | #, python-format
278 | msgid ""
279 | "You have received the message %(message)s "
280 | "from %(message_sender)s."
281 | msgstr ""
282 | "%(message_sender)s erabiltzailearen "
283 | "%(message)s mezua ezabatu duzu."
284 |
285 |
286 | #: templates/notification/messages_recovered/notice.html:1
287 | #, python-format
288 | msgid ""
289 | "You have recovered the message %(message)s."
290 | msgstr "%(message)s mezua berreskuratu duzu."
291 |
292 | #: templates/notification/messages_replied/notice.html:2
293 | #, python-format
294 | msgid ""
295 | "You have replied to %(message_parent_msg)s "
296 | "from %(message_recipient)s."
297 | msgstr ""
298 | "%(message_recipient)s-(r)en "
299 | "%(message_parent_msg)s mezua erantzun duzu."
300 |
301 |
302 | #: templates/notification/messages_reply_received/notice.html:2
303 | #, python-format
304 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
305 | msgstr ""
306 | "%(message_sender)s-(e)k erantzun bat bidali dizu %(message_parent_msg)s mezura."
307 |
308 | #: templates/notification/messages_sent/notice.html:2
309 | #, python-format
310 | msgid ""
311 | "You have sent the message %(message)s to %"
312 | "(message_recipient)s."
313 | msgstr ""
314 | "%(message_recipient)s-(r)i "
315 | "%(message)s mezua bidali diozu."
316 |
--------------------------------------------------------------------------------
/django_messages/locale/es/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # django-messages in Spanish.
2 | # django-messages en Español.
3 | # Copyright (C) 2008
4 | # This file is distributed under the same license as the django-messages package.
5 | # Maria Guadalupe Paz Urrea , 2008.
6 | # Alfonso Bernardo Harita Rascón , 2008.
7 | #
8 | #, fuzzy
9 | msgid ""
10 | msgstr ""
11 | "Project-Id-Version: PACKAGE VERSION\n"
12 | "Report-Msgid-Bugs-To: \n"
13 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
14 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
15 | "Last-Translator: FULL NAME \n"
16 | "Language-Team: LANGUAGE \n"
17 | "MIME-Version: 1.0\n"
18 | "Content-Type: text/plain; charset=UTF-8\n"
19 | "Content-Transfer-Encoding: 8bit\n"
20 |
21 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
22 | #: templates/messages/view.html:12
23 | msgid "Recipient"
24 | msgstr "Destinatario"
25 |
26 | #: admin.py:15
27 | msgid "group"
28 | msgstr ""
29 |
30 | #: admin.py:16
31 | msgid "Creates the message optionally for all users or a group of users."
32 | msgstr ""
33 |
34 | #: admin.py:23
35 | msgid "All users"
36 | msgstr ""
37 |
38 | #: admin.py:38 models.py:88
39 | msgid "Message"
40 | msgstr "Mensaje"
41 |
42 | #: admin.py:45
43 | #, fuzzy
44 | msgid "Date/time"
45 | msgstr "Fecha"
46 |
47 | #: fields.py:53
48 | #, python-format
49 | msgid "The following usernames are incorrect: %(users)s"
50 | msgstr "Los siguientes usuarios son incorrectos: %(users)s"
51 |
52 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
53 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
54 | #: templates/messages/view.html:6
55 | msgid "Subject"
56 | msgstr "Asunto"
57 |
58 | #: forms.py:22 models.py:50
59 | msgid "Body"
60 | msgstr "Cuerpo"
61 |
62 | #: management.py:9
63 | msgid "Message Received"
64 | msgstr "Mensaje Recibido"
65 |
66 | #: management.py:9
67 | msgid "you have received a message"
68 | msgstr "ha recibido un mensaje"
69 |
70 | #: management.py:10
71 | msgid "Message Sent"
72 | msgstr "Mensaje Enviado"
73 |
74 | #: management.py:10
75 | msgid "you have sent a message"
76 | msgstr "ha enviado un mensaje"
77 |
78 | #: management.py:11
79 | msgid "Message Replied"
80 | msgstr "Mensaje Respondido"
81 |
82 | #: management.py:11
83 | msgid "you have replied to a message"
84 | msgstr "ha respondido un mensaje"
85 |
86 | #: management.py:12
87 | msgid "Reply Received"
88 | msgstr "Respuesta Recibida"
89 |
90 | #: management.py:12
91 | msgid "you have received a reply to a message"
92 | msgstr "ha recibido una respuesta a un mensaje"
93 |
94 | #: management.py:13
95 | msgid "Message Deleted"
96 | msgstr "Mensaje Eliminado"
97 |
98 | #: management.py:13
99 | msgid "you have deleted a message"
100 | msgstr "ha eliminado un mensaje"
101 |
102 | #: management.py:14
103 | msgid "Message Recovered"
104 | msgstr "Mensaje Recuperado"
105 |
106 | #: management.py:14
107 | msgid "you have undeleted a message"
108 | msgstr "ha recuperado un mensaje"
109 |
110 | #: models.py:51 templates/messages/inbox.html:7
111 | #: templates/messages/trash.html:7 templates/messages/view.html:8
112 | msgid "Sender"
113 | msgstr "Emisor"
114 |
115 | #: models.py:53
116 | msgid "Parent message"
117 | msgstr "Mensaje padre"
118 |
119 | #: models.py:54
120 | msgid "sent at"
121 | msgstr "enviado"
122 |
123 | #: models.py:55
124 | msgid "read at"
125 | msgstr "leído"
126 |
127 | #: models.py:56
128 | msgid "replied at"
129 | msgstr "respondido"
130 |
131 | #: models.py:57
132 | msgid "Sender deleted at"
133 | msgstr "Emisor borrado"
134 |
135 | #: models.py:58
136 | msgid "Recipient deleted at"
137 | msgstr "Destinatario borrado"
138 |
139 | #: models.py:89
140 | msgid "Messages"
141 | msgstr "Mensajes"
142 |
143 | #: utils.py:27
144 | #, python-format
145 | msgid "New Message: %(subject)s"
146 | msgstr "Nuevo Mensaje: %(subject)s"
147 |
148 | #: views.py:78 views.py:112
149 | msgid "Message successfully sent."
150 | msgstr "Se envió con éxito el mensaje."
151 |
152 | #: views.py:118
153 | #, python-format
154 | msgid ""
155 | "%(sender)s wrote:\n"
156 | "%(body)s"
157 | msgstr ""
158 | "%(sender)s escribió:\n"
159 | "%(body)s"
160 |
161 | #: views.py:122
162 | #, python-format
163 | msgid "Re: %(subject)s"
164 | msgstr "Re: %(subject)s"
165 |
166 | #: views.py:158
167 | msgid "Message successfully deleted."
168 | msgstr "Se eliminó con éxito el mensaje."
169 |
170 | #: views.py:185
171 | msgid "Message successfully recovered."
172 | msgstr "Se recuperó con éxito el mensaje."
173 |
174 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
175 | #: templates/messages/new_message.html:10
176 | msgid "Inbox"
177 | msgstr "Bandeja de entrada"
178 |
179 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
180 | msgid "Sent Messages"
181 | msgstr "Mensajes Enviados"
182 |
183 | #: templates/messages/base.html:10
184 | msgid "New Message"
185 | msgstr "Nuevo Mensaje"
186 |
187 | #: templates/messages/base.html:11
188 | msgid "Trash"
189 | msgstr "Papelera"
190 |
191 | #: templates/messages/compose.html:4
192 | msgid "Compose Message"
193 | msgstr "Redactar Mensaje"
194 |
195 | #: templates/messages/compose.html:9
196 | msgid "Send"
197 | msgstr "Enviar"
198 |
199 | #: templates/messages/inbox.html:7
200 | msgid "Received"
201 | msgstr "Recibido"
202 |
203 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
204 | #: templates/messages/trash.html:7
205 | msgid "Action"
206 | msgstr "Acción"
207 |
208 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
209 | #: templates/messages/trash.html:16 templates/messages/view.html:11
210 | msgid "DATETIME_FORMAT"
211 | msgstr ""
212 |
213 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
214 | msgid "delete"
215 | msgstr "eliminar"
216 |
217 | #: templates/messages/new_message.html:1
218 | #, python-format
219 | msgid ""
220 | "Hello %(recipient)s,\n"
221 | "\n"
222 | "you received a private message from %(sender)s with\n"
223 | "the following contents:"
224 | msgstr ""
225 | "Hola %(recipient)s,\n"
226 | "\n"
227 | "ha recibido un mensaje de %(sender)s con\n"
228 | "el siguiente contenido:"
229 |
230 | #: templates/messages/new_message.html:9
231 | #, python-format
232 | msgid "Sent from %(site_url)s"
233 | msgstr "Enviado desde %(site_url)s"
234 |
235 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
236 | msgid "Reply"
237 | msgstr "Responder"
238 |
239 | #: templates/messages/outbox.html:7
240 | msgid "Sent"
241 | msgstr "Enviado"
242 |
243 | #: templates/messages/trash.html:4
244 | msgid "Deleted Messages"
245 | msgstr "Mensajes Eliminados"
246 |
247 | #: templates/messages/trash.html:7 templates/messages/view.html:10
248 | msgid "Date"
249 | msgstr "Fecha"
250 |
251 | #: templates/messages/trash.html:17
252 | msgid "undelete"
253 | msgstr "recuperar"
254 |
255 | #: templates/messages/trash.html:23
256 | msgid ""
257 | "Deleted Messages are removed from the trash at unregular intervals, don't "
258 | "rely on this feature for long-time storage."
259 | msgstr ""
260 | "Los Mensajes Eliminados son borrados de la Papelera a intérvalos irregulares,"
261 | "no se confíe en esta característica para almacenamiento a largo plazo."
262 |
263 | #: templates/messages/view.html:4
264 | msgid "View Message"
265 | msgstr "Ver Mensaje"
266 |
267 | #: templates/messages/view.html:20
268 | msgid "Delete"
269 | msgstr "Eliminar"
270 |
271 | #: templates/notification/messages_deleted/notice.html:1
272 | #, python-format
273 | msgid ""
274 | "You have deleted the message %(message)s."
275 | msgstr "ha borrado el mensaje %(message)s."
276 |
277 | #: templates/notification/messages_received/notice.html:2
278 | #, python-format
279 | msgid ""
280 | "You have received the message %(message)s "
281 | "from %(message_sender)s."
282 | msgstr ""
283 | "ha recibido el mensaje %(message)s de %"
284 | "(message_sender)s."
285 |
286 | #: templates/notification/messages_recovered/notice.html:1
287 | #, python-format
288 | msgid ""
289 | "You have recovered the message %(message)s."
290 | msgstr "ha recuperado el mensaje %(message)s."
291 |
292 | #: templates/notification/messages_replied/notice.html:2
293 | #, python-format
294 | msgid ""
295 | "You have replied to %(message_parent_msg)s "
296 | "from %(message_recipient)s."
297 | msgstr ""
298 | "ha respondido a %(message_parent_msg)s de %"
299 | "(message_recipient)s."
300 |
301 | #: templates/notification/messages_reply_received/notice.html:2
302 | #, python-format
303 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
304 | msgstr ""
305 | "%(message_sender)s le ha enviado una respuesta a %(message_parent_msg)s."
306 |
307 | #: templates/notification/messages_sent/notice.html:2
308 | #, python-format
309 | msgid ""
310 | "You have sent the message %(message)s to %"
311 | "(message_recipient)s."
312 | msgstr ""
313 | "ha enviado el mensaje %(message)s a %"
314 | "(message_recipient)s."
315 |
--------------------------------------------------------------------------------
/django_messages/locale/lt/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
12 | "PO-Revision-Date: 2015-03-24 10:53+0200\n"
13 | "Last-Translator: Saulius Zemaitaitis \n"
14 | "Language-Team: LANGUAGE \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "Gavėjas"
23 |
24 | #: admin.py:15
25 | msgid "group"
26 | msgstr "Grupė"
27 |
28 | #: admin.py:16
29 | msgid "Creates the message optionally for all users or a group of users."
30 | msgstr ""
31 | "Sukuria žinutę visiems vartotojams arba grupei pasirinktinai "
32 |
33 |
34 | #: admin.py:23
35 | msgid "All users"
36 | msgstr "Visi vartotojai"
37 |
38 | #: admin.py:38 models.py:88
39 | msgid "Message"
40 | msgstr "Žinutė"
41 |
42 | #: admin.py:45
43 | msgid "Date/time"
44 | msgstr "Data/Laikas"
45 |
46 | #: fields.py:53
47 | #, python-format
48 | msgid "The following usernames are incorrect: %(users)s"
49 | msgstr "Šie vartotojų vardai yra neteisingi: %(users)s"
50 |
51 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
52 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
53 | #: templates/messages/view.html:6
54 | msgid "Subject"
55 | msgstr "Tema"
56 |
57 | #: forms.py:22 models.py:50
58 | msgid "Body"
59 | msgstr "Turinys"
60 |
61 | #: management.py:9
62 | msgid "Message Received"
63 | msgstr "Gauta žinutė"
64 |
65 | #: management.py:9
66 | msgid "you have received a message"
67 | msgstr "jūs gavote žinutę"
68 |
69 | #: management.py:10
70 | msgid "Message Sent"
71 | msgstr "Žinutė Išsiųsta"
72 |
73 | #: management.py:10
74 | msgid "you have sent a message"
75 | msgstr "jūs išsiuntėte žinutę"
76 |
77 | #: management.py:11
78 | msgid "Message Replied"
79 | msgstr "Žinutė atsakyta"
80 |
81 | #: management.py:11
82 | msgid "you have replied to a message"
83 | msgstr "jūs atsakėte į žinutę"
84 |
85 | #: management.py:12
86 | msgid "Reply Received"
87 | msgstr "Gautas atsakymas"
88 |
89 | #: management.py:12
90 | msgid "you have received a reply to a message"
91 | msgstr "jūs gavote atsakymą į žinutę"
92 |
93 | #: management.py:13
94 | msgid "Message Deleted"
95 | msgstr "Žinutė ištrinta"
96 |
97 | #: management.py:13
98 | msgid "you have deleted a message"
99 | msgstr "jūs ištrynėte žinutę"
100 |
101 | #: management.py:14
102 | msgid "Message Recovered"
103 | msgstr "Žinutė Atstatyta"
104 |
105 | #: management.py:14
106 | msgid "you have undeleted a message"
107 | msgstr "jūs atstatėte ištrintą žinutę"
108 |
109 | #: models.py:51 templates/messages/inbox.html:7
110 | #: templates/messages/trash.html:7 templates/messages/view.html:8
111 | msgid "Sender"
112 | msgstr "Siuntėjas"
113 |
114 | #: models.py:53
115 | msgid "Parent message"
116 | msgstr "Pirminė žinutė"
117 |
118 | #: models.py:54
119 | msgid "sent at"
120 | msgstr "išsiųsta"
121 |
122 | #: models.py:55
123 | msgid "read at"
124 | msgstr "perskaityta"
125 |
126 | #: models.py:56
127 | msgid "replied at"
128 | msgstr "atsakyta"
129 |
130 | #: models.py:57
131 | msgid "Sender deleted at"
132 | msgstr "Siuntėjas ištrynė"
133 |
134 | #: models.py:58
135 | msgid "Recipient deleted at"
136 | msgstr "Gavėjas ištrynė"
137 |
138 | #: models.py:89
139 | msgid "Messages"
140 | msgstr "Žinutės"
141 |
142 | #: utils.py:27
143 | #, python-format
144 | msgid "New Message: %(subject)s"
145 | msgstr "Nauja žinutė: %(subject)s"
146 |
147 | #: views.py:78 views.py:112
148 | msgid "Message successfully sent."
149 | msgstr "Žinutė sėkmingai išsiųsta."
150 |
151 | #: views.py:118
152 | #, python-format
153 | msgid ""
154 | "%(sender)s wrote:\n"
155 | "%(body)s"
156 | msgstr ""
157 | "%(sender)s parašė:\n"
158 | "%(body)s"
159 |
160 | #: views.py:122
161 | #, python-format
162 | msgid "Re: %(subject)s"
163 | msgstr "Ats: %(subject)s"
164 |
165 | #: views.py:158
166 | msgid "Message successfully deleted."
167 | msgstr "Žinutė sėkmingai ištrinta."
168 |
169 | #: views.py:185
170 | msgid "Message successfully recovered."
171 | msgstr "Žinutė sėkmingai atstatyta."
172 |
173 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
174 | #: templates/messages/new_message.html:10
175 | msgid "Inbox"
176 | msgstr "Gautos"
177 |
178 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
179 | msgid "Sent Messages"
180 | msgstr "Išsiųstos žinutės"
181 |
182 | #: templates/messages/base.html:10
183 | msgid "New Message"
184 | msgstr "Nauja žinutė"
185 |
186 | #: templates/messages/base.html:11
187 | msgid "Trash"
188 | msgstr "Ištrintos"
189 |
190 | #: templates/messages/compose.html:4
191 | msgid "Compose Message"
192 | msgstr "Kurti žinutę"
193 |
194 | #: templates/messages/compose.html:9
195 | msgid "Send"
196 | msgstr "Siųsti"
197 |
198 | #: templates/messages/inbox.html:7
199 | msgid "Received"
200 | msgstr "Gauta"
201 |
202 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
203 | #: templates/messages/trash.html:7
204 | msgid "Action"
205 | msgstr "Veiksmas"
206 |
207 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
208 | #: templates/messages/trash.html:16 templates/messages/view.html:11
209 | msgid "DATETIME_FORMAT"
210 | msgstr "Y j. N, H:i"
211 |
212 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
213 | msgid "delete"
214 | msgstr "ištrinti"
215 |
216 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
217 | #: templates/messages/trash.html:24
218 | msgid "No messages."
219 | msgstr "Žinučių nėra."
220 |
221 | #: templates/messages/new_message.html:1
222 | #, python-format
223 | msgid ""
224 | "Hello %(recipient)s,\n"
225 | "\n"
226 | "you received a private message from %(sender)s with\n"
227 | "the following contents:"
228 | msgstr ""
229 | "%(recipient)s,\n"
230 | "\n"
231 | "Gavote asmeninę žinutę nuo %(sender)s su\n"
232 | "šiuo turiniu:"
233 |
234 | #: templates/messages/new_message.html:9
235 | #, python-format
236 | msgid "Sent from %(site_url)s"
237 | msgstr "Siųsta iš %(site_url)s"
238 |
239 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
240 | msgid "Reply"
241 | msgstr "Atsakyti"
242 |
243 | #: templates/messages/outbox.html:7
244 | msgid "Sent"
245 | msgstr "Išsiųsta"
246 |
247 | #: templates/messages/trash.html:4
248 | msgid "Deleted Messages"
249 | msgstr "Ištrintos žinutės"
250 |
251 | #: templates/messages/trash.html:7 templates/messages/view.html:10
252 | msgid "Date"
253 | msgstr "Data"
254 |
255 | #: templates/messages/trash.html:17
256 | msgid "undelete"
257 | msgstr "atstatyti"
258 |
259 | #: templates/messages/trash.html:23
260 | msgid ""
261 | "Deleted Messages are removed from the trash at unregular intervals, don't "
262 | "rely on this feature for long-time storage."
263 | msgstr ""
264 | "Ištrintos žinutės pašalinamos periodiškai, nelaikykite ilgalaikių žinučių "
265 | "šiukšliadėžėje."
266 |
267 | #: templates/messages/view.html:4
268 | msgid "View Message"
269 | msgstr "Peržiūrėti žinutę"
270 |
271 | #: templates/messages/view.html:20
272 | msgid "Delete"
273 | msgstr "Ištrinti"
274 |
275 | #: templates/notification/messages_deleted/notice.html:1
276 | #, python-format
277 | msgid ""
278 | "You have deleted the message %(message)s."
279 | msgstr ""
280 | "Ištrynėte žinutę %(message)s."
281 |
282 | #: templates/notification/messages_received/notice.html:2
283 | #, python-format
284 | msgid ""
285 | "You have received the message %(message)s "
286 | "from %(message_sender)s."
287 | msgstr ""
288 | "Gavote žinutę %(message)s nuo %"
289 | "(message_sender)s."
290 |
291 | #: templates/notification/messages_recovered/notice.html:1
292 | #, python-format
293 | msgid ""
294 | "You have recovered the message %(message)s."
295 | msgstr ""
296 | "Atstatėte žinutę %(message)s."
297 |
298 | #: templates/notification/messages_replied/notice.html:2
299 | #, python-format
300 | msgid ""
301 | "You have replied to %(message_parent_msg)s "
302 | "from %(message_recipient)s."
303 | msgstr ""
304 | "Jūs atsakėte į žinutę %(message_parent_msg)"
305 | "s nuo %(message_recipient)s."
306 |
307 | #: templates/notification/messages_reply_received/notice.html:2
308 | #, python-format
309 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
310 | msgstr ""
311 | "%(message_sender)s atsiuntė atsakymą į %(message_parent_msg)s."
312 |
313 | #: templates/notification/messages_sent/notice.html:2
314 | #, python-format
315 | msgid ""
316 | "You have sent the message %(message)s to %"
317 | "(message_recipient)s."
318 | msgstr ""
319 | "Išsiuntėte žinutę %(message)s %"
320 | "(message_recipient)s."
321 |
--------------------------------------------------------------------------------
/django_messages/locale/ro/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: PACKAGE VERSION\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
11 | "PO-Revision-Date: 2014-05-14 16:59+0200\n"
12 | "Last-Translator: Eduard Luca \n"
13 | "Language-Team: LANGUAGE \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "X-Generator: Poedit 1.5.4\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "Destinatar"
23 |
24 | #: admin.py:15
25 | msgid "group"
26 | msgstr "grup"
27 |
28 | #: admin.py:16
29 | msgid "Creates the message optionally for all users or a group of users."
30 | msgstr ""
31 | "Creaza mesajul optional pentru toti utilizatorii sau pentru un grup de "
32 | "utilizatori."
33 |
34 | #: admin.py:23
35 | msgid "All users"
36 | msgstr "Toti utilizatorii"
37 |
38 | #: admin.py:38 models.py:88
39 | msgid "Message"
40 | msgstr "Mesaj"
41 |
42 | #: admin.py:45
43 | msgid "Date/time"
44 | msgstr "Data/ora"
45 |
46 | #: fields.py:53
47 | #, python-format
48 | msgid "The following usernames are incorrect: %(users)s"
49 | msgstr "Urmatoarele nume de utilizatori nu sunt corecte: %(users)s"
50 |
51 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
52 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
53 | #: templates/messages/view.html:6
54 | msgid "Subject"
55 | msgstr "Subiect"
56 |
57 | #: forms.py:22 models.py:50
58 | msgid "Body"
59 | msgstr "Continut"
60 |
61 | #: management.py:9
62 | msgid "Message Received"
63 | msgstr "Mesaj Primit"
64 |
65 | #: management.py:9
66 | msgid "you have received a message"
67 | msgstr "ati primit un mesaj nou"
68 |
69 | #: management.py:10
70 | msgid "Message Sent"
71 | msgstr "Mesaj Trimis"
72 |
73 | #: management.py:10
74 | msgid "you have sent a message"
75 | msgstr "ati trimis un mesaj"
76 |
77 | #: management.py:11
78 | msgid "Message Replied"
79 | msgstr "Mesaj Raspuns"
80 |
81 | #: management.py:11
82 | msgid "you have replied to a message"
83 | msgstr "ati raspuns la un mesaj"
84 |
85 | #: management.py:12
86 | msgid "Reply Received"
87 | msgstr "Raspuns Primit"
88 |
89 | #: management.py:12
90 | msgid "you have received a reply to a message"
91 | msgstr "ati primit un raspuns la un mesaj"
92 |
93 | #: management.py:13
94 | msgid "Message Deleted"
95 | msgstr "Mesaj Sters"
96 |
97 | #: management.py:13
98 | msgid "you have deleted a message"
99 | msgstr "ati sters un mesaj"
100 |
101 | #: management.py:14
102 | msgid "Message Recovered"
103 | msgstr "Mesaj Recuperat"
104 |
105 | #: management.py:14
106 | msgid "you have undeleted a message"
107 | msgstr "ati recuperat un mesaj"
108 |
109 | #: models.py:51 templates/messages/inbox.html:7
110 | #: templates/messages/trash.html:7 templates/messages/view.html:8
111 | msgid "Sender"
112 | msgstr "Expeditor"
113 |
114 | #: models.py:53
115 | msgid "Parent message"
116 | msgstr "Mesaj parinte"
117 |
118 | #: models.py:54
119 | msgid "sent at"
120 | msgstr "trimis"
121 |
122 | #: models.py:55
123 | msgid "read at"
124 | msgstr "citit"
125 |
126 | #: models.py:56
127 | msgid "replied at"
128 | msgstr "raspuns in"
129 |
130 | #: models.py:57
131 | msgid "Sender deleted at"
132 | msgstr "Sters la expeditor"
133 |
134 | #: models.py:58
135 | msgid "Recipient deleted at"
136 | msgstr "Sters la destinatar"
137 |
138 | #: models.py:89
139 | msgid "Messages"
140 | msgstr "Mesaje"
141 |
142 | #: utils.py:27
143 | #, python-format
144 | msgid "New Message: %(subject)s"
145 | msgstr "Mesaj Nou: %(subject)s"
146 |
147 | #: views.py:78 views.py:112
148 | msgid "Message successfully sent."
149 | msgstr "Mesaj trimis cu succes."
150 |
151 | #: views.py:118
152 | #, python-format
153 | msgid ""
154 | "%(sender)s wrote:\n"
155 | "%(body)s"
156 | msgstr ""
157 | "%(sender)s a scris:\n"
158 | "%(body)s"
159 |
160 | #: views.py:122
161 | #, python-format
162 | msgid "Re: %(subject)s"
163 | msgstr "Re: %(subject)s"
164 |
165 | #: views.py:158
166 | msgid "Message successfully deleted."
167 | msgstr "Mesaj sters cu succes."
168 |
169 | #: views.py:185
170 | msgid "Message successfully recovered."
171 | msgstr "Mesaj recuperat cu succes."
172 |
173 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
174 | #: templates/messages/new_message.html:10
175 | msgid "Inbox"
176 | msgstr "Primite"
177 |
178 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
179 | msgid "Sent Messages"
180 | msgstr "Trimise"
181 |
182 | #: templates/messages/base.html:10
183 | msgid "New Message"
184 | msgstr "Mesaj Nou"
185 |
186 | #: templates/messages/base.html:11
187 | msgid "Trash"
188 | msgstr "Cos de Gunoi"
189 |
190 | #: templates/messages/compose.html:4
191 | msgid "Compose Message"
192 | msgstr "Scrie un Mesaj"
193 |
194 | #: templates/messages/compose.html:9
195 | msgid "Send"
196 | msgstr "Trimite"
197 |
198 | #: templates/messages/inbox.html:7
199 | msgid "Received"
200 | msgstr "Primit"
201 |
202 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
203 | #: templates/messages/trash.html:7
204 | msgid "Action"
205 | msgstr "Actiune"
206 |
207 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
208 | #: templates/messages/trash.html:16 templates/messages/view.html:11
209 | msgid "DATETIME_FORMAT"
210 | msgstr "j. N Y, H:i"
211 |
212 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
213 | msgid "delete"
214 | msgstr "sterge"
215 |
216 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
217 | #: templates/messages/trash.html:24
218 | msgid "No messages."
219 | msgstr "Nu sunt mesaje."
220 |
221 | #: templates/messages/new_message.html:1
222 | #, python-format
223 | msgid ""
224 | "Hello %(recipient)s,\n"
225 | "\n"
226 | "you received a private message from %(sender)s with\n"
227 | "the following contents:"
228 | msgstr ""
229 | "Buna %(recipient)s,\n"
230 | "\n"
231 | "ati primit un mesaj privat de la %(sender)s cu\n"
232 | "continutul:"
233 |
234 | #: templates/messages/new_message.html:9
235 | #, python-format
236 | msgid "Sent from %(site_url)s"
237 | msgstr "Trimis de %(site_url)s"
238 |
239 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
240 | msgid "Reply"
241 | msgstr "Raspunde"
242 |
243 | #: templates/messages/outbox.html:7
244 | msgid "Sent"
245 | msgstr "Trimis"
246 |
247 | #: templates/messages/trash.html:4
248 | msgid "Deleted Messages"
249 | msgstr "Mesaje Sterse"
250 |
251 | #: templates/messages/trash.html:7 templates/messages/view.html:10
252 | msgid "Date"
253 | msgstr "Data"
254 |
255 | #: templates/messages/trash.html:17
256 | msgid "undelete"
257 | msgstr "recupereaza"
258 |
259 | #: templates/messages/trash.html:23
260 | msgid ""
261 | "Deleted Messages are removed from the trash at unregular intervals, don't "
262 | "rely on this feature for long-time storage."
263 | msgstr ""
264 | "Mesajele sterse sunt inlaturate din sistem la intervale neregulate, nu va "
265 | "bazati pe stocarea acestor date."
266 |
267 | #: templates/messages/view.html:4
268 | msgid "View Message"
269 | msgstr "Vizualizati Mesaj"
270 |
271 | #: templates/messages/view.html:20
272 | msgid "Delete"
273 | msgstr "Stergere"
274 |
275 | #: templates/notification/messages_deleted/notice.html:1
276 | #, python-format
277 | msgid ""
278 | "You have deleted the message %(message)s."
279 | msgstr "Ati sters mesajul %(message)s."
280 |
281 | #: templates/notification/messages_received/notice.html:2
282 | #, python-format
283 | msgid ""
284 | "You have received the message %(message)s "
285 | "from %(message_sender)s."
286 | msgstr ""
287 | "Ati primit mesajul %(message)s von "
288 | "%(message_sender)s."
289 |
290 | #: templates/notification/messages_recovered/notice.html:1
291 | #, python-format
292 | msgid ""
293 | "You have recovered the message %(message)s."
294 | msgstr "Ati recuperat mesajul %(message)s."
295 |
296 | #: templates/notification/messages_replied/notice.html:2
297 | #, python-format
298 | msgid ""
299 | "You have replied to %(message_parent_msg)s "
300 | "from %(message_recipient)s."
301 | msgstr ""
302 | "Ati raspuns la mesajul %(message_parent_msg)s"
303 | "a> von %(message_recipient)s."
304 |
305 | #: templates/notification/messages_reply_received/notice.html:2
306 | #, python-format
307 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
308 | msgstr "%(message_sender)s a raspuns la mesajul %(message_parent_msg)s."
309 |
310 | #: templates/notification/messages_sent/notice.html:2
311 | #, python-format
312 | msgid ""
313 | "You have sent the message %(message)s to "
314 | "%(message_recipient)s."
315 | msgstr ""
316 | "Ati trimis mesajul %(message)s an "
317 | "%(message_recipient)s."
318 |
--------------------------------------------------------------------------------
/django_messages/locale/ar/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 | # This file is distributed under the same license as the PACKAGE package.
3 | #
4 | # Ossama M. Khayat , 2009.
5 | msgid ""
6 | msgstr ""
7 | "Project-Id-Version: \n"
8 | "Report-Msgid-Bugs-To: \n"
9 | "POT-Creation-Date: 2009-10-14 04:23+0300\n"
10 | "PO-Revision-Date: 2009-11-02 00:41+0300\n"
11 | "Last-Translator: Ossama M. Khayat \n"
12 | "Language-Team: Arabic \n"
13 | "MIME-Version: 1.0\n"
14 | "Content-Type: text/plain; charset=UTF-8\n"
15 | "Content-Transfer-Encoding: 8bit\n"
16 | "X-Generator: Lokalize 1.0\n"
17 | "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
18 | "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
19 |
20 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:8
21 | #: templates/messages/view.html:12
22 | msgid "Recipient"
23 | msgstr "المستلم"
24 |
25 | #: admin.py:15
26 | msgid "group"
27 | msgstr "مجموعة"
28 |
29 | #: admin.py:16
30 | msgid "Creates the message optionally for all users or a group of users."
31 | msgstr "ينشئ الرسالة اختياريا لجميع المستخدمين او لمجموعة من المستخدمين."
32 |
33 | #: admin.py:23
34 | msgid "All users"
35 | msgstr "جميع المستخدمين"
36 |
37 | #: admin.py:38 models.py:88
38 | msgid "Message"
39 | msgstr "الرسالة"
40 |
41 | #: admin.py:45
42 | msgid "Date/time"
43 | msgstr "التاريخ/الوقت"
44 |
45 | #: fields.py:53
46 | #, python-format
47 | msgid "The following usernames are incorrect: %(users)s"
48 | msgstr "أسماء المستخدمين التالي ذكرهم غير صحيحة: %(users)s"
49 |
50 | #: forms.py:21 models.py:49 templates/messages/inbox.html:8
51 | #: templates/messages/outbox.html:8 templates/messages/trash.html:8
52 | #: templates/messages/view.html:6
53 | msgid "Subject"
54 | msgstr "الموضوع"
55 |
56 | #: forms.py:22 models.py:50
57 | msgid "Body"
58 | msgstr "المحتوى"
59 |
60 | #: management.py:9
61 | msgid "Message Received"
62 | msgstr "تم استلام الرسالة"
63 |
64 | #: management.py:9
65 | msgid "you have received a message"
66 | msgstr "وصلتك رسالة"
67 |
68 | #: management.py:10
69 | msgid "Message Sent"
70 | msgstr "تم إرسال الرسالة"
71 |
72 | #: management.py:10
73 | msgid "you have sent a message"
74 | msgstr "قمت بإرسال رسالة"
75 |
76 | #: management.py:11
77 | msgid "Message Replied"
78 | msgstr "تم الرد على الرسالة"
79 |
80 | #: management.py:11
81 | msgid "you have replied to a message"
82 | msgstr "قمت بالرد على الرسالة"
83 |
84 | #: management.py:12
85 | msgid "Reply Received"
86 | msgstr "تم استلام الرد"
87 |
88 | #: management.py:12
89 | msgid "you have received a reply to a message"
90 | msgstr "استملت رداً على رسالة"
91 |
92 | #: management.py:13
93 | msgid "Message Deleted"
94 | msgstr "تم حذف الرسالة"
95 |
96 | #: management.py:13
97 | msgid "you have deleted a message"
98 | msgstr "قمت بحذف رسالة"
99 |
100 | #: management.py:14
101 | msgid "Message Recovered"
102 | msgstr "تم استرجاع الرسالة"
103 |
104 | #: management.py:14
105 | msgid "you have undeleted a message"
106 | msgstr "قمت باسترجاع رسالة"
107 |
108 | #: models.py:51 templates/messages/inbox.html:8
109 | #: templates/messages/trash.html:8 templates/messages/view.html:8
110 | msgid "Sender"
111 | msgstr "المرسل"
112 |
113 | #: models.py:53
114 | msgid "Parent message"
115 | msgstr "الرسالة الأساسية"
116 |
117 | #: models.py:54
118 | msgid "sent at"
119 | msgstr "أرسلت في"
120 |
121 | #: models.py:55
122 | msgid "read at"
123 | msgstr "قُرأت في"
124 |
125 | #: models.py:56
126 | msgid "replied at"
127 | msgstr "رُدّ عليها في"
128 |
129 | #: models.py:57
130 | msgid "Sender deleted at"
131 | msgstr "حذفها المُرسل في"
132 |
133 | #: models.py:58
134 | msgid "Recipient deleted at"
135 | msgstr "حذفها المستلم في"
136 |
137 | #: models.py:89
138 | msgid "Messages"
139 | msgstr "الرسائل"
140 |
141 | #: utils.py:27
142 | #, python-format
143 | msgid "New Message: %(subject)s"
144 | msgstr "رسالة جديدة: %(subject)s"
145 |
146 | #: views.py:78 views.py:112
147 | msgid "Message successfully sent."
148 | msgstr "تم إرسال الرسالة بنجاح."
149 |
150 | #: views.py:118
151 | #, python-format
152 | msgid ""
153 | "%(sender)s wrote:\n"
154 | "%(body)s"
155 | msgstr ""
156 | "كتب %(sender)s:\n"
157 | "%(body)s"
158 |
159 | #: views.py:122
160 | #, python-format
161 | msgid "Re: %(subject)s"
162 | msgstr "رد: %(subject)s"
163 |
164 | #: views.py:158
165 | msgid "Message successfully deleted."
166 | msgstr "تم حذف الرسالة بنجاح."
167 |
168 | #: views.py:185
169 | msgid "Message successfully recovered."
170 | msgstr "تم استرجاع الرسالة بنجاح."
171 |
172 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
173 | #: templates/messages/new_message.html:10
174 | msgid "Inbox"
175 | msgstr "الوارد"
176 |
177 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
178 | msgid "Sent Messages"
179 | msgstr "الرسائل المرسلة"
180 |
181 | #: templates/messages/base.html:10
182 | msgid "New Message"
183 | msgstr "رسالة جديدة"
184 |
185 | #: templates/messages/base.html:11
186 | msgid "Trash"
187 | msgstr "الحاوية"
188 |
189 | #: templates/messages/compose.html:4
190 | msgid "Compose Message"
191 | msgstr "أكتب رسالة"
192 |
193 | #: templates/messages/compose.html:9
194 | msgid "Send"
195 | msgstr "أرسل"
196 |
197 | #: templates/messages/inbox.html:8
198 | msgid "Received"
199 | msgstr "استُلمت"
200 |
201 | #: templates/messages/inbox.html:8 templates/messages/outbox.html:8
202 | #: templates/messages/trash.html:8
203 | msgid "Action"
204 | msgstr "إجراء"
205 |
206 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
207 | #: templates/messages/trash.html:17 templates/messages/view.html:11
208 | msgid "DATETIME_FORMAT"
209 | msgstr "DATETIME_FORMAT"
210 |
211 | #: templates/messages/inbox.html:21 templates/messages/outbox.html:18
212 | msgid "delete"
213 | msgstr "حذف"
214 |
215 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
216 | #: templates/messages/trash.html:24
217 | msgid "No messages."
218 | msgstr "لا توجد رسائل."
219 |
220 | #: templates/messages/new_message.html:1
221 | #, python-format
222 | msgid ""
223 | "Hello %(recipient)s,\n"
224 | "\n"
225 | "you received a private message from %(sender)s with\n"
226 | "the following contents:"
227 | msgstr ""
228 | "مرحباً %(recipient)s،\n"
229 | "\n"
230 | "وصلتك رسالة خاصة من %(sender)s\n"
231 | "تحتوي ما يلي:"
232 |
233 | #: templates/messages/new_message.html:9
234 | #, python-format
235 | msgid "Sent from %(site_url)s"
236 | msgstr "أرسلت من %(site_url)s"
237 |
238 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
239 | msgid "Reply"
240 | msgstr "رد"
241 |
242 | #: templates/messages/outbox.html:8
243 | msgid "Sent"
244 | msgstr "أرسل"
245 |
246 | #: templates/messages/trash.html:4
247 | msgid "Deleted Messages"
248 | msgstr "الرسائل المحذوفة"
249 |
250 | #: templates/messages/trash.html:8 templates/messages/view.html:10
251 | msgid "Date"
252 | msgstr "التاريخ"
253 |
254 | #: templates/messages/trash.html:18
255 | msgid "undelete"
256 | msgstr "استرجاع"
257 |
258 | #: templates/messages/trash.html:27
259 | msgid ""
260 | "Deleted Messages are removed from the trash at unregular intervals, don't "
261 | "rely on this feature for long-time storage."
262 | msgstr ""
263 | "تتم إزالة الرسائل المحذوفة من الحاوية على فترات زمنيّة متفاوتة، "
264 | "فلا تعتمد على هذه الميزة للتخزين الطويل المدى."
265 |
266 | #: templates/messages/view.html:4
267 | msgid "View Message"
268 | msgstr "مشاهدة الرسالة"
269 |
270 | #: templates/messages/view.html:20
271 | msgid "Delete"
272 | msgstr "حذف"
273 |
274 | #: templates/notification/messages_deleted/notice.html:1
275 | #, python-format
276 | msgid ""
277 | "You have deleted the message %(message)s."
278 | msgstr "قمت بحذف الرسالة %(message)s."
279 |
280 | #: templates/notification/messages_received/notice.html:2
281 | #, python-format
282 | msgid ""
283 | "You have received the message %(message)s "
284 | "from %(message_sender)s."
285 | msgstr ""
286 | "وصلتك الرسالة %(message)s "
287 | "من %(message_sender)s."
288 |
289 | #: templates/notification/messages_recovered/notice.html:1
290 | #, python-format
291 | msgid ""
292 | "You have recovered the message %(message)s."
293 | msgstr "قمت باسترجاع الرسالة %(message)s."
294 |
295 | #: templates/notification/messages_replied/notice.html:2
296 | #, python-format
297 | msgid ""
298 | "You have replied to %(message_parent_msg)s "
299 | "from %(message_recipient)s."
300 | msgstr ""
301 | "قمت بالرد الرسائل %(message_parent_msg)s "
302 | "من %(message_recipient)s."
303 |
304 | #: templates/notification/messages_reply_received/notice.html:2
305 | #, python-format
306 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
307 | msgstr "أرسل لك %(message_sender)s رداً على %(message_parent_msg)s."
308 |
309 | #: templates/notification/messages_sent/notice.html:2
310 | #, python-format
311 | msgid ""
312 | "You have sent the message %(message)s to %"
313 | "(message_recipient)s."
314 | msgstr ""
315 | "قمت بإرسالة الرسالة %(message)s إلى %"
316 | "(message_recipient)s."
317 |
318 |
--------------------------------------------------------------------------------
/django_messages/locale/ru/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # Michail Sychev m.sychev@axion-rti.ru, 2009
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: FULL NAME \n"
14 | "Language-Team: LANGUAGE \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "Получатель"
23 |
24 | #: admin.py:15
25 | msgid "group"
26 | msgstr "Группа"
27 |
28 | #: admin.py:16
29 | msgid "Creates the message optionally for all users or a group of users."
30 | msgstr "Создать сообщения опционально для всех пользователей или группы"
31 |
32 | #: admin.py:23
33 | msgid "All users"
34 | msgstr "Все пользователи"
35 |
36 | #: admin.py:38 models.py:88
37 | msgid "Message"
38 | msgstr "Сообщение"
39 |
40 | #: admin.py:45
41 | msgid "Date/time"
42 | msgstr "Дата/Время"
43 |
44 | #: fields.py:53
45 | #, python-format
46 | msgid "The following usernames are incorrect: %(users)s"
47 | msgstr "Некорректные имена пользователей: %(users)s"
48 |
49 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
50 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
51 | #: templates/messages/view.html:6
52 | msgid "Subject"
53 | msgstr "Тема"
54 |
55 | #: forms.py:22 models.py:50
56 | msgid "Body"
57 | msgstr "Сообщение"
58 |
59 | #: management.py:9
60 | msgid "Message Received"
61 | msgstr "Сообщение получено"
62 |
63 | #: management.py:9
64 | msgid "you have received a message"
65 | msgstr "вы получили сообщение"
66 |
67 | #: management.py:10
68 | msgid "Message Sent"
69 | msgstr "Сообщение отправлено"
70 |
71 | #: management.py:10
72 | msgid "you have sent a message"
73 | msgstr "Вы отправили сообщение"
74 |
75 | #: management.py:11
76 | msgid "Message Replied"
77 | msgstr "Сообщение отвечено"
78 |
79 | #: management.py:11
80 | msgid "you have replied to a message"
81 | msgstr "вы ответили на сообщение"
82 |
83 | #: management.py:12
84 | msgid "Reply Received"
85 | msgstr "Ответ получен"
86 |
87 | #: management.py:12
88 | msgid "you have received a reply to a message"
89 | msgstr "вы получили ответ на сообщение"
90 |
91 | #: management.py:13
92 | msgid "Message Deleted"
93 | msgstr "Сообщение удалено"
94 |
95 | #: management.py:13
96 | msgid "you have deleted a message"
97 | msgstr "вы удалили сообщение"
98 |
99 | #: management.py:14
100 | msgid "Message Recovered"
101 | msgstr "Сообщение восстановлено"
102 |
103 | #: management.py:14
104 | msgid "you have undeleted a message"
105 | msgstr "вы восстановили сообщение"
106 |
107 | #: models.py:51 templates/messages/inbox.html:7
108 | #: templates/messages/trash.html:7 templates/messages/view.html:8
109 | msgid "Sender"
110 | msgstr "Отправитель"
111 |
112 | #: models.py:53
113 | msgid "Parent message"
114 | msgstr "Родительское сообщение"
115 |
116 | #: models.py:54
117 | msgid "sent at"
118 | msgstr "отправлено"
119 |
120 | #: models.py:55
121 | msgid "read at"
122 | msgstr "прочитано"
123 |
124 | #: models.py:56
125 | msgid "replied at"
126 | msgstr "отвечено"
127 |
128 | #: models.py:57
129 | msgid "Sender deleted at"
130 | msgstr "Отправитель удалил"
131 |
132 | #: models.py:58
133 | msgid "Recipient deleted at"
134 | msgstr "Получатель удалил"
135 |
136 | #: models.py:89
137 | msgid "Messages"
138 | msgstr "Сообщения"
139 |
140 | #: utils.py:27
141 | #, python-format
142 | msgid "New Message: %(subject)s"
143 | msgstr "Новое сообщение: %(subject)s"
144 |
145 | #: views.py:78 views.py:112
146 | msgid "Message successfully sent."
147 | msgstr "Сообщение успешно отправлено."
148 |
149 | #: views.py:118
150 | #, python-format
151 | msgid ""
152 | "%(sender)s wrote:\n"
153 | "%(body)s"
154 | msgstr ""
155 | "%(sender)s написал:\n"
156 | "%(body)s"
157 |
158 | #: views.py:122
159 | #, python-format
160 | msgid "Re: %(subject)s"
161 | msgstr "Re: %(subject)s"
162 |
163 | #: views.py:158
164 | msgid "Message successfully deleted."
165 | msgstr "Сообщение успешно удалено."
166 |
167 | #: views.py:185
168 | msgid "Message successfully recovered."
169 | msgstr "Сообщение успешно восстановлено."
170 |
171 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
172 | #: templates/messages/new_message.html:10
173 | msgid "Inbox"
174 | msgstr "Входящие"
175 |
176 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
177 | msgid "Sent Messages"
178 | msgstr "Исходящие"
179 |
180 | #: templates/messages/base.html:10
181 | msgid "New Message"
182 | msgstr "Новое сообщение"
183 |
184 | #: templates/messages/base.html:11
185 | msgid "Trash"
186 | msgstr "Удалённые"
187 |
188 | #: templates/messages/compose.html:4
189 | msgid "Compose Message"
190 | msgstr "Новое сообщение"
191 |
192 | #: templates/messages/compose.html:9
193 | msgid "Send"
194 | msgstr "Отправить"
195 |
196 | #: templates/messages/inbox.html:7
197 | msgid "Received"
198 | msgstr "Получено"
199 |
200 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
201 | #: templates/messages/trash.html:7
202 | msgid "Action"
203 | msgstr "Действия"
204 |
205 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
206 | #: templates/messages/trash.html:16 templates/messages/view.html:11
207 | msgid "DATETIME_FORMAT"
208 | msgstr "j. N Y, H:i"
209 |
210 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
211 | msgid "delete"
212 | msgstr "удалить"
213 |
214 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
215 | #: templates/messages/trash.html:24
216 | msgid "No messages."
217 | msgstr "Сообщений нет."
218 |
219 | #: templates/messages/new_message.html:1
220 | #, python-format
221 | msgid ""
222 | "Hello %(recipient)s,\n"
223 | "\n"
224 | "you received a private message from %(sender)s with\n"
225 | "the following contents:"
226 | msgstr ""
227 | "Приветствуем, %(recipient)s!\n"
228 | "\n"
229 | "Вы получили сообщение от %(sender)s\n"
230 | "со следующим содержанием:"
231 |
232 | #: templates/messages/new_message.html:9
233 | #, python-format
234 | msgid "Sent from %(site_url)s"
235 | msgstr "Отправлено %(site_url)s"
236 |
237 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
238 | msgid "Reply"
239 | msgstr "Ответить"
240 |
241 | #: templates/messages/outbox.html:7
242 | msgid "Sent"
243 | msgstr "Отправлено"
244 |
245 | #: templates/messages/trash.html:4
246 | msgid "Deleted Messages"
247 | msgstr "Удалённые сообщения"
248 |
249 | #: templates/messages/trash.html:7 templates/messages/view.html:10
250 | msgid "Date"
251 | msgstr "Дата"
252 |
253 | #: templates/messages/trash.html:17
254 | msgid "undelete"
255 | msgstr "восстановить"
256 |
257 | #: templates/messages/trash.html:23
258 | msgid ""
259 | "Deleted Messages are removed from the trash at unregular intervals, don't "
260 | "rely on this feature for long-time storage."
261 | msgstr ""
262 | "Удалённые сообщения очищаются из корзины через произвольные интервалы,не "
263 | "используйте эту возможность как долгосрочное хранилище."
264 |
265 | #: templates/messages/view.html:4
266 | msgid "View Message"
267 | msgstr "Просмотр сообщений"
268 |
269 | #: templates/messages/view.html:20
270 | msgid "Delete"
271 | msgstr "Удалить"
272 |
273 | #: templates/notification/messages_deleted/notice.html:1
274 | #, python-format
275 | msgid ""
276 | "You have deleted the message %(message)s."
277 | msgstr "Вы удалили сообщение %(message)s."
278 |
279 | #: templates/notification/messages_received/notice.html:2
280 | #, python-format
281 | msgid ""
282 | "You have received the message %(message)s "
283 | "from %(message_sender)s."
284 | msgstr ""
285 | "Вы получили сообщение %(message)s от %"
286 | "(message_sender)s."
287 |
288 | #: templates/notification/messages_recovered/notice.html:1
289 | #, python-format
290 | msgid ""
291 | "You have recovered the message %(message)s."
292 | msgstr "Вы восстановили сообщение %(message)s."
293 |
294 | #: templates/notification/messages_replied/notice.html:2
295 | #, python-format
296 | msgid ""
297 | "You have replied to %(message_parent_msg)s "
298 | "from %(message_recipient)s."
299 | msgstr ""
300 | "Вы ответили на %(message_parent_msg)s от %"
301 | "(message_recipient)s."
302 |
303 | #: templates/notification/messages_reply_received/notice.html:2
304 | #, python-format
305 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
306 | msgstr "%(message_sender)s ответил на %(message_parent_msg)s."
307 |
308 | #: templates/notification/messages_sent/notice.html:2
309 | #, python-format
310 | msgid ""
311 | "You have sent the message %(message)s to %"
312 | "(message_recipient)s."
313 | msgstr ""
314 | "Вы отправили сообщение %(message)s "
315 | "получателям %(message_recipient)s."
316 |
--------------------------------------------------------------------------------
/django_messages/locale/nl/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: django-messages-0.4.1\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: krisje8 \n"
14 | "Language-Team: krisje8 %(message)s."
273 | msgstr ""
274 | "Je hebt het bericht %(message)s verwijderd."
275 |
276 | #: templates/notification/messages_received/notice.html:2
277 | #, python-format
278 | msgid ""
279 | "You have received the message %(message)s "
280 | "from %(message_sender)s."
281 | msgstr ""
282 | "Je hebt het bericht %(message)s ontvangen "
283 | "van %(message_sender)s."
284 |
285 | #: templates/notification/messages_recovered/notice.html:1
286 | #, python-format
287 | msgid ""
288 | "You have recovered the message %(message)s."
289 | msgstr ""
290 | "Je hebt het bericht %(message)s hersteld."
291 |
292 | #: templates/notification/messages_replied/notice.html:2
293 | #, python-format
294 | msgid ""
295 | "You have replied to %(message_parent_msg)s "
296 | "from %(message_recipient)s."
297 | msgstr ""
298 | "Je hebt op %(message_parent_msg)s van %"
299 | "(message_recipient)s geantwoord."
300 |
301 | #: templates/notification/messages_reply_received/notice.html:2
302 | #, python-format
303 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
304 | msgstr ""
305 | "%(message_sender)s heeft je een antwoord op %(message_parent_msg)s gestuurd."
306 |
307 | #: templates/notification/messages_sent/notice.html:2
308 | #, python-format
309 | msgid ""
310 | "You have sent the message %(message)s to %"
311 | "(message_recipient)s."
312 | msgstr ""
313 | "Je hebt het bericht %(message)s naar %"
314 | "(message_recipient)s gestuurd."
315 |
--------------------------------------------------------------------------------
/django_messages/locale/pt_BR/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # Diego Martins , 2009.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: PACKAGE VERSION\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2010-02-01 10:24+0100\n"
11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 |
18 | #: admin.py:19 forms.py:20 models.py:52 templates/messages/outbox.html:8
19 | #: templates/messages/view.html:12
20 | msgid "Recipient"
21 | msgstr "Usuário"
22 |
23 | #: admin.py:21
24 | msgid "group"
25 | msgstr "grupo"
26 |
27 | #: admin.py:22
28 | msgid "Creates the message optionally for all users or a group of users."
29 | msgstr "Cria a mensagem para todos os usuários ou para um grupo de usuários."
30 |
31 | #: admin.py:29
32 | msgid "All users"
33 | msgstr "Todos os usuários"
34 |
35 | #: admin.py:44 models.py:88
36 | msgid "Message"
37 | msgstr "Mensagem"
38 |
39 | #: admin.py:51
40 | msgid "Date/time"
41 | msgstr "Data/Hora"
42 |
43 | #: fields.py:53
44 | #, python-format
45 | msgid "The following usernames are incorrect: %(users)s"
46 | msgstr "Os seguintes nome de usuário estão incorretos: %(users)s"
47 |
48 | #: forms.py:21 models.py:49 templates/messages/inbox.html:8
49 | #: templates/messages/outbox.html:8 templates/messages/trash.html:8
50 | #: templates/messages/view.html:6
51 | msgid "Subject"
52 | msgstr "Assunto"
53 |
54 | #: forms.py:22 models.py:50
55 | msgid "Body"
56 | msgstr "Mensagem"
57 |
58 | #: management.py:9
59 | msgid "Message Received"
60 | msgstr "Mensagem Recebida"
61 |
62 | #: management.py:9
63 | msgid "you have received a message"
64 | msgstr "Você recebeu uma mensagem"
65 |
66 | #: management.py:10
67 | msgid "Message Sent"
68 | msgstr "Mensagem Enviada"
69 |
70 | #: management.py:10
71 | msgid "you have sent a message"
72 | msgstr "Você enviou uma mensagem"
73 |
74 | #: management.py:11
75 | msgid "Message Replied"
76 | msgstr "Mensagem Respondida"
77 |
78 | #: management.py:11
79 | msgid "you have replied to a message"
80 | msgstr "Você respondeu uma mensagem"
81 |
82 | #: management.py:12
83 | msgid "Reply Received"
84 | msgstr "Resposta Recebida"
85 |
86 | #: management.py:12
87 | msgid "you have received a reply to a message"
88 | msgstr "Você recebeu uma resposta de uma mensagem"
89 |
90 | #: management.py:13
91 | msgid "Message Deleted"
92 | msgstr "Mensagem excluída"
93 |
94 | #: management.py:13
95 | msgid "you have deleted a message"
96 | msgstr "Você excluiu uma mensagem"
97 |
98 | #: management.py:14
99 | msgid "Message Recovered"
100 | msgstr "Mensagem Recuperada"
101 |
102 | #: management.py:14
103 | msgid "you have undeleted a message"
104 | msgstr "Você recuperou uma mensagem"
105 |
106 | #: models.py:51 templates/messages/inbox.html:8
107 | #: templates/messages/trash.html:8 templates/messages/view.html:8
108 | msgid "Sender"
109 | msgstr "Remetente"
110 |
111 | #: models.py:53
112 | msgid "Parent message"
113 | msgstr "Mensagem pai"
114 |
115 | #: models.py:54
116 | msgid "sent at"
117 | msgstr "enviado à"
118 |
119 | #: models.py:55
120 | msgid "read at"
121 | msgstr "lido à"
122 |
123 | #: models.py:56
124 | msgid "replied at"
125 | msgstr "respondido à"
126 |
127 | #: models.py:57
128 | msgid "Sender deleted at"
129 | msgstr "Remetente excluiu à"
130 |
131 | #: models.py:58
132 | msgid "Recipient deleted at"
133 | msgstr "Destinatário excluiu à"
134 |
135 | #: models.py:89
136 | msgid "Messages"
137 | msgstr "Mensagens"
138 |
139 | #: utils.py:27
140 | #, python-format
141 | msgid "New Message: %(subject)s"
142 | msgstr "Nova Mensagem: %(subject)s"
143 |
144 | #: views.py:78 views.py:112
145 | msgid "Message successfully sent."
146 | msgstr "Mensagem enviada com sucesso."
147 |
148 | #: views.py:118
149 | #, python-format
150 | msgid ""
151 | "%(sender)s wrote:\n"
152 | "%(body)s"
153 | msgstr ""
154 | "%(sender)s escreveu:\n"
155 | "%(body)s"
156 |
157 | #: views.py:122
158 | #, python-format
159 | msgid "Re: %(subject)s"
160 | msgstr "Re: %(subject)s"
161 |
162 | #: views.py:158
163 | msgid "Message successfully deleted."
164 | msgstr "Mensagem excluida com sucesso."
165 |
166 | #: views.py:185
167 | msgid "Message successfully recovered."
168 | msgstr "Mensagem recuperada com sucesso."
169 |
170 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
171 | #: templates/messages/new_message.html:10
172 | msgid "Inbox"
173 | msgstr "Caixa de Entrada"
174 |
175 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
176 | msgid "Sent Messages"
177 | msgstr "Mensagens Enviadas"
178 |
179 | #: templates/messages/base.html:10
180 | msgid "New Message"
181 | msgstr "Nova Mensagem"
182 |
183 | #: templates/messages/base.html:11
184 | msgid "Trash"
185 | msgstr "Lixeira"
186 |
187 | #: templates/messages/compose.html:4
188 | msgid "Compose Message"
189 | msgstr "Escrever Mensagem"
190 |
191 | #: templates/messages/compose.html:9
192 | msgid "Send"
193 | msgstr "Enviar"
194 |
195 | #: templates/messages/inbox.html:8
196 | msgid "Received"
197 | msgstr "Recebida"
198 |
199 | #: templates/messages/inbox.html:8 templates/messages/outbox.html:8
200 | #: templates/messages/trash.html:8
201 | msgid "Action"
202 | msgstr "Ação"
203 |
204 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
205 | #: templates/messages/trash.html:17 templates/messages/view.html:11
206 | msgid "DATETIME_FORMAT"
207 | msgstr "DATETIME_FORMAT"
208 |
209 | #: templates/messages/inbox.html:21 templates/messages/outbox.html:18
210 | msgid "delete"
211 | msgstr "excluir"
212 |
213 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
214 | #: templates/messages/trash.html:24
215 | msgid "No messages."
216 | msgstr ""
217 |
218 | #: templates/messages/new_message.html:1
219 | #, python-format
220 | msgid ""
221 | "Hello %(recipient)s,\n"
222 | "\n"
223 | "you received a private message from %(sender)s with\n"
224 | "the following contents:"
225 | msgstr ""
226 | "Ola %(recipient)s,\n"
227 | "\n"
228 | "Você recebeu uma mensagem privada de %(sender)s com\n"
229 | "o seguinte conteúdo:"
230 |
231 | #: templates/messages/new_message.html:9
232 | #, python-format
233 | msgid "Sent from %(site_url)s"
234 | msgstr "Enviado de %(site_url)s"
235 |
236 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
237 | msgid "Reply"
238 | msgstr "Responder"
239 |
240 | #: templates/messages/outbox.html:8
241 | msgid "Sent"
242 | msgstr "Enviada"
243 |
244 | #: templates/messages/trash.html:4
245 | msgid "Deleted Messages"
246 | msgstr "Mensagens Excluidas"
247 |
248 | #: templates/messages/trash.html:8 templates/messages/view.html:10
249 | msgid "Date"
250 | msgstr "Data"
251 |
252 | #: templates/messages/trash.html:18
253 | msgid "undelete"
254 | msgstr "recuperar"
255 |
256 | #: templates/messages/trash.html:27
257 | msgid ""
258 | "Deleted Messages are removed from the trash at unregular intervals, don't "
259 | "rely on this feature for long-time storage."
260 | msgstr ""
261 | "Mensagens excluidas são removidas da lixeira em intervalos de tempo não "
262 | "regulares,não use a lixeira para armazenar mensagens por muito tempo."
263 |
264 | #: templates/messages/view.html:4
265 | msgid "View Message"
266 | msgstr "Ver Mensagem"
267 |
268 | #: templates/messages/view.html:20
269 | msgid "Delete"
270 | msgstr "Excluir"
271 |
272 | #: templates/notification/messages_deleted/notice.html:1
273 | #, python-format
274 | msgid ""
275 | "You have deleted the message %(message)s."
276 | msgstr "Você excluiu a mensagem %(message)s."
277 |
278 | #: templates/notification/messages_received/notice.html:2
279 | #, python-format
280 | msgid ""
281 | "You have received the message %(message)s "
282 | "from %(message_sender)s."
283 | msgstr ""
284 | "Você recebeu a mensagem %(message)s de %"
285 | "(message_sender)s."
286 |
287 | #: templates/notification/messages_recovered/notice.html:1
288 | #, python-format
289 | msgid ""
290 | "You have recovered the message %(message)s."
291 | msgstr "Você recuperou a mensagem %(message)s."
292 |
293 | #: templates/notification/messages_replied/notice.html:2
294 | #, python-format
295 | msgid ""
296 | "You have replied to %(message_parent_msg)s "
297 | "from %(message_recipient)s."
298 | msgstr ""
299 | "Você respondeu a mensagem %(message_parent_msg)"
300 | "s de %(message_recipient)s."
301 |
302 | #: templates/notification/messages_reply_received/notice.html:2
303 | #, python-format
304 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
305 | msgstr "%(message_sender)s lhe enviou uma resposta a %(message_parent_msg)s."
306 |
307 | #: templates/notification/messages_sent/notice.html:2
308 | #, python-format
309 | msgid ""
310 | "You have sent the message %(message)s to %"
311 | "(message_recipient)s."
312 | msgstr ""
313 | "Você enviou a mensagem %(message)s para %"
314 | "(message_recipient)s."
315 |
--------------------------------------------------------------------------------
/django_messages/locale/de/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # FIRST AUTHOR , YEAR.
5 | #
6 | #, fuzzy
7 | msgid ""
8 | msgstr ""
9 | "Project-Id-Version: PACKAGE VERSION\n"
10 | "Report-Msgid-Bugs-To: \n"
11 | "POT-Creation-Date: 2009-09-11 12:31-0700\n"
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 | "Last-Translator: FULL NAME \n"
14 | "Language-Team: LANGUAGE \n"
15 | "MIME-Version: 1.0\n"
16 | "Content-Type: text/plain; charset=UTF-8\n"
17 | "Content-Transfer-Encoding: 8bit\n"
18 |
19 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
20 | #: templates/messages/view.html:12
21 | msgid "Recipient"
22 | msgstr "Empfänger"
23 |
24 | #: admin.py:15
25 | msgid "group"
26 | msgstr "Gruppe"
27 |
28 | #: admin.py:16
29 | msgid "Creates the message optionally for all users or a group of users."
30 | msgstr ""
31 | "Fügt die Nachricht wahlweise für jeden Benutzer der ausgewählten Gruppe "
32 | "hinzu."
33 |
34 | #: admin.py:23
35 | msgid "All users"
36 | msgstr "Alle Benutzer"
37 |
38 | #: admin.py:38 models.py:88
39 | msgid "Message"
40 | msgstr "Nachricht"
41 |
42 | #: admin.py:45
43 | msgid "Date/time"
44 | msgstr "Datum/Zeit"
45 |
46 | #: fields.py:53
47 | #, python-format
48 | msgid "The following usernames are incorrect: %(users)s"
49 | msgstr "Die folgenden Benutzernamen sind nicht korrekt: %(users)s"
50 |
51 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
52 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
53 | #: templates/messages/view.html:6
54 | msgid "Subject"
55 | msgstr "Betreff"
56 |
57 | #: forms.py:22 models.py:50
58 | msgid "Body"
59 | msgstr "Inhalt"
60 |
61 | #: management.py:9
62 | msgid "Message Received"
63 | msgstr "Nachricht erhalten"
64 |
65 | #: management.py:9
66 | msgid "you have received a message"
67 | msgstr "Du hast eine Nachricht erhalten"
68 |
69 | #: management.py:10
70 | msgid "Message Sent"
71 | msgstr "Nachricht gesendet"
72 |
73 | #: management.py:10
74 | msgid "you have sent a message"
75 | msgstr "Du hast eine Nachricht gesendet"
76 |
77 | #: management.py:11
78 | msgid "Message Replied"
79 | msgstr "Nachricht beantwortet"
80 |
81 | #: management.py:11
82 | msgid "you have replied to a message"
83 | msgstr "Du hast eine Nachricht beantwortet"
84 |
85 | #: management.py:12
86 | msgid "Reply Received"
87 | msgstr "Antwort erhalten"
88 |
89 | #: management.py:12
90 | msgid "you have received a reply to a message"
91 | msgstr "Du hast eine Antwort auf eine Nachricht erhalten"
92 |
93 | #: management.py:13
94 | msgid "Message Deleted"
95 | msgstr "Nachricht gelöscht"
96 |
97 | #: management.py:13
98 | msgid "you have deleted a message"
99 | msgstr "Du hast eine Nachricht gelöscht"
100 |
101 | #: management.py:14
102 | msgid "Message Recovered"
103 | msgstr "Nachricht wiederhergestellt"
104 |
105 | #: management.py:14
106 | msgid "you have undeleted a message"
107 | msgstr "Du hast eine Nachricht wiederhergestellt"
108 |
109 | #: models.py:51 templates/messages/inbox.html:7
110 | #: templates/messages/trash.html:7 templates/messages/view.html:8
111 | msgid "Sender"
112 | msgstr "Absender"
113 |
114 | #: models.py:53
115 | msgid "Parent message"
116 | msgstr "Übergeordnete Nachricht"
117 |
118 | #: models.py:54
119 | msgid "sent at"
120 | msgstr "gesendet am"
121 |
122 | #: models.py:55
123 | msgid "read at"
124 | msgstr "gelesen am"
125 |
126 | #: models.py:56
127 | msgid "replied at"
128 | msgstr "beantwortet am"
129 |
130 | #: models.py:57
131 | msgid "Sender deleted at"
132 | msgstr "Vom Absender gelöscht"
133 |
134 | #: models.py:58
135 | msgid "Recipient deleted at"
136 | msgstr "Vom Empfänger gelöscht"
137 |
138 | #: models.py:89
139 | msgid "Messages"
140 | msgstr "Nachrichten"
141 |
142 | #: utils.py:27
143 | #, python-format
144 | msgid "New Message: %(subject)s"
145 | msgstr "Neue Nachricht: %(subject)s"
146 |
147 | #: views.py:78 views.py:112
148 | msgid "Message successfully sent."
149 | msgstr "Nachricht erfolgreich gesendet."
150 |
151 | #: views.py:118
152 | #, python-format
153 | msgid ""
154 | "%(sender)s wrote:\n"
155 | "%(body)s"
156 | msgstr ""
157 | "%(sender)s schrieb:\n"
158 | "%(body)s"
159 |
160 | #: views.py:122
161 | #, python-format
162 | msgid "Re: %(subject)s"
163 | msgstr "Re: %(subject)s"
164 |
165 | #: views.py:158
166 | msgid "Message successfully deleted."
167 | msgstr "Nachricht erfolgreich gelöscht."
168 |
169 | #: views.py:185
170 | msgid "Message successfully recovered."
171 | msgstr "Nachricht erfolgreich wiederhergestellt."
172 |
173 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
174 | #: templates/messages/new_message.html:10
175 | msgid "Inbox"
176 | msgstr "Posteingang"
177 |
178 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
179 | msgid "Sent Messages"
180 | msgstr "Gesendete Nachrichten"
181 |
182 | #: templates/messages/base.html:10
183 | msgid "New Message"
184 | msgstr "Neue Nachricht"
185 |
186 | #: templates/messages/base.html:11
187 | msgid "Trash"
188 | msgstr "Papierkorb"
189 |
190 | #: templates/messages/compose.html:4
191 | msgid "Compose Message"
192 | msgstr "Nachricht verfassen"
193 |
194 | #: templates/messages/compose.html:9
195 | msgid "Send"
196 | msgstr "Senden"
197 |
198 | #: templates/messages/inbox.html:7
199 | msgid "Received"
200 | msgstr "Erhalten"
201 |
202 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
203 | #: templates/messages/trash.html:7
204 | msgid "Action"
205 | msgstr "Aktion"
206 |
207 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
208 | #: templates/messages/trash.html:16 templates/messages/view.html:11
209 | msgid "DATETIME_FORMAT"
210 | msgstr "j. N Y, H:i"
211 |
212 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
213 | msgid "delete"
214 | msgstr "löschen"
215 |
216 | #: templates/messages/inbox.html:27 templates/messages/outbox.html:24
217 | #: templates/messages/trash.html:24
218 | msgid "No messages."
219 | msgstr "Keine Nachrichten."
220 |
221 | #: templates/messages/new_message.html:1
222 | #, python-format
223 | msgid ""
224 | "Hello %(recipient)s,\n"
225 | "\n"
226 | "you received a private message from %(sender)s with\n"
227 | "the following contents:"
228 | msgstr ""
229 | "Hallo %(recipient)s,\n"
230 | "\n"
231 | "du hast eine private Nachricht von %(sender)s mit\n"
232 | "dem folgenden Inhalt erhalten:"
233 |
234 | #: templates/messages/new_message.html:9
235 | #, python-format
236 | msgid "Sent from %(site_url)s"
237 | msgstr "Gesendet von %(site_url)s"
238 |
239 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
240 | msgid "Reply"
241 | msgstr "Antworten"
242 |
243 | #: templates/messages/outbox.html:7
244 | msgid "Sent"
245 | msgstr "Gesendet"
246 |
247 | #: templates/messages/trash.html:4
248 | msgid "Deleted Messages"
249 | msgstr "Gelöschte Nachrichten"
250 |
251 | #: templates/messages/trash.html:7 templates/messages/view.html:10
252 | msgid "Date"
253 | msgstr "Datum"
254 |
255 | #: templates/messages/trash.html:17
256 | msgid "undelete"
257 | msgstr "wiederherstellen"
258 |
259 | #: templates/messages/trash.html:23
260 | msgid ""
261 | "Deleted Messages are removed from the trash at unregular intervals, don't "
262 | "rely on this feature for long-time storage."
263 | msgstr ""
264 | "Gelöschte Nachrichten werden in unregelmäßigen Intervallen entfernt, verlass "
265 | "dich nicht drauf, dass diese Nachrichten hier lange gespeichert werden."
266 |
267 | #: templates/messages/view.html:4
268 | msgid "View Message"
269 | msgstr "Nachrichtendetails"
270 |
271 | #: templates/messages/view.html:20
272 | msgid "Delete"
273 | msgstr "Löschen"
274 |
275 | #: templates/notification/messages_deleted/notice.html:1
276 | #, python-format
277 | msgid ""
278 | "You have deleted the message %(message)s."
279 | msgstr ""
280 | "Du hast die Nachricht %(message)s gelöscht."
281 |
282 | #: templates/notification/messages_received/notice.html:2
283 | #, python-format
284 | msgid ""
285 | "You have received the message %(message)s "
286 | "from %(message_sender)s."
287 | msgstr ""
288 | "Du hast die Nachricht %(message)s von %"
289 | "(message_sender)s erhalten."
290 |
291 | #: templates/notification/messages_recovered/notice.html:1
292 | #, python-format
293 | msgid ""
294 | "You have recovered the message %(message)s."
295 | msgstr ""
296 | "Du hast die Nachricht %(message)s "
297 | "wiederhergestellt."
298 |
299 | #: templates/notification/messages_replied/notice.html:2
300 | #, python-format
301 | msgid ""
302 | "You have replied to %(message_parent_msg)s "
303 | "from %(message_recipient)s."
304 | msgstr ""
305 | "Du hast auf die Nachricht %(message_parent_msg)"
306 | "s von %(message_recipient)s geantwortet."
307 |
308 | #: templates/notification/messages_reply_received/notice.html:2
309 | #, python-format
310 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
311 | msgstr ""
312 | "%(message_sender)s hat dir eine Antwort auf %(message_parent_msg)s gesendet."
313 |
314 | #: templates/notification/messages_sent/notice.html:2
315 | #, python-format
316 | msgid ""
317 | "You have sent the message %(message)s to %"
318 | "(message_recipient)s."
319 | msgstr ""
320 | "Du hast die Nachricht %(message)s an %"
321 | "(message_recipient)s gesendet."
322 |
--------------------------------------------------------------------------------
/django_messages/views.py:
--------------------------------------------------------------------------------
1 | from django.http import Http404, HttpResponseRedirect
2 | from django.shortcuts import render, get_object_or_404
3 | from django.template import RequestContext
4 | from django.contrib import messages
5 | from django.contrib.auth.decorators import login_required
6 | from django.utils.translation import ugettext as _
7 | from django.utils import timezone
8 | try:
9 | from django.core.urlresolvers import reverse
10 | except ImportError:
11 | from django.urls import reverse
12 | from django.conf import settings
13 |
14 | from django_messages.models import Message
15 | from django_messages.forms import ComposeForm
16 | from django_messages.utils import format_quote, get_user_model, get_username_field
17 |
18 | User = get_user_model()
19 |
20 | if "pinax.notifications" in settings.INSTALLED_APPS and getattr(settings, 'DJANGO_MESSAGES_NOTIFY', True):
21 | from pinax.notifications import models as notification
22 | else:
23 | notification = None
24 |
25 | @login_required
26 | def inbox(request, template_name='django_messages/inbox.html'):
27 | """
28 | Displays a list of received messages for the current user.
29 | Optional Arguments:
30 | ``template_name``: name of the template to use.
31 | """
32 | message_list = Message.objects.inbox_for(request.user)
33 | return render(request, template_name, {
34 | 'message_list': message_list,
35 | })
36 |
37 | @login_required
38 | def outbox(request, template_name='django_messages/outbox.html'):
39 | """
40 | Displays a list of sent messages by the current user.
41 | Optional arguments:
42 | ``template_name``: name of the template to use.
43 | """
44 | message_list = Message.objects.outbox_for(request.user)
45 | return render(request, template_name, {
46 | 'message_list': message_list,
47 | })
48 |
49 | @login_required
50 | def trash(request, template_name='django_messages/trash.html'):
51 | """
52 | Displays a list of deleted messages.
53 | Optional arguments:
54 | ``template_name``: name of the template to use
55 | Hint: A Cron-Job could periodicly clean up old messages, which are deleted
56 | by sender and recipient.
57 | """
58 | message_list = Message.objects.trash_for(request.user)
59 | return render(request, template_name, {
60 | 'message_list': message_list,
61 | })
62 |
63 | @login_required
64 | def compose(request, recipient=None, form_class=ComposeForm,
65 | template_name='django_messages/compose.html', success_url=None,
66 | recipient_filter=None):
67 | """
68 | Displays and handles the ``form_class`` form to compose new messages.
69 | Required Arguments: None
70 | Optional Arguments:
71 | ``recipient``: username of a `django.contrib.auth` User, who should
72 | receive the message, optionally multiple usernames
73 | could be separated by a '+'
74 | ``form_class``: the form-class to use
75 | ``template_name``: the template to use
76 | ``success_url``: where to redirect after successfull submission
77 | ``recipient_filter``: a function which receives a user object and
78 | returns a boolean wether it is an allowed
79 | recipient or not
80 |
81 | Passing GET parameter ``subject`` to the view allows pre-filling the
82 | subject field of the form.
83 | """
84 | if request.method == "POST":
85 | sender = request.user
86 | form = form_class(request.POST, recipient_filter=recipient_filter)
87 | if form.is_valid():
88 | form.save(sender=request.user)
89 | messages.info(request, _(u"Message successfully sent."))
90 | if success_url is None:
91 | success_url = reverse('messages_inbox')
92 | if 'next' in request.GET:
93 | success_url = request.GET['next']
94 | return HttpResponseRedirect(success_url)
95 | else:
96 | form = form_class(initial={"subject": request.GET.get("subject", "")})
97 | if recipient is not None:
98 | recipients = [u for u in User.objects.filter(**{'%s__in' % get_username_field(): [r.strip() for r in recipient.split('+')]})]
99 | form.fields['recipient'].initial = recipients
100 | return render(request, template_name, {
101 | 'form': form,
102 | })
103 |
104 | @login_required
105 | def reply(request, message_id, form_class=ComposeForm,
106 | template_name='django_messages/compose.html', success_url=None,
107 | recipient_filter=None, quote_helper=format_quote,
108 | subject_template=_(u"Re: %(subject)s"),):
109 | """
110 | Prepares the ``form_class`` form for writing a reply to a given message
111 | (specified via ``message_id``). Uses the ``format_quote`` helper from
112 | ``messages.utils`` to pre-format the quote. To change the quote format
113 | assign a different ``quote_helper`` kwarg in your url-conf.
114 |
115 | """
116 | parent = get_object_or_404(Message, id=message_id)
117 |
118 | if parent.sender != request.user and parent.recipient != request.user:
119 | raise Http404
120 |
121 | if request.method == "POST":
122 | sender = request.user
123 | form = form_class(request.POST, recipient_filter=recipient_filter)
124 | if form.is_valid():
125 | form.save(sender=request.user, parent_msg=parent)
126 | messages.info(request, _(u"Message successfully sent."))
127 | if success_url is None:
128 | success_url = reverse('messages_inbox')
129 | return HttpResponseRedirect(success_url)
130 | else:
131 | form = form_class(initial={
132 | 'body': quote_helper(parent.sender, parent.body),
133 | 'subject': subject_template % {'subject': parent.subject},
134 | 'recipient': [parent.sender,]
135 | })
136 | return render(request, template_name, {
137 | 'form': form,
138 | })
139 |
140 | @login_required
141 | def delete(request, message_id, success_url=None):
142 | """
143 | Marks a message as deleted by sender or recipient. The message is not
144 | really removed from the database, because two users must delete a message
145 | before it's save to remove it completely.
146 | A cron-job should prune the database and remove old messages which are
147 | deleted by both users.
148 | As a side effect, this makes it easy to implement a trash with undelete.
149 |
150 | You can pass ?next=/foo/bar/ via the url to redirect the user to a different
151 | page (e.g. `/foo/bar/`) than ``success_url`` after deletion of the message.
152 | """
153 | user = request.user
154 | now = timezone.now()
155 | message = get_object_or_404(Message, id=message_id)
156 | deleted = False
157 | if success_url is None:
158 | success_url = reverse('messages_inbox')
159 | if 'next' in request.GET:
160 | success_url = request.GET['next']
161 | if message.sender == user:
162 | message.sender_deleted_at = now
163 | deleted = True
164 | if message.recipient == user:
165 | message.recipient_deleted_at = now
166 | deleted = True
167 | if deleted:
168 | message.save()
169 | messages.info(request, _(u"Message successfully deleted."))
170 | if notification:
171 | notification.send([user], "messages_deleted", {'message': message,})
172 | return HttpResponseRedirect(success_url)
173 | raise Http404
174 |
175 | @login_required
176 | def undelete(request, message_id, success_url=None):
177 | """
178 | Recovers a message from trash. This is achieved by removing the
179 | ``(sender|recipient)_deleted_at`` from the model.
180 | """
181 | user = request.user
182 | message = get_object_or_404(Message, id=message_id)
183 | undeleted = False
184 | if success_url is None:
185 | success_url = reverse('messages_inbox')
186 | if 'next' in request.GET:
187 | success_url = request.GET['next']
188 | if message.sender == user:
189 | message.sender_deleted_at = None
190 | undeleted = True
191 | if message.recipient == user:
192 | message.recipient_deleted_at = None
193 | undeleted = True
194 | if undeleted:
195 | message.save()
196 | messages.info(request, _(u"Message successfully recovered."))
197 | if notification:
198 | notification.send([user], "messages_recovered", {'message': message,})
199 | return HttpResponseRedirect(success_url)
200 | raise Http404
201 |
202 | @login_required
203 | def view(request, message_id, form_class=ComposeForm, quote_helper=format_quote,
204 | subject_template=_(u"Re: %(subject)s"),
205 | template_name='django_messages/view.html'):
206 | """
207 | Shows a single message.``message_id`` argument is required.
208 | The user is only allowed to see the message, if he is either
209 | the sender or the recipient. If the user is not allowed a 404
210 | is raised.
211 | If the user is the recipient and the message is unread
212 | ``read_at`` is set to the current datetime.
213 | If the user is the recipient a reply form will be added to the
214 | tenplate context, otherwise 'reply_form' will be None.
215 | """
216 | user = request.user
217 | now = timezone.now()
218 | message = get_object_or_404(Message, id=message_id)
219 | if (message.sender != user) and (message.recipient != user):
220 | raise Http404
221 | if message.read_at is None and message.recipient == user:
222 | message.read_at = now
223 | message.save()
224 |
225 | context = {'message': message, 'reply_form': None}
226 | if message.recipient == user:
227 | form = form_class(initial={
228 | 'body': quote_helper(message.sender, message.body),
229 | 'subject': subject_template % {'subject': message.subject},
230 | 'recipient': [message.sender,]
231 | })
232 | context['reply_form'] = form
233 | return render(request, template_name, context)
234 |
--------------------------------------------------------------------------------
/django_messages/locale/it/LC_MESSAGES/django.po:
--------------------------------------------------------------------------------
1 | # SOME DESCRIPTIVE TITLE.
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 | # This file is distributed under the same license as the PACKAGE package.
4 | # Sergio Morstabilini , 2010.
5 | #
6 | msgid ""
7 | msgstr ""
8 | "Project-Id-Version: messages\n"
9 | "Report-Msgid-Bugs-To: \n"
10 | "POT-Creation-Date: 2010-03-03 12:31-0700\n"
11 | "PO-Revision-Date: 2010-03-03 21:58+0100\n"
12 | "Last-Translator: Sergio Morstabilini \n"
13 | "Language-Team: Sergio Morstabilini \n"
14 | "MIME-Version: 1.0\n"
15 | "Content-Type: text/plain; charset=UTF-8\n"
16 | "Content-Transfer-Encoding: 8bit\n"
17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 | "X-Poedit-Language: Italian\n"
19 |
20 | #: admin.py:13 forms.py:20 models.py:52 templates/messages/outbox.html:7
21 | #: templates/messages/view.html:12
22 | msgid "Recipient"
23 | msgstr "Destinatario"
24 |
25 | #: admin.py:38 models.py:88
26 | msgid "Message"
27 | msgstr "Messaggio"
28 |
29 | #: forms.py:21 models.py:49 templates/messages/inbox.html:7
30 | #: templates/messages/outbox.html:7 templates/messages/trash.html:7
31 | #: templates/messages/view.html:6
32 | msgid "Subject"
33 | msgstr "Oggetto"
34 |
35 | #: forms.py:22 models.py:50
36 | msgid "Body"
37 | msgstr "Messaggio"
38 |
39 | #: management.py:9
40 | msgid "Message Received"
41 | msgstr "Messaggio Ricevuto"
42 |
43 | #: management.py:9
44 | msgid "you have received a message"
45 | msgstr "hai ricevuto un messaggio"
46 |
47 | #: management.py:10
48 | msgid "Message Sent"
49 | msgstr "Messaggio Inviato"
50 |
51 | #: management.py:10
52 | msgid "you have sent a message"
53 | msgstr "hai inviato un messaggio"
54 |
55 | #: management.py:11
56 | msgid "Message Replied"
57 | msgstr "Risposta Inviata"
58 |
59 | #: management.py:11
60 | msgid "you have replied to a message"
61 | msgstr "hai risposto ad un messaggio"
62 |
63 | #: management.py:12
64 | msgid "Reply Received"
65 | msgstr "Risposta Ricevuta"
66 |
67 | #: management.py:12
68 | msgid "you have received a reply to a message"
69 | msgstr "hai ricevuto una risposta ad un messaggio"
70 |
71 | #: management.py:13
72 | msgid "Message Deleted"
73 | msgstr "Messaggio Cancellato"
74 |
75 | #: management.py:13
76 | msgid "you have deleted a message"
77 | msgstr "hai cancellato un messaggio"
78 |
79 | #: management.py:14
80 | msgid "Message Recovered"
81 | msgstr "Messaggio Ripristinato"
82 |
83 | #: management.py:14
84 | msgid "you have undeleted a message"
85 | msgstr "hai ripristinato un messaggio"
86 |
87 | #: models.py:51 templates/messages/inbox.html:7
88 | #: templates/messages/trash.html:7 templates/messages/view.html:8
89 | msgid "Sender"
90 | msgstr "Mittente"
91 |
92 | #: models.py:53
93 | msgid "Parent message"
94 | msgstr "In risposta a"
95 |
96 | #: models.py:54
97 | msgid "sent at"
98 | msgstr "inviato il"
99 |
100 | #: models.py:55
101 | msgid "read at"
102 | msgstr "letto il"
103 |
104 | #: models.py:56
105 | msgid "replied at"
106 | msgstr "risposto il"
107 |
108 | #: models.py:57
109 | msgid "Sender deleted at"
110 | msgstr "Mittente cancellato il"
111 |
112 | #: models.py:58
113 | msgid "Recipient deleted at"
114 | msgstr "Destinatario cancellato il"
115 |
116 | #: models.py:89
117 | msgid "Messages"
118 | msgstr "Messaggi"
119 |
120 | #: views.py:78 views.py:112
121 | msgid "Message successfully sent."
122 | msgstr "Messaggio inviato con successo."
123 |
124 | #: views.py:118
125 | #, python-format
126 | msgid ""
127 | "%(sender)s wrote:\n"
128 | "%(body)s"
129 | msgstr ""
130 | "%(sender)s ha scritto:\n"
131 | "%(body)s"
132 |
133 | #: views.py:122
134 | #, python-format
135 | msgid "Re: %(subject)s"
136 | msgstr "Re: %(subject)s"
137 |
138 | #: views.py:158
139 | msgid "Message successfully deleted."
140 | msgstr "Messaggio cancellato con successo."
141 |
142 | #: views.py:185
143 | msgid "Message successfully recovered."
144 | msgstr "Messaggio recuperato con successo."
145 |
146 | #: templates/messages/base.html:8 templates/messages/inbox.html:4
147 | #: templates/messages/new_message.html:10
148 | msgid "Inbox"
149 | msgstr "Messaggi Ricevuti"
150 |
151 | #: templates/messages/base.html:9 templates/messages/outbox.html:4
152 | msgid "Sent Messages"
153 | msgstr "Messaggi Inviati"
154 |
155 | #: templates/messages/base.html:10
156 | msgid "New Message"
157 | msgstr "Nuovo Messaggio"
158 |
159 | #: templates/messages/base.html:11
160 | msgid "Trash"
161 | msgstr "Cestino"
162 |
163 | #: templates/messages/compose.html:4
164 | msgid "Compose Message"
165 | msgstr "Scrivi Messaggio"
166 |
167 | #: templates/messages/compose.html:9
168 | msgid "Send"
169 | msgstr "Invia"
170 |
171 | #: templates/messages/inbox.html:7
172 | msgid "Received"
173 | msgstr "Ricevuto"
174 |
175 | #: templates/messages/inbox.html:7 templates/messages/outbox.html:7
176 | #: templates/messages/trash.html:7
177 | msgid "Action"
178 | msgstr "Azione"
179 |
180 | #: templates/messages/inbox.html:19 templates/messages/outbox.html:16
181 | #: templates/messages/trash.html:16 templates/messages/view.html:11
182 | msgid "DATETIME_FORMAT"
183 | msgstr "j F Y, G:i"
184 |
185 | #: templates/messages/inbox.html:20 templates/messages/outbox.html:17
186 | msgid "delete"
187 | msgstr "cancella"
188 |
189 | #: templates/messages/new_message.html:9
190 | #, python-format
191 | msgid "Sent from %(site_url)s"
192 | msgstr "Spedito da %(site_url)s"
193 |
194 | #: templates/messages/new_message.html:11 templates/messages/view.html:18
195 | msgid "Reply"
196 | msgstr "Rispondi"
197 |
198 | #: templates/messages/outbox.html:7
199 | msgid "Sent"
200 | msgstr "Spedito"
201 |
202 | #: templates/messages/trash.html:4
203 | msgid "Deleted Messages"
204 | msgstr "Messaggi Cancellati"
205 |
206 | #: templates/messages/trash.html:7 templates/messages/view.html:10
207 | msgid "Date"
208 | msgstr "Data"
209 |
210 | #: templates/messages/trash.html:17
211 | msgid "undelete"
212 | msgstr "ripristina"
213 |
214 | #: templates/messages/trash.html:23
215 | msgid "Deleted Messages are removed from the trash at unregular intervals, don't rely on this feature for long-time storage."
216 | msgstr "I messaggi cancellati sono rimossi dal cestino ad intervalli irregolari, non affidatevi a questa cartella per salvare messaggi a lungo termine."
217 |
218 | #: templates/messages/view.html:4
219 | msgid "View Message"
220 | msgstr "Vedi Messaggio"
221 |
222 | #: templates/messages/view.html:20
223 | msgid "Delete"
224 | msgstr "Cancella"
225 |
226 | #: templates/notification/messages_deleted/notice.html:1
227 | #, python-format
228 | msgid "You have deleted the message %(message)s."
229 | msgstr "Hai cancellato il messaggio %(message)s."
230 |
231 | #: templates/notification/messages_recovered/notice.html:1
232 | #, python-format
233 | msgid "You have recovered the message %(message)s."
234 | msgstr "Hai ripristinato il messaggio %(message)s."
235 |
236 | #: templates/notification/messages_received/notice.html:2
237 | #, python-format
238 | msgid "You have received the message %(message)s from %(message_sender)s."
239 | msgstr "Hai ricevuto il messaggio %(message)s da %(message_sender)s."
240 |
241 | #: templates/notification/messages_reply_received/notice.html:2
242 | #, python-format
243 | msgid "%(message_sender)s has sent you a reply to %(message_parent_msg)s."
244 | msgstr "%(message_sender)s ha mandato una risposta a %(message_parent_msg)s."
245 |
246 | #: templates/notification/messages_sent/notice.html:2
247 | #, python-format
248 | msgid "You have sent the message %(message)s to %(message_recipient)s."
249 | msgstr "Hai inviato il messaggio %(message)s a %(message_recipient)s."
250 |
251 | #: templates/notification/messages_replied/notice.html:2
252 | #, python-format
253 | msgid "You have replied to %(message_parent_msg)s from %(message_recipient)s."
254 | msgstr "Hai risposto a %(message_parent_msg)s ricevuto da %(message_recipient)s."
255 |
256 | #: templates/messages/new_message.html:1
257 | #, python-format
258 | msgid ""
259 | "Hello %(recipient)s,\n"
260 | "\n"
261 | "you received a private message from %(sender)s with\n"
262 | "the following contents:"
263 | msgstr ""
264 | "Ciao %(recipient)s,\n"
265 | "\n"
266 | "hai ricevuto un messaggio privato da %(sender)s con\n"
267 | "il seguente contenuto:"
268 |
269 | #: admin.py:16
270 | msgid "Creates the message optionally for all users or a group of users."
271 | msgstr "Crea il messaggio facoltativamente per tutti gli utenti o per un gruppo di utenti."
272 |
273 | #: admin.py:15
274 | msgid "group"
275 | msgstr "gruppo"
276 |
277 | #: admin.py:23
278 | msgid "All users"
279 | msgstr "Tutti gli utenti"
280 |
281 | #: fields.py:53
282 | #, python-format
283 | msgid "The following usernames are incorrect: %(users)s"
284 | msgstr "I seguenti nomi utente sono incorretti: %(users)s"
285 |
286 | #: admin.py:45
287 | msgid "Date/time"
288 | msgstr "Data/ora"
289 |
290 | #: utils.py:27
291 | #, python-format
292 | msgid "New Message: %(subject)s"
293 | msgstr "Nuovo Messaggio: %(subject)s"
294 |
295 | #~ msgid "There is no user with this username."
296 | #~ msgstr "Non esiste un utente con questo nome."
297 |
298 | #~ msgid "New Message:"
299 | #~ msgstr "Nuovo Messaggio:"
300 |
301 | #~ msgid "You have deleted the message '%(message)s'."
302 | #~ msgstr "Hai cancellato il messaggio '%(message)s'."
303 |
304 | #~ msgid "You have received a message from %(message_sender)s."
305 | #~ msgstr "Hai ricevuto un messaggio da %(message_sender)s."
306 |
307 | #~ msgid "You have recovered the message '%(message)s'."
308 | #~ msgstr "Hai ripristinato il messaggio '%(message)s'."
309 |
310 | #~ msgid "You have replied to '%(message_parent_msg)s' from %(message_recipient)s."
311 | #~ msgstr "Hai risposto a '%(message_parent_msg)s' ricevuto da %(message_recipient)s."
312 |
313 | #~ msgid "%(message_sender)s has sent you a reply to '%(message_parent_msg)s'."
314 | #~ msgstr "%(message_sender)s ha risposto a '%(message_parent_msg)s'."
315 |
316 | #~ msgid "You have sent the message '%(message)s' to %(message_recipient)s."
317 | #~ msgstr "Hai spedito il messaggio '%(message)s' a %(message_recipient)s."
318 |
--------------------------------------------------------------------------------