diff --git a/.gitignore b/.gitignore
index cccac58f3..1e9fa8329 100644
--- a/.gitignore
+++ b/.gitignore
@@ -43,3 +43,5 @@ xadmin/static/xadmin/bower_components/
.idea
*~
demo_app/data.db
+demo_app/static/
+*.swp
diff --git a/.travis.yml b/.travis.yml
index 7c6253129..0fd4d162b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,5 @@
language: python
python:
- - "2.7"
- - "2.6"
-install: "pip install -r requirements.txt --use-mirrors"
-script: "cd tests/ && python runtests.py"
\ No newline at end of file
+ - "2.7.11"
+install: "pip install -r requirements.txt"
+script: "cd tests/ && python runtests.py base view_base"
diff --git a/README.rst b/README.rst
index f863e6695..4ef644de6 100644
--- a/README.rst
+++ b/README.rst
@@ -1,11 +1,8 @@
-django-xadmin |Build Status| |Build Status2|
+Xadmin |Build Status|
============================================
-.. |Build Status| image:: https://travis-ci.org/sshwsfc/django-xadmin.png?branch=master
- :target: https://travis-ci.org/sshwsfc/django-xadmin
-
-.. |Build Status2| image:: https://drone.io/github.com/sshwsfc/django-xadmin/status.png
- :target: https://drone.io/github.com/sshwsfc/django-xadmin/latest
+.. |Build Status| image:: https://travis-ci.org/sshwsfc/xadmin.png?branch=master
+ :target: https://travis-ci.org/sshwsfc/xadmin
Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.
@@ -57,23 +54,31 @@ Xadmin is best installed via PyPI. To install the latest version, run:
.. code:: bash
- pip install django-xadmin
+ pip install xadmin
or Install from github source:
.. code:: bash
- pip install git+git://github.com/sshwsfc/django-xadmin.git
+ pip install git+git://github.com/sshwsfc/xadmin.git
+
+Install from github source for Django 2.0:
+
+.. code:: bash
+
+ pip install git+git://github.com/sshwsfc/xadmin.git@django2
Install Requires
----------------
-- `django`_ >=1.4
+- `django`_ >=1.9
-- `django-crispy-forms`_ >=1.2.3 (For xadmin crispy forms)
+- `django-crispy-forms`_ >=1.6.0 (For xadmin crispy forms)
- `django-reversion`_ ([OPTION] For object history and reversion feature, please select right version by your django, see `changelog`_ )
+- `django-formtools`_ ([OPTION] For wizward form)
+
- `xlwt`_ ([OPTION] For export xls files)
- `xlsxwriter`_ ([OPTION] For export xlsx files)
@@ -81,7 +86,8 @@ Install Requires
.. _django: http://djangoproject.com
.. _django-crispy-forms: http://django-crispy-forms.rtfd.org
.. _django-reversion: https://github.com/etianen/django-reversion
-.. _changelog: https://github.com/etianen/django-reversion/blob/master/CHANGELOG.markdown
+.. _changelog: https://github.com/etianen/django-reversion/blob/master/CHANGELOG.rst
+.. _django-formtools: https://github.com/django/django-formtools
.. _xlwt: http://www.python-excel.org/
.. _xlsxwriter: https://github.com/jmcnamara/XlsxWriter
@@ -96,6 +102,12 @@ Documentation
Changelogs
-------------
+0.6.0
+^^^^^
+- Compact with Django1.9.
+- Add Clock Picker widget for timepicker.
+- Fixed some userface errors.
+
0.5.0
^^^^^
@@ -125,6 +137,7 @@ Run Demo Locally
.. code:: bash
cd demo_app
+ ./manage.py migrate
./manage.py runserver
Open http://127.0.0.1:8000 in your browser, the admin user password is ``admin``
diff --git a/demo_app/app/adminx.py b/demo_app/app/adminx.py
index 716188884..f6755962c 100644
--- a/demo_app/app/adminx.py
+++ b/demo_app/app/adminx.py
@@ -1,163 +1,196 @@
+from __future__ import absolute_import
import xadmin
from xadmin import views
-from models import IDC, Host, MaintainLog, HostGroup, AccessRecord
+from .models import IDC, Host, MaintainLog, HostGroup, AccessRecord
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side
from xadmin.plugins.inline import Inline
from xadmin.plugins.batch import BatchChangeAction
+
+@xadmin.sites.register(views.website.IndexView)
class MainDashboard(object):
widgets = [
[
- {"type": "html", "title": "Test Widget", "content": "
Welcome to Xadmin!
Join Online Group:
QQ Qun : 282936295
"},
- {"type": "chart", "model": "app.accessrecord", 'chart': 'user_count', 'params': {'_p_date__gte': '2013-01-08', 'p': 1, '_p_date__lt': '2013-01-29'}},
- {"type": "list", "model": "app.host", 'params': {
- 'o':'-guarantee_date'}},
+ {"type": "html", "title": "Test Widget",
+ "content": " Welcome to Xadmin!
Join Online Group:
QQ Qun : 282936295
"},
+ {"type": "chart", "model": "app.accessrecord", "chart": "user_count",
+ "params": {"_p_date__gte": "2013-01-08", "p": 1, "_p_date__lt": "2013-01-29"}},
+ {"type": "list", "model": "app.host", "params": {"o": "-guarantee_date"}},
],
[
- {"type": "qbutton", "title": "Quick Start", "btns": [{'model': Host}, {'model':IDC}, {'title': "Google", 'url': "http://www.google.com/"}]},
+ {"type": "qbutton", "title": "Quick Start",
+ "btns": [{"model": Host}, {"model": IDC}, {"title": "Google", "url": "http://www.google.com/"}]},
{"type": "addform", "model": MaintainLog},
]
]
-xadmin.site.register(views.website.IndexView, MainDashboard)
+@xadmin.sites.register(views.BaseAdminView)
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
-xadmin.site.register(views.BaseAdminView, BaseSetting)
+@xadmin.sites.register(views.CommAdminView)
class GlobalSetting(object):
global_search_models = [Host, IDC]
global_models_icon = {
- Host: 'fa fa-laptop', IDC: 'fa fa-cloud'
+ Host: "fa fa-laptop", IDC: "fa fa-cloud"
}
- menu_style = 'default'#'accordion'
-xadmin.site.register(views.CommAdminView, GlobalSetting)
+ menu_style = 'default' # 'accordion'
class MaintainInline(object):
model = MaintainLog
extra = 1
- style = 'accordion'
+ style = "accordion"
+@xadmin.sites.register(IDC)
class IDCAdmin(object):
- list_display = ('name', 'description', 'create_time')
- list_display_links = ('name',)
+ list_display = ("name", "description", "create_time", "contact", "telphone", "address", "customer_id")
+ list_display_links = ("name",)
wizard_form_list = [
- ('First\'s Form', ('name', 'description')),
- ('Second Form', ('contact', 'telphone', 'address')),
- ('Thread Form', ('customer_id',))
+ ("First's Form", ("name", "description")),
+ ("Second Form", ("contact", "telphone", "address")),
+ ("Thread Form", ("customer_id",))
+ ]
+ search_fields = ["name", "description", "contact", "telphone", "address"]
+ list_filter = [
+ "name"
]
+ list_quick_filter = [{"field": "name", "limit": 10}]
- search_fields = ['name']
- relfield_style = 'fk-ajax'
+ search_fields = ["name"]
+ relfield_style = "fk-select"
reversion_enable = True
actions = [BatchChangeAction, ]
- batch_fields = ('contact', 'create_time')
+ batch_fields = ("contact", "description", "address", "customer_id")
+@xadmin.sites.register(Host)
class HostAdmin(object):
def open_web(self, instance):
- return "Open" % instance.ip
+ return """Open""" % instance.ip
+
open_web.short_description = "Acts"
open_web.allow_tags = True
open_web.is_column = True
- list_display = ('name', 'idc', 'guarantee_date', 'service_type',
- 'status', 'open_web', 'description')
- list_display_links = ('name',)
+ list_display = (
+ "name", "idc", "guarantee_date", "service_type", "status", "open_web",
+ "description", "ip",
+ )
+ list_display_links = ("name",)
- raw_id_fields = ('idc',)
- style_fields = {'system': "radio-inline"}
+ raw_id_fields = ("idc",)
+ style_fields = {"system": "radio-inline"}
- search_fields = ['name', 'ip', 'description']
- list_filter = ['idc', 'guarantee_date', 'status', 'brand', 'model',
- 'cpu', 'core_num', 'hard_disk', 'memory', ('service_type',xadmin.filters.MultiSelectFieldListFilter)]
-
- list_quick_filter = ['service_type',{'field':'idc__name','limit':10}]
- list_bookmarks = [{'title': "Need Guarantee", 'query': {'status__exact': 2}, 'order': ('-guarantee_date',), 'cols': ('brand', 'guarantee_date', 'service_type')}]
+ search_fields = ["name", "ip", "description"]
+ list_filter = [
+ "idc", "guarantee_date", "status", "brand", "model", "cpu", "core_num",
+ "hard_disk", "memory", (
+ "service_type",
+ xadmin.filters.MultiSelectFieldListFilter,
+ ),
+ ]
- show_detail_fields = ('idc',)
+ list_quick_filter = ["service_type", {"field": "idc__name", "limit": 10}]
+ # list_quick_filter = ["idc_id"]
+ list_bookmarks = [{
+ "title": "Need Guarantee",
+ "query": {"status__exact": 2},
+ "order": ("-guarantee_date",),
+ "cols": ("brand", "guarantee_date", "service_type"),
+ }]
+
+ show_detail_fields = ("idc",)
list_editable = (
- 'name', 'idc', 'guarantee_date', 'service_type', 'description')
+ "name", "idc", "guarantee_date", "service_type", "description", "ip"
+ )
save_as = True
aggregate_fields = {"guarantee_date": "min"}
- grid_layouts = ('table', 'thumbnails')
+ grid_layouts = ("table", "thumbnails")
form_layout = (
Main(
TabHolder(
- Tab('Comm Fields',
- Fieldset('Company data',
- 'name', 'idc',
- description="some comm fields, required"
- ),
- Inline(MaintainLog),
+ Tab(
+ "Comm Fields",
+ Fieldset(
+ "Company data", "name", "idc",
+ description="some comm fields, required",
),
- Tab('Extend Fields',
- Fieldset('Contact details',
- 'service_type',
- Row('brand', 'model'),
- Row('cpu', 'core_num'),
- Row(AppendedText(
- 'hard_disk', 'G'), AppendedText('memory', "G")),
- 'guarantee_date'
- ),
+ Inline(MaintainLog),
+ ),
+ Tab(
+ "Extend Fields",
+ Fieldset(
+ "Contact details",
+ "service_type",
+ Row("brand", "model"),
+ Row("cpu", "core_num"),
+ Row(
+ AppendedText("hard_disk", "G"),
+ AppendedText("memory", "G")
+ ),
+ "guarantee_date"
),
+ ),
),
),
Side(
- Fieldset('Status data',
- 'status', 'ssh_port', 'ip'
- ),
+ Fieldset("Status data", "status", "ssh_port", "ip"),
)
)
inlines = [MaintainInline]
reversion_enable = True
-
+
data_charts = {
- "host_service_type_counts": {'title': u"Host service type count", "x-field": "service_type", "y-field": ("service_type",),
- "option": {
- "series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
+ "host_service_type_counts": {'title': u"Host service type count", "x-field": "service_type",
+ "y-field": ("service_type",),
+ "option": {
+ "series": {"bars": {"align": "center", "barWidth": 0.8, 'show': True}},
"xaxis": {"aggregate": "count", "mode": "categories"},
- },
- },
+ },
+ },
}
-
+
+
+@xadmin.sites.register(HostGroup)
class HostGroupAdmin(object):
- list_display = ('name', 'description')
- list_display_links = ('name',)
+ list_display = ("name", "description")
+ list_display_links = ("name",)
- search_fields = ['name']
- style_fields = {'hosts': 'checkbox-inline'}
+ search_fields = ["name"]
+ style_fields = {"hosts": "checkbox-inline"}
+@xadmin.sites.register(MaintainLog)
class MaintainLogAdmin(object):
list_display = (
- 'host', 'maintain_type', 'hard_type', 'time', 'operator', 'note')
- list_display_links = ('host',)
+ "host", "maintain_type", "hard_type", "time", "operator", "note")
+ list_display_links = ("host",)
- list_filter = ['host', 'maintain_type', 'hard_type', 'time', 'operator']
- search_fields = ['note']
+ list_filter = ["host", "maintain_type", "hard_type", "time", "operator"]
+ search_fields = ["note"]
form_layout = (
Col("col2",
- Fieldset('Record data',
- 'time', 'note',
- css_class='unsort short_label no_title'
+ Fieldset("Record data",
+ "time", "note",
+ css_class="unsort short_label no_title"
),
span=9, horizontal=True
),
Col("col1",
- Fieldset('Comm data',
- 'host', 'maintain_type'
+ Fieldset("Comm data",
+ "host", "maintain_type"
),
- Fieldset('Maintain details',
- 'hard_type', 'operator'
+ Fieldset("Maintain details",
+ "hard_type", "operator"
),
span=3
)
@@ -165,38 +198,39 @@ class MaintainLogAdmin(object):
reversion_enable = True
+@xadmin.sites.register(AccessRecord)
class AccessRecordAdmin(object):
def avg_count(self, instance):
return int(instance.view_count / instance.user_count)
+
avg_count.short_description = "Avg Count"
avg_count.allow_tags = True
avg_count.is_column = True
- list_display = ('date', 'user_count', 'view_count', 'avg_count')
- list_display_links = ('date',)
+ list_display = ("date", "user_count", "view_count", "avg_count")
+ list_display_links = ("date",)
- list_filter = ['date', 'user_count', 'view_count']
+ list_filter = ["date", "user_count", "view_count"]
actions = None
- aggregate_fields = {"user_count": "sum", 'view_count': "sum"}
+ aggregate_fields = {"user_count": "sum", "view_count": "sum"}
refresh_times = (3, 5, 10)
data_charts = {
- "user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
+ "user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"),
+ "order": ('date',)},
"avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)},
- "per_month": {'title': u"Monthly Users", "x-field": "_chart_month", "y-field": ("user_count", ),
- "option": {
- "series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
- "xaxis": {"aggregate": "sum", "mode": "categories"},
- },
- },
+ "per_month": {'title': u"Monthly Users", "x-field": "_chart_month", "y-field": ("user_count",),
+ "option": {
+ "series": {"bars": {"align": "center", "barWidth": 0.8, 'show': True}},
+ "xaxis": {"aggregate": "sum", "mode": "categories"},
+ },
+ },
}
-
- def _chart_month(self,obj):
+
+ def _chart_month(self, obj):
return obj.date.strftime("%B")
-
-xadmin.site.register(Host, HostAdmin)
-xadmin.site.register(HostGroup, HostGroupAdmin)
-xadmin.site.register(MaintainLog, MaintainLogAdmin)
-xadmin.site.register(IDC, IDCAdmin)
-xadmin.site.register(AccessRecord, AccessRecordAdmin)
+# xadmin.sites.site.register(HostGroup, HostGroupAdmin)
+# xadmin.sites.site.register(MaintainLog, MaintainLogAdmin)
+# xadmin.sites.site.register(IDC, IDCAdmin)
+# xadmin.sites.site.register(AccessRecord, AccessRecordAdmin)
diff --git a/demo_app/app/migrations/0001_initial.py b/demo_app/app/migrations/0001_initial.py
new file mode 100644
index 000000000..39154fd5b
--- /dev/null
+++ b/demo_app/app/migrations/0001_initial.py
@@ -0,0 +1,112 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.4 on 2016-03-20 15:50
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='AccessRecord',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('date', models.DateField()),
+ ('user_count', models.IntegerField()),
+ ('view_count', models.IntegerField()),
+ ],
+ options={
+ 'verbose_name': 'Access Record',
+ 'verbose_name_plural': 'Access Record',
+ },
+ ),
+ migrations.CreateModel(
+ name='Host',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=64)),
+ ('nagios_name', models.CharField(blank=True, max_length=64, null=True, verbose_name='Nagios Host ID')),
+ ('ip', models.GenericIPAddressField(blank=True, null=True)),
+ ('internal_ip', models.GenericIPAddressField(blank=True, null=True)),
+ ('user', models.CharField(max_length=64)),
+ ('password', models.CharField(max_length=128)),
+ ('ssh_port', models.IntegerField(blank=True, null=True)),
+ ('status', models.SmallIntegerField(choices=[(0, 'Normal'), (1, 'Down'), (2, 'No Connect'), (3, 'Error')])),
+ ('brand', models.CharField(choices=[('DELL', 'DELL'), ('HP', 'HP'), ('Other', 'Other')], max_length=64)),
+ ('model', models.CharField(max_length=64)),
+ ('cpu', models.CharField(max_length=64)),
+ ('core_num', models.SmallIntegerField(choices=[(2, b'2 Cores'), (4, b'4 Cores'), (6, b'6 Cores'), (8, b'8 Cores'), (10, b'10 Cores'), (12, b'12 Cores'), (14, b'14 Cores'), (16, b'16 Cores'), (18, b'18 Cores'), (20, b'20 Cores'), (22, b'22 Cores'), (24, b'24 Cores'), (26, b'26 Cores'), (28, b'28 Cores')])),
+ ('hard_disk', models.IntegerField()),
+ ('memory', models.IntegerField()),
+ ('system', models.CharField(choices=[('CentOS', 'CentOS'), ('FreeBSD', 'FreeBSD'), ('Ubuntu', 'Ubuntu')], max_length=32, verbose_name='System OS')),
+ ('system_version', models.CharField(max_length=32)),
+ ('system_arch', models.CharField(choices=[('x86_64', 'x86_64'), ('i386', 'i386')], max_length=32)),
+ ('create_time', models.DateField()),
+ ('guarantee_date', models.DateField()),
+ ('service_type', models.CharField(choices=[(b'moniter', 'Moniter'), (b'lvs', 'LVS'), (b'db', 'Database'), (b'analysis', 'Analysis'), (b'admin', 'Admin'), (b'storge', 'Storge'), (b'web', 'WEB'), (b'email', 'Email'), (b'mix', 'Mix')], max_length=32)),
+ ('description', models.TextField()),
+ ],
+ options={
+ 'verbose_name': 'Host',
+ 'verbose_name_plural': 'Host',
+ },
+ ),
+ migrations.CreateModel(
+ name='HostGroup',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=32)),
+ ('description', models.TextField()),
+ ('hosts', models.ManyToManyField(blank=True, related_name='groups', to='app.Host', verbose_name='Hosts')),
+ ],
+ options={
+ 'verbose_name': 'Host Group',
+ 'verbose_name_plural': 'Host Group',
+ },
+ ),
+ migrations.CreateModel(
+ name='IDC',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('name', models.CharField(max_length=64)),
+ ('description', models.TextField()),
+ ('contact', models.CharField(max_length=32)),
+ ('telphone', models.CharField(max_length=32)),
+ ('address', models.CharField(max_length=128)),
+ ('customer_id', models.CharField(max_length=128)),
+ ('create_time', models.DateField(auto_now=True)),
+ ],
+ options={
+ 'verbose_name': 'IDC',
+ 'verbose_name_plural': 'IDC',
+ },
+ ),
+ migrations.CreateModel(
+ name='MaintainLog',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('maintain_type', models.CharField(max_length=32)),
+ ('hard_type', models.CharField(max_length=16)),
+ ('time', models.DateTimeField()),
+ ('operator', models.CharField(max_length=16)),
+ ('note', models.TextField()),
+ ('host', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.Host')),
+ ],
+ options={
+ 'verbose_name': 'Maintain Log',
+ 'verbose_name_plural': 'Maintain Log',
+ },
+ ),
+ migrations.AddField(
+ model_name='host',
+ name='idc',
+ field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.IDC'),
+ ),
+ ]
diff --git a/demo_app/app/migrations/0002_idc_groups.py b/demo_app/app/migrations/0002_idc_groups.py
new file mode 100644
index 000000000..e043672a0
--- /dev/null
+++ b/demo_app/app/migrations/0002_idc_groups.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.6 on 2016-05-20 14:04
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('auth', '0007_alter_validators_add_error_messages'),
+ ('app', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='idc',
+ name='groups',
+ field=models.ManyToManyField(to='auth.Group'),
+ ),
+ ]
diff --git a/demo_app/app/migrations/0003_host_administrator.py b/demo_app/app/migrations/0003_host_administrator.py
new file mode 100644
index 000000000..eb78bc227
--- /dev/null
+++ b/demo_app/app/migrations/0003_host_administrator.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-07 07:47
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('app', '0002_idc_groups'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='host',
+ name='administrator',
+ field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name=b'Admin'),
+ preserve_default=False,
+ ),
+ ]
diff --git a/tests/xtests/__init__.py b/demo_app/app/migrations/__init__.py
similarity index 100%
rename from tests/xtests/__init__.py
rename to demo_app/app/migrations/__init__.py
diff --git a/demo_app/app/models.py b/demo_app/app/models.py
index e0c740e7b..5f2ddcc74 100644
--- a/demo_app/app/models.py
+++ b/demo_app/app/models.py
@@ -1,5 +1,9 @@
from django.db import models
+from django.contrib.auth.models import Group
+from django.conf import settings
+from django.utils.encoding import python_2_unicode_compatible
+AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
SERVER_STATUS = (
(0, u"Normal"),
@@ -19,7 +23,7 @@
('mix', u"Mix"),
)
-
+@python_2_unicode_compatible
class IDC(models.Model):
name = models.CharField(max_length=64)
description = models.TextField()
@@ -28,10 +32,11 @@ class IDC(models.Model):
telphone = models.CharField(max_length=32)
address = models.CharField(max_length=128)
customer_id = models.CharField(max_length=128)
+ groups = models.ManyToManyField(Group) # many
create_time = models.DateField(auto_now=True)
- def __unicode__(self):
+ def __str__(self):
return self.name
class Meta:
@@ -39,12 +44,13 @@ class Meta:
verbose_name_plural = verbose_name
+@python_2_unicode_compatible
class Host(models.Model):
idc = models.ForeignKey(IDC)
name = models.CharField(max_length=64)
nagios_name = models.CharField(u"Nagios Host ID", max_length=64, blank=True, null=True)
- ip = models.IPAddressField(blank=True, null=True)
- internal_ip = models.IPAddressField(blank=True, null=True)
+ ip = models.GenericIPAddressField(blank=True, null=True)
+ internal_ip = models.GenericIPAddressField(blank=True, null=True)
user = models.CharField(max_length=64)
password = models.CharField(max_length=128)
ssh_port = models.IntegerField(blank=True, null=True)
@@ -66,7 +72,9 @@ class Host(models.Model):
service_type = models.CharField(max_length=32, choices=SERVICE_TYPES)
description = models.TextField()
- def __unicode__(self):
+ administrator = models.ForeignKey(AUTH_USER_MODEL, verbose_name="Admin")
+
+ def __str__(self):
return self.name
class Meta:
@@ -74,6 +82,7 @@ class Meta:
verbose_name_plural = verbose_name
+@python_2_unicode_compatible
class MaintainLog(models.Model):
host = models.ForeignKey(Host)
maintain_type = models.CharField(max_length=32)
@@ -82,7 +91,7 @@ class MaintainLog(models.Model):
operator = models.CharField(max_length=16)
note = models.TextField()
- def __unicode__(self):
+ def __str__(self):
return '%s maintain-log [%s] %s %s' % (self.host.name, self.time.strftime('%Y-%m-%d %H:%M:%S'),
self.maintain_type, self.hard_type)
@@ -91,6 +100,7 @@ class Meta:
verbose_name_plural = verbose_name
+@python_2_unicode_compatible
class HostGroup(models.Model):
name = models.CharField(max_length=32)
@@ -102,10 +112,11 @@ class Meta:
verbose_name = u"Host Group"
verbose_name_plural = verbose_name
- def __unicode__(self):
+ def __str__(self):
return self.name
+@python_2_unicode_compatible
class AccessRecord(models.Model):
date = models.DateField()
user_count = models.IntegerField()
@@ -115,5 +126,5 @@ class Meta:
verbose_name = u"Access Record"
verbose_name_plural = verbose_name
- def __unicode__(self):
+ def __str__(self):
return "%s Access Record" % self.date.strftime('%Y-%m-%d')
diff --git a/demo_app/app/tests.py b/demo_app/app/tests.py
new file mode 100644
index 000000000..7ce503c2d
--- /dev/null
+++ b/demo_app/app/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/demo_app/demo/settings.py b/demo_app/demo/settings.py
index 67907560a..ba583a1bc 100644
--- a/demo_app/demo/settings.py
+++ b/demo_app/demo/settings.py
@@ -2,16 +2,20 @@
import sys
import os.path
+from django.utils import six
-reload(sys)
-sys.setdefaultencoding('utf-8')
-gettext = lambda s: s
+if six.PY2 and sys.getdefaultencoding()=='ascii':
+ import imp
+ imp.reload(sys)
+ sys.setdefaultencoding('utf-8')
+
+from django.utils.translation import ugettext_lazy as _
PROJECT_ROOT = os.path.join(
os.path.realpath(os.path.dirname(__file__)), os.pardir)
+# PROJECT_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DEBUG = True
-TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
@@ -31,7 +35,7 @@
}
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
-ALLOWED_HOSTS = '*'
+ALLOWED_HOSTS = ['*']
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
@@ -44,8 +48,8 @@
LANGUAGE_CODE = 'en-us'
LANGUAGES = (
- ('en', gettext('English')),
- ('zh_CN', gettext('Chinese')),
+ ('en', _('English')),
+ ('zh-hans', _('Chinese')),
)
SITE_ID = 1
@@ -98,19 +102,15 @@
# Make this unique, and don't share it with anybody.
SECRET_KEY = '5=!nss_+^nvyyc_j(tdcf!7(_una*3gtw+_8v5jaa=)j0g^d_2'
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
- # 'django.template.loaders.eggs.Loader',
-)
-
MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
+ 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
+ 'django.middleware.locale.LocaleMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
@@ -120,12 +120,28 @@
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'demo.wsgi.application'
-TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- os.path.join(PROJECT_ROOT, "templates"),
-)
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [
+ os.path.join(PROJECT_ROOT,"templates"),
+ ],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.template.context_processors.i18n',
+ 'django.template.context_processors.media',
+ 'django.template.context_processors.static',
+ 'django.template.context_processors.tz',
+ 'django.template.context_processors.debug',
+ 'django.template.context_processors.request',
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ 'debug': DEBUG,
+ },
+ },
+]
INSTALLED_APPS = (
'django.contrib.auth',
@@ -137,14 +153,12 @@
'xadmin',
'crispy_forms',
- #'reversion',
+ 'reversion',
'app',
)
-DATE_FORMAT = 'Y-m-d'
-DATETIME_FORMAT = 'Y-m-d H:i'
-TIME_FORMAT = 'H:i'
+TEST_RUNNER = 'django.test.runner.DiscoverRunner'
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
diff --git a/demo_app/demo/urls.py b/demo_app/demo/urls.py
index 7b677eca3..409cde35d 100644
--- a/demo_app/demo/urls.py
+++ b/demo_app/demo/urls.py
@@ -1,16 +1,17 @@
-from django.conf.urls import patterns, include, url
+# -*- coding: utf-8 -*-
+from django.conf.urls import include, url
# Uncomment the next two lines to enable the admin:
import xadmin
xadmin.autodiscover()
-# from xadmin.plugins import xversion
-# xversion.register_models()
+# version模块自动注册需要版本控制的 Model
+from xadmin.plugins import xversion
+xversion.register_models()
from django.contrib import admin
-admin.autodiscover()
-urlpatterns = patterns('',
+urlpatterns = [
url(https://github.com/r'%5Eadmin/',%20include(admin.site.urls)),
url(https://github.com/r'%5E',%20include(xadmin.site.urls))
-)
+]
diff --git a/requirements.txt b/requirements.txt
index 04b203477..22c7cf752 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,8 @@
-django==1.5
-django-crispy-forms==1.4.0
\ No newline at end of file
+django>=1.9.0
+django-crispy-forms>=1.6.0
+django-import-export>=0.5.1
+django-reversion>=2.0.0
+django-formtools==1.0
+future==0.15.2
+httplib2==0.9.2
+six==1.10.0
diff --git a/setup.py b/setup.py
index 929437579..26bf2e698 100644
--- a/setup.py
+++ b/setup.py
@@ -1,29 +1,35 @@
#!/usr/bin/env python
+from io import open
from setuptools import setup
-
-# version_tuple = __import__('xadmin.version').VERSION
+# version_tuple = __import__('xadmin').VERSION
# version = ".".join([str(v) for v in version_tuple])
setup(
- name='django-xadmin',
- version='0.5.0',
+ name='xadmin',
+ version='0.6.1',
description='Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.',
- long_description=open('README.rst').read(),
+ long_description=open('README.rst', encoding='utf-8').read(),
author='sshwsfc',
author_email='sshwsfc@gmail.com',
- license=open('LICENSE').read(),
+ license=open('LICENSE', encoding='utf-8').read(),
url='http://www.xadmin.io/',
download_url='http://github.com/sshwsfc/django-xadmin/archive/master.zip',
- packages=['xadmin', 'xadmin.plugins', 'xadmin.templatetags', 'xadmin.views'],
+ packages=['xadmin', 'xadmin.migrations', 'xadmin.plugins', 'xadmin.templatetags', 'xadmin.views'],
include_package_data=True,
install_requires=[
'setuptools',
- 'django>=1.5',
- 'django-crispy-forms>=1.4.0',
+ 'django>=1.9.0',
+ 'django-crispy-forms>=1.6.0',
+ 'django-reversion>=2.0.0',
+ 'django-formtools>=1.0',
+ 'django-import-export>=0.5.1',
+ 'httplib2==0.9.2',
+ 'future',
+ 'six'
],
extras_require={
'Excel': ['xlwt', 'xlsxwriter'],
- 'Reversion': ['django-reversion'],
+ 'Reversion': ['django-reversion>=2.0.0'],
},
zip_safe=False,
keywords=['admin', 'django', 'xadmin', 'bootstrap'],
@@ -37,6 +43,7 @@
"Programming Language :: JavaScript",
'Programming Language :: Python',
"Programming Language :: Python :: 2.7",
+ "Programming Language :: Python :: 3.4",
"Topic :: Internet :: WWW/HTTP",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
"Topic :: Software Development :: Libraries :: Python Modules",
diff --git a/tests/runtests.py b/tests/runtests.py
index a9426937f..5f8677b25 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -1,9 +1,15 @@
#!/usr/bin/env python
+from __future__ import print_function
import os
import shutil
import sys
import tempfile
+import django
+from django.apps import AppConfig,apps
+from django.utils.encoding import smart_text
+
+
TEST_ROOT = os.path.realpath(os.path.dirname(__file__))
RUNTESTS_DIR = os.path.join(TEST_ROOT, 'xtests')
@@ -28,9 +34,13 @@
def get_test_modules():
modules = []
for f in os.listdir(RUNTESTS_DIR):
- if (f.startswith('__init__') or
- f.startswith('.') or
- f.startswith('sql') or not os.path.isdir(os.path.join(RUNTESTS_DIR, f))):
+ if (
+ f.startswith('__init__')
+ or f.startswith('__pycache__')
+ or f.startswith('.')
+ or f.startswith('sql')
+ or not os.path.isdir(os.path.join(RUNTESTS_DIR, f))
+ ):
continue
modules.append(f)
return modules
@@ -72,26 +82,24 @@ def setup(verbosity, test_labels):
# Load all the ALWAYS_INSTALLED_APPS.
# (This import statement is intentionally delayed until after we
# access settings because of the USE_I18N dependency.)
- from django.db.models.loading import get_apps, load_app
- get_apps()
+
# Load all the test model apps.
test_labels_set = set([label.split('.')[0] for label in test_labels])
test_modules = get_test_modules()
-
for module_name in test_modules:
- module_label = '.'.join(['xtests', module_name])
+ module_label = module_name
# if the module was named on the command line, or
# no modules were named (i.e., run all), import
# this module and add it to the list to test.
if not test_labels or module_name in test_labels_set:
if verbosity >= 2:
- print "Importing application %s" % module_name
- mod = load_app(module_label)
- if mod:
- if module_label not in settings.INSTALLED_APPS:
- settings.INSTALLED_APPS.append(module_label)
+ print("Importing application %s" % module_name)
+ if module_label not in settings.INSTALLED_APPS:
+ settings.INSTALLED_APPS.append(module_label)
+ django.setup()
+ [a.models_module for a in apps.get_app_configs()]
return state
def teardown(state):
@@ -100,7 +108,7 @@ def teardown(state):
# so that it will successfully remove temp trees containing
# non-ASCII filenames on Windows. (We're assuming the temp dir
# name itself does not contain non-ASCII characters.)
- shutil.rmtree(unicode(TEMP_DIR))
+ shutil.rmtree(smart_text(TEMP_DIR))
# Restore the old settings.
for key, value in state.items():
setattr(settings, key, value)
@@ -159,7 +167,6 @@ def django_tests(verbosity, interactive, failfast, test_labels):
if options.liveserver is not None:
os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = options.liveserver
-
failures = django_tests(int(options.verbosity), options.interactive,
options.failfast, args)
if failures:
diff --git a/tests/settings.py b/tests/settings.py
index f1bfda658..c07079818 100644
--- a/tests/settings.py
+++ b/tests/settings.py
@@ -4,7 +4,7 @@
'ENGINE': 'django.db.backends.sqlite3',
}
}
-
+MIDDLEWARE_CLASSES = ()
# Required for Django 1.4+
STATIC_URL = '/static/'
diff --git a/tests/urls.py b/tests/urls.py
index 080c69e14..28b9250d2 100644
--- a/tests/urls.py
+++ b/tests/urls.py
@@ -1,5 +1,5 @@
from django.conf.urls import patterns, include
urlpatterns = patterns('',
- (r'^view_base/', include('xtests.view_base.urls')),
+ (r'^view_base/', include('view_base.urls')),
)
\ No newline at end of file
diff --git a/tests/xtests/site/apps.py b/tests/xtests/site/apps.py
new file mode 100644
index 000000000..37777566c
--- /dev/null
+++ b/tests/xtests/site/apps.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#coding:utf-8
+import sys
+from django.utils import six
+if six.PY2 and sys.getdefaultencoding()=='ascii':
+ import imp
+ imp.reload(sys)
+ sys.setdefaultencoding('utf-8')
+
+from django.apps import AppConfig
+
+class SiteApp(AppConfig):
+ name = "site"
diff --git a/tests/xtests/site/tests.py b/tests/xtests/site/tests.py
index 5d9beef39..808997f40 100644
--- a/tests/xtests/site/tests.py
+++ b/tests/xtests/site/tests.py
@@ -1,10 +1,11 @@
+from __future__ import absolute_import
from django.http import HttpResponse
-from xtests.base import BaseTest
+from base import BaseTest
from xadmin.sites import AdminSite
from xadmin.views import BaseAdminView, BaseAdminPlugin, ModelAdminView, filter_hook
-from models import ModelA
+from .models import ModelA
class ModelAAdmin(object):
diff --git a/tests/xtests/view_base/adminx.py b/tests/xtests/view_base/adminx.py
index 7db81e35f..b75fc8f8a 100644
--- a/tests/xtests/view_base/adminx.py
+++ b/tests/xtests/view_base/adminx.py
@@ -1,6 +1,7 @@
+from __future__ import absolute_import
from xadmin.sites import AdminSite
from xadmin.views import BaseAdminView, CommAdminView, ListAdminView
-from models import ModelA, ModelB
+from .models import ModelA, ModelB
site = AdminSite('views_base')
diff --git a/tests/xtests/view_base/apps.py b/tests/xtests/view_base/apps.py
new file mode 100644
index 000000000..5b59ac85d
--- /dev/null
+++ b/tests/xtests/view_base/apps.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#coding:utf-8
+import sys
+from django.utils import six
+if six.PY2 and sys.getdefaultencoding()=='ascii':
+ import imp
+ imp.reload(sys)
+ sys.setdefaultencoding('utf-8')
+
+from django.apps import AppConfig
+
+class ViewBaseApp(AppConfig):
+ name = "view_base"
diff --git a/tests/xtests/view_base/tests.py b/tests/xtests/view_base/tests.py
index 8d01984d7..a779341f4 100644
--- a/tests/xtests/view_base/tests.py
+++ b/tests/xtests/view_base/tests.py
@@ -1,11 +1,12 @@
+from __future__ import absolute_import
from django.contrib.auth.models import User
-from xtests.base import BaseTest
+from base import BaseTest
from xadmin.views import BaseAdminView, BaseAdminPlugin, ModelAdminView, ListAdminView
-from models import ModelA, ModelB
-from adminx import site, ModelAAdmin, TestBaseView, TestCommView, TestAView, OptionA
+from .models import ModelA, ModelB
+from .adminx import site, ModelAAdmin, TestBaseView, TestCommView, TestAView, OptionA
class BaseAdminTest(BaseTest):
@@ -57,8 +58,3 @@ def setUp(self):
def test_model_icon(self):
self.assertEqual(self.test_view.get_model_icon(ModelA), 'flag')
self.assertEqual(self.test_view.get_model_icon(ModelB), 'test')
-
-
-
-
-
diff --git a/tests/xtests/view_base/urls.py b/tests/xtests/view_base/urls.py
index 5f76a1c80..a6a3601ec 100644
--- a/tests/xtests/view_base/urls.py
+++ b/tests/xtests/view_base/urls.py
@@ -1,5 +1,6 @@
+from __future__ import absolute_import
from django.conf.urls import patterns, include
-from adminx import site
+from .adminx import site
urlpatterns = patterns('',
(r'', include(site.urls)),
diff --git a/xadmin/__init__.py b/xadmin/__init__.py
index 2eaa6c267..3e1a0522c 100644
--- a/xadmin/__init__.py
+++ b/xadmin/__init__.py
@@ -1,7 +1,7 @@
-from xadmin.sites import AdminSite, site
-VERSION = [0,5,0]
+VERSION = (0,6,0)
+from xadmin.sites import AdminSite, site
class Settings(object):
pass
@@ -14,9 +14,10 @@ def autodiscover():
may want.
"""
+ from importlib import import_module
from django.conf import settings
- from django.utils.importlib import import_module
from django.utils.module_loading import module_has_submodule
+ from django.apps import apps
setattr(settings, 'CRISPY_TEMPLATE_PACK', 'bootstrap3')
setattr(settings, 'CRISPY_CLASS_CONVERTERS', {
@@ -47,12 +48,12 @@ def autodiscover():
from xadmin.plugins import register_builtin_plugins
register_builtin_plugins(site)
- for app in settings.INSTALLED_APPS:
- mod = import_module(app)
+ for app_config in apps.get_app_configs():
+ mod = import_module(app_config.name)
# Attempt to import the app's admin module.
try:
before_import_registry = site.copy_registry()
- import_module('%s.adminx' % app)
+ import_module('%s.adminx' % app_config.name)
except:
# Reset the model registry to the state before the last import as
# this import will have to reoccur on the next request and this
@@ -65,3 +66,5 @@ def autodiscover():
# attempting to import it, otherwise we want it to bubble up.
if module_has_submodule(mod, 'adminx'):
raise
+
+default_app_config = 'xadmin.apps.XAdminConfig'
diff --git a/xadmin/adminx.py b/xadmin/adminx.py
index 1fece0dcb..e7a66e0ff 100644
--- a/xadmin/adminx.py
+++ b/xadmin/adminx.py
@@ -1,9 +1,32 @@
+from __future__ import absolute_import
import xadmin
-from models import UserSettings
+from .models import UserSettings, Log
from xadmin.layout import *
+from django.utils.translation import ugettext_lazy as _, ugettext
class UserSettingsAdmin(object):
model_icon = 'fa fa-cog'
hidden_menu = True
+
xadmin.site.register(UserSettings, UserSettingsAdmin)
+
+class LogAdmin(object):
+
+ def link(self, instance):
+ if instance.content_type and instance.object_id and instance.action_flag != 'delete':
+ admin_url = self.get_admin_url('https://github.com/%s_%s_change'%20%%20(instance.content_type.app_label,%20instance.content_type.model),
+ instance.object_id)
+ return "%s" % (admin_url, _('Admin Object'))
+ else:
+ return ''
+ link.short_description = ""
+ link.allow_tags = True
+ link.is_column = False
+
+ list_display = ('action_time', 'user', 'ip_addr', '__str__', 'link')
+ list_filter = ['user', 'action_time']
+ search_fields = ['ip_addr', 'message']
+ model_icon = 'fa fa-cog'
+
+xadmin.site.register(Log, LogAdmin)
diff --git a/xadmin/apps.py b/xadmin/apps.py
new file mode 100644
index 000000000..6bae500a6
--- /dev/null
+++ b/xadmin/apps.py
@@ -0,0 +1,15 @@
+from django.apps import AppConfig
+from django.core import checks
+from django.utils.translation import ugettext_lazy as _
+import xadmin
+
+
+class XAdminConfig(AppConfig):
+ """Simple AppConfig which does not do automatic discovery."""
+
+ name = 'xadmin'
+ verbose_name = _("Administration")
+
+ def ready(self):
+ self.module.autodiscover()
+ setattr(xadmin,'site',xadmin.site)
diff --git a/xadmin/filters.py b/xadmin/filters.py
index f4eb6e9d9..9eba01e99 100644
--- a/xadmin/filters.py
+++ b/xadmin/filters.py
@@ -1,22 +1,25 @@
+from __future__ import absolute_import
from django.db import models
from django.core.exceptions import ImproperlyConfigured
-from django.utils.encoding import smart_unicode
+from django.utils.encoding import smart_text
from django.utils.translation import ugettext_lazy as _
from django.utils import timezone
from django.template.loader import get_template
from django.template.context import Context
+from django.utils import six
from django.utils.safestring import mark_safe
from django.utils.html import escape,format_html
from django.utils.text import Truncator
-from django.core.cache import cache, get_cache
+from django.core.cache import cache, caches
from xadmin.views.list import EMPTY_CHANGELIST_VALUE
+from xadmin.util import is_related_field,is_related_field2
import datetime
FILTER_PREFIX = '_p_'
SEARCH_VAR = '_q_'
-from util import (get_model_from_relation,
+from .util import (get_model_from_relation,
reverse_field_path, get_limit_choices_to_from_path, prepare_lookup_value)
@@ -44,8 +47,10 @@ def query_string(self, new_params=None, remove=None):
return self.admin_view.get_query_string(new_params, remove)
def form_params(self):
- return self.admin_view.get_form_params(
- remove=map(lambda k: FILTER_PREFIX + k, self.used_params.keys()))
+ arr = map(lambda k: FILTER_PREFIX + k, self.used_params.keys())
+ if six.PY3:
+ arr = list(arr)
+ return self.admin_view.get_form_params(remove=arr)
def has_output(self):
"""
@@ -68,7 +73,7 @@ def get_context(self):
def __str__(self):
tpl = get_template(self.template)
- return mark_safe(tpl.render(Context(self.get_context())))
+ return mark_safe(tpl.render(context=self.get_context()))
class FieldFilterManager(object):
@@ -119,14 +124,20 @@ def __init__(self, field, request, params, model, admin_view, field_path):
else:
self.context_params["%s_val" % name] = ''
- map(lambda kv: setattr(
- self, 'lookup_' + kv[0], kv[1]), self.context_params.items())
+ arr = map(
+ lambda kv: setattr(self, 'lookup_' + kv[0], kv[1]),
+ self.context_params.items()
+ )
+ if six.PY3:
+ list(arr)
def get_context(self):
context = super(FieldFilter, self).get_context()
context.update(self.context_params)
- context['remove_url'] = self.query_string(
- {}, map(lambda k: FILTER_PREFIX + k, self.used_params.keys()))
+ obj = map(lambda k: FILTER_PREFIX + k, self.used_params.keys())
+ if six.PY3:
+ obj = list(obj)
+ context['remove_url'] = self.query_string({}, obj)
return context
def has_output(self):
@@ -157,22 +168,28 @@ def choices(self):
for lookup, title in (
('', _('All')),
('1', _('Yes')),
- ('0', _('No'))):
+ ('0', _('No')),
+ ):
yield {
- 'selected': self.lookup_exact_val == lookup and not self.lookup_isnull_val,
- 'query_string': self.query_string({
- self.lookup_exact_name: lookup,
- }, [self.lookup_isnull_name]),
- 'display': title,
- }
+ 'selected': (
+ self.lookup_exact_val == lookup
+ and not self.lookup_isnull_val
+ ),
+ 'query_string': self.query_string(
+ {self.lookup_exact_name: lookup},
+ [self.lookup_isnull_name],
+ ),
+ 'display': title,
+ }
if isinstance(self.field, models.NullBooleanField):
yield {
- 'selected': self.lookup_isnull_val == 'True',
- 'query_string': self.query_string({
- self.lookup_isnull_name: 'True',
- }, [self.lookup_exact_name]),
- 'display': _('Unknown'),
- }
+ 'selected': self.lookup_isnull_val == 'True',
+ 'query_string': self.query_string(
+ {self.lookup_isnull_name: 'True'},
+ [self.lookup_exact_name],
+ ),
+ 'display': _('Unknown'),
+ }
@manager.register
@@ -191,7 +208,7 @@ def choices(self):
}
for lookup, title in self.field.flatchoices:
yield {
- 'selected': smart_unicode(lookup) == self.lookup_exact_val,
+ 'selected': smart_text(lookup) == self.lookup_exact_val,
'query_string': self.query_string({self.lookup_exact_name: lookup}),
'display': title,
}
@@ -200,11 +217,15 @@ def choices(self):
@manager.register
class TextFieldListFilter(FieldFilter):
template = 'xadmin/filters/char.html'
- lookup_formats = {'in': '%s__in','search': '%s__contains'}
+ lookup_formats = {'in': '%s__in', 'search': '%s__contains'}
@classmethod
def test(cls, field, request, params, model, admin_view, field_path):
- return (isinstance(field, models.CharField) and field.max_length > 20) or isinstance(field, models.TextField)
+ return (
+ isinstance(field, models.CharField)
+ and field.max_length > 20
+ or isinstance(field, models.TextField)
+ )
@manager.register
@@ -310,11 +331,11 @@ class RelatedFieldSearchFilter(FieldFilter):
@classmethod
def test(cls, field, request, params, model, admin_view, field_path):
- if not (hasattr(field, 'rel') and bool(field.rel) or isinstance(field, models.related.RelatedObject)):
+ if not is_related_field2(field):
return False
related_modeladmin = admin_view.admin_site._registry.get(
get_model_from_relation(field))
- return related_modeladmin and getattr(related_modeladmin, 'relfield_style', None) == 'fk-ajax'
+ return related_modeladmin and getattr(related_modeladmin, 'relfield_style', None) in ('fk-ajax', 'fk-select')
def __init__(self, field, request, params, model, model_admin, field_path):
other_model = get_model_from_relation(field)
@@ -327,13 +348,16 @@ def __init__(self, field, request, params, model, model_admin, field_path):
super(RelatedFieldSearchFilter, self).__init__(
field, request, params, model, model_admin, field_path)
+ related_modeladmin = self.admin_view.admin_site._registry.get(other_model)
+ self.relfield_style = related_modeladmin.relfield_style
+
if hasattr(field, 'verbose_name'):
self.lookup_title = field.verbose_name
else:
self.lookup_title = other_model._meta.verbose_name
self.title = self.lookup_title
self.search_url = model_admin.get_admin_url('%s_%s_changelist' % (
- other_model._meta.app_label, other_model._meta.module_name))
+ other_model._meta.app_label, other_model._meta.model_name))
self.label = self.label_for_value(other_model, rel_name, self.lookup_exact_val) if self.lookup_exact_val else ""
self.choices = '?'
if field.rel.limit_choices_to:
@@ -353,6 +377,7 @@ def get_context(self):
context['search_url'] = self.search_url
context['label'] = self.label
context['choices'] = self.choices
+ context['relfield_style'] = self.relfield_style
return context
@@ -361,7 +386,7 @@ class RelatedFieldListFilter(ListFieldFilter):
@classmethod
def test(cls, field, request, params, model, admin_view, field_path):
- return (hasattr(field, 'rel') and bool(field.rel) or isinstance(field, models.related.RelatedObject))
+ return is_related_field2(field)
def __init__(self, field, request, params, model, model_admin, field_path):
other_model = get_model_from_relation(field)
@@ -383,7 +408,7 @@ def __init__(self, field, request, params, model, model_admin, field_path):
self.title = self.lookup_title
def has_output(self):
- if (isinstance(self.field, models.related.RelatedObject)
+ if (is_related_field(self.field)
and self.field.field.null or hasattr(self.field, 'rel')
and self.field.null):
extra = 1
@@ -403,13 +428,13 @@ def choices(self):
}
for pk_val, val in self.lookup_choices:
yield {
- 'selected': self.lookup_exact_val == smart_unicode(pk_val),
+ 'selected': self.lookup_exact_val == smart_text(pk_val),
'query_string': self.query_string({
self.lookup_exact_name: pk_val,
}, [self.lookup_isnull_name]),
'display': val,
}
- if (isinstance(self.field, models.related.RelatedObject)
+ if (is_related_field(self.field)
and self.field.field.null or hasattr(self.field, 'rel')
and self.field.null):
yield {
@@ -439,13 +464,13 @@ def test(cls, field, request, params, model, admin_view, field_path):
def get_cached_choices(self):
if not self.cache_config['enabled']:
return None
- c = get_cache(self.cache_config['cache'])
+ c = caches(self.cache_config['cache'])
return c.get(self.cache_config['key']%self.field_path)
def set_cached_choices(self,choices):
if not self.cache_config['enabled']:
return
- c = get_cache(self.cache_config['cache'])
+ c = caches(self.cache_config['cache'])
return c.set(self.cache_config['key']%self.field_path,choices)
def __init__(self, field, request, params, model, model_admin, field_path,field_order_by=None,field_limit=None,sort_key=None,cache_config=None):
@@ -489,7 +514,7 @@ def choices(self):
}
for val in self.lookup_choices:
yield {
- 'selected': smart_unicode(val) in self.lookup_in_val,
+ 'selected': smart_text(val) in self.lookup_in_val,
'query_string': self.query_string({self.lookup_in_name: ",".join([val]+self.lookup_in_val),}),
'remove_query_string': self.query_string({self.lookup_in_name: ",".join([v for v in self.lookup_in_val if v != val]),}),
'display': val,
@@ -530,7 +555,7 @@ def choices(self):
if val is None:
include_none = True
continue
- val = smart_unicode(val)
+ val = smart_text(val)
yield {
'selected': self.lookup_exact_val == val,
'query_string': self.query_string({self.lookup_exact_name: val},
@@ -543,4 +568,4 @@ def choices(self):
'query_string': self.query_string({self.lookup_isnull_name: 'True'},
[self.lookup_exact_name]),
'display': EMPTY_CHANGELIST_VALUE,
- }
\ No newline at end of file
+ }
diff --git a/xadmin/forms.py b/xadmin/forms.py
index 8ef880c53..512de103b 100644
--- a/xadmin/forms.py
+++ b/xadmin/forms.py
@@ -5,7 +5,7 @@
from django.utils.translation import ugettext_lazy, ugettext as _
-from xadmin.util import User
+from django.contrib.auth import get_user_model
ERROR_MESSAGE = ugettext_lazy("Please enter the correct username and password "
"for a staff account. Note that both fields are case-sensitive.")
@@ -30,6 +30,7 @@ def clean(self):
username=username, password=password)
if self.user_cache is None:
if u'@' in username:
+ User = get_user_model()
# Mistakenly entered e-mail address instead of username? Look it up.
try:
user = User.objects.get(email=username)
diff --git a/xadmin/layout.py b/xadmin/layout.py
index 443830bcf..1d3c7a920 100644
--- a/xadmin/layout.py
+++ b/xadmin/layout.py
@@ -1,7 +1,7 @@
from crispy_forms.helper import FormHelper
from crispy_forms.layout import *
from crispy_forms.bootstrap import *
-from crispy_forms.utils import render_field, flatatt
+from crispy_forms.utils import render_field, flatatt, TEMPLATE_PACK
from crispy_forms import layout
from crispy_forms import bootstrap
@@ -70,17 +70,28 @@ def __init__(self, field, *args, **kwargs):
if '@@' not in args:
self.inputs.append('@@')
+ self.input_size = None
+ css_class = kwargs.get('css_class', '')
+ if 'input-lg' in css_class:
+ self.input_size = 'input-lg'
+ if 'input-sm' in css_class:
+ self.input_size = 'input-sm'
+
super(InputGroup, self).__init__(field, **kwargs)
- def render(self, form, form_style, context, template_pack='bootstrap'):
+ def render(self, form, form_style, context, template_pack=TEMPLATE_PACK, **kwargs):
classes = form.fields[self.field].widget.attrs.get('class', '')
- context.update(
- {'inputs': self.inputs, 'classes': classes.replace('form-control', '')})
+ extra_context = {
+ 'inputs': self.inputs,
+ 'input_size': self.input_size,
+ 'classes': classes.replace('form-control', '')
+ }
if hasattr(self, 'wrapper_class'):
- context['wrapper_class'] = self.wrapper_class
+ extra_context['wrapper_class'] = self.wrapper_class
+
return render_field(
self.field, form, form_style, context, template=self.template,
- attrs=self.attrs, template_pack=template_pack)
+ attrs=self.attrs, template_pack=template_pack, extra_context=extra_context, **kwargs)
class PrependedText(InputGroup):
diff --git a/xadmin/locale/de_DE/LC_MESSAGES/django.mo b/xadmin/locale/de_DE/LC_MESSAGES/django.mo
index 83384667b..e594acb7e 100644
Binary files a/xadmin/locale/de_DE/LC_MESSAGES/django.mo and b/xadmin/locale/de_DE/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/de_DE/LC_MESSAGES/django.po b/xadmin/locale/de_DE/LC_MESSAGES/django.po
index 07c19c358..65ab4726a 100644
--- a/xadmin/locale/de_DE/LC_MESSAGES/django.po
+++ b/xadmin/locale/de_DE/LC_MESSAGES/django.po
@@ -10,63 +10,77 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-12-19 11:06+0000\n"
"Last-Translator: Sebastian Morkisch \n"
-"Language-Team: German (Germany) (http://www.transifex.com/projects/p/xadmin/language/de_DE/)\n"
+"Language-Team: German (Germany) (http://www.transifex.com/projects/p/xadmin/"
+"language/de_DE/)\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Alle"
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Ja"
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "Nein"
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr "Unbekannt"
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr "Beliebiges Datum"
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr "Hat ein Datum"
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr "Hat kein Datum"
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Heute"
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr "Letzten 7 Tage"
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr "Diesen Monat"
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr "Dieses Jahr"
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "Bitte geben Sie den richtigen Benutzernamen und das Kennwort für ein Mitarbeiter Konto an. Beachten Sie die Groß-und Kleinschreibung in den beiden Feldern."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Bitte geben Sie den richtigen Benutzernamen und das Kennwort für ein "
+"Mitarbeiter Konto an. Beachten Sie die Groß-und Kleinschreibung in den "
+"beiden Feldern."
#: forms.py:21
msgid "Please log in again, because your session has expired."
@@ -77,107 +91,171 @@ msgstr "Ihre Sitzung ist abgelaufen - bitte melden Sie sich erneut an."
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr "Ihre Email ist nicht ihr Benutzername. Probieren sie anstelle %s."
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Titel"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr "Benutzer"
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr "URL Name"
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "Abfrage String"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr "Wird geteilt"
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Lesezeichen"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Lesezeichen"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr "Einstellungsschlüssel"
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr "Einstellungsinhalt"
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr "Benutzereinstellung"
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr "Benutzereinstelllungen"
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Seite"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Widget Typ"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Widget Parameter"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr "Benutzer Widget"
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr "Benutzer Widgets"
-#: widgets.py:48
-msgid "Now"
-msgstr "Jetzt"
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Datum/Uhrzeit"
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Ändern %s"
+
+#: models.py:164
+#, fuzzy
+#| msgid "log in"
+msgid "log entry"
+msgstr "einloggen"
-#: plugins/actions.py:54
+#: models.py:165
+msgid "log entries"
+msgstr ""
+
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, fuzzy, python-format
+#| msgid "Change one %(objects_name)s"
+#| msgid_plural "Batch change %(counter)s %(objects_name)s"
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Anpassung von %(objects_name)s"
+
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Abhängige Objekte"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Lösche ausgewählte %(verbose_name_plural)s"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Erfolgreich gelöscht %(count)d %(items)s."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Erfolgreich gelöscht %(count)d %(items)s."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "Kann nicht gelöscht werden %(name)s"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Sind Sie sicher?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] "%(total_count)s ausgewählt"
msgstr[1] "Alle %(total_count)s ausgewählt"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "0 von %(cnt)s ausgewählt"
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -246,20 +324,20 @@ msgstr "Status"
msgid "Permission Name"
msgstr "Berechtigungen"
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr "Passwort ändern"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Passwort ändern: %s"
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Passwort erfolgreich geändert."
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -274,7 +352,7 @@ msgstr "Änderung des Feldes"
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr "Anpassung aller gewählten %(verbose_name_plural)s"
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr "Es wurden %(count)d %(items)s erfolgreich geändert."
@@ -284,19 +362,19 @@ msgstr "Es wurden %(count)d %(items)s erfolgreich geändert."
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr "Als Lesezeichen abspeichern"
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr "Einfaches Diagramm der Modelle anzeigen."
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr "%s Diagramme"
@@ -344,27 +422,28 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "Einzelheiten von %s"
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr "Eingabe %s"
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s bezeichnetes Objekt mit dem Primärschlüssel %(key)r existiert nicht."
+msgstr ""
+"%(name)s bezeichnetes Objekt mit dem Primärschlüssel %(key)r existiert nicht."
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Seite"
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr "Fehlerhaftes Filtern: %s"
@@ -389,11 +468,11 @@ msgstr "Download"
msgid "Change:"
msgstr "Änderung:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr "Tabelle"
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr "Thumbnails"
@@ -401,20 +480,26 @@ msgstr "Thumbnails"
msgid "Forgotten your password or username?"
msgstr "Haben Sie Ihr Passwort oder den Benutzernamen vergessen?"
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr "Erstelle %s neu"
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Abhängige Objekte"
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr "Suche %s"
+#: plugins/relfield.py:67
+#, fuzzy, python-format
+#| msgid "Select Date"
+msgid "Select %s"
+msgstr "Datum wählen"
+
#: plugins/themes.py:47
msgid "Default"
msgstr "Standard"
@@ -431,98 +516,104 @@ msgstr "Bootstrap2"
msgid "Bootstrap 2.x theme"
msgstr "Bootstrap 2.x Thema"
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "Hinzufügen %s"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr "Erste Version."
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr "Version ändern."
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr "Version zurückfallen."
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr "Version wiederherstellen."
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr "Gelöschte %(verbose_name)s."
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "Verlauf"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr "Gelöschte %(name)s wiederherstellen"
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr "Änderungen: %s"
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "Es müssen zwei Versionen ausgewählt sein."
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Bitte wählen Sie zwei unterschiedliche Versionen aus."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr "Aktuell: %s"
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr "Auf %s zurückfallen"
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr "Stelle %s wieder her"
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Seite konnte nicht gefunden werden"
#: templates/xadmin/404.html:10
msgid "We're sorry, but the requested page could not be found."
-msgstr "Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
+msgstr ""
+"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -533,7 +624,7 @@ msgstr "Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werde
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Startseite"
@@ -550,20 +641,13 @@ msgid "Server Error (500)"
msgstr "Server Fehler (500)"
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Es ist ein Fehler aufgetreten. Der Siteadmin wurde via E-Mail informiert und wird sich in Kürze um die Behebung des Fehlers kümmern. Wir danken für Ihre Geduld."
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "Willkommen,"
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Abmelden"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "Sie haben nicht die notwendige Berechtigung etwas zu ändern."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Es ist ein Fehler aufgetreten. Der Siteadmin wurde via E-Mail informiert und "
+"wird sich in Kürze um die Behebung des Fehlers kümmern. Wir danken für Ihre "
+"Geduld."
#: templates/xadmin/auth/password_reset/complete.html:11
#: templates/xadmin/auth/password_reset/done.html:11
@@ -583,8 +667,12 @@ msgid "Enter new password"
msgstr "Geben Sie Ihr neues Passwort ein."
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "Bitte geben Sie Ihr neues Passwort zweimal ein, damit die Identität festgestellt werden kann."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Bitte geben Sie Ihr neues Passwort zweimal ein, damit die Identität "
+"festgestellt werden kann."
#: templates/xadmin/auth/password_reset/confirm.html:19
msgid "Change my password"
@@ -595,16 +683,27 @@ msgid "Password reset unsuccessful"
msgstr "Passwort zurücksetzen fehlgeschlagen"
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "Der Passwort-zurücksetzen Link war ungültig, weil dieser möglicherweise schon verwendet wurde. Bitte fordern Sie einen neuen Link an."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+"Der Passwort-zurücksetzen Link war ungültig, weil dieser möglicherweise "
+"schon verwendet wurde. Bitte fordern Sie einen neuen Link an."
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Wir haben Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passwortes an die Adresse geschickt, die Sie uns übermittelt haben. Sie sollten sie in Kürze erhalten."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Wir haben Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres "
+"Passwortes an die Adresse geschickt, die Sie uns übermittelt haben. Sie "
+"sollten sie in Kürze erhalten."
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -629,8 +728,13 @@ msgid "Password reset"
msgstr "Passwort zurücksetzen"
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
-msgstr "Haben Sie Ihr Passwort vergessen? Geben Sie unten Ihre E-Mail Adresse ein und wir werden Ihnen eine Nachricht mit Anweisungen schicken, wie ein Neues erstellt wird."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Haben Sie Ihr Passwort vergessen? Geben Sie unten Ihre E-Mail Adresse ein "
+"und wir werden Ihnen eine Nachricht mit Anweisungen schicken, wie ein Neues "
+"erstellt wird."
#: templates/xadmin/auth/password_reset/form.html:25
msgid "E-mail address:"
@@ -641,8 +745,12 @@ msgid "Reset my password"
msgstr "Passwort zurücksetzen"
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Bitte tragen Sie einen Benutzernamen und Passwort ein. Anschließend können Sie weitere Benutzerinformationen bearbeiten."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Bitte tragen Sie einen Benutzernamen und Passwort ein. Anschließend können "
+"Sie weitere Benutzerinformationen bearbeiten."
#: templates/xadmin/auth/user/add_form.html:8
msgid "Enter a username and password."
@@ -664,21 +772,36 @@ msgstr "Geben Sie Ihr neues Passwort ein."
#: templates/xadmin/auth/user/change_password.html:40
#, python-format
msgid "Enter a new password for the user %(username)s."
-msgstr "Vergeben Sie ein neues Passwort für den Benutzer %(username)s."
+msgstr ""
+"Vergeben Sie ein neues Passwort für den Benutzer %(username)s"
+"strong>."
+
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr "Willkommen,"
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Abmelden"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "Sie haben nicht die notwendige Berechtigung etwas zu ändern."
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr "Themeneinstellungen"
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr "Suchen"
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr "Hinzufügen"
@@ -696,7 +819,7 @@ msgstr "Nächstes"
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr "Speichern"
@@ -742,8 +865,8 @@ msgstr "Klicken Sie hier, um alle Objekte über alle Seiten hinweg auszuwählen.
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Alles auswählen %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "Alles auswählen %(total_count)s %(model_name)s"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
msgid "Clear selection"
@@ -756,26 +879,27 @@ msgstr "Diagramme"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr "Exportieren"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr "Export mit Tabellenkopf."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr "Exportieren mit Formatierung."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr "Komplette Daten exportieren."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr "Schließen"
@@ -792,8 +916,12 @@ msgstr "Säubern"
msgid "Every %(t)s seconds"
msgstr "Alle %(t)s Sekunden"
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr "Null"
@@ -831,7 +959,7 @@ msgstr "Tag"
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr "Anwenden"
@@ -852,7 +980,13 @@ msgstr "Von"
msgid "To"
msgstr "Bis"
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+#, fuzzy
+#| msgid "Select Date"
+msgid "Select"
+msgstr "Datum wählen"
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr "Entfernen"
@@ -885,7 +1019,7 @@ msgid "Choose"
msgstr "Wähle"
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr "Entferne"
@@ -907,7 +1041,7 @@ msgstr "Alles anzeigen"
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr "Speichern..."
@@ -924,7 +1058,7 @@ msgid "Save and continue editing"
msgstr "Speichern und weiter bearbeiten"
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr "Löschen"
@@ -955,7 +1089,10 @@ msgid "Add Widget"
msgstr "Widget hinzufügen"
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -997,17 +1134,24 @@ msgstr "Bearbeiten"
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1026,17 +1170,24 @@ msgstr "Mehrere Objekte löschen"
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1061,7 +1212,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1088,7 +1241,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1147,127 +1301,154 @@ msgstr ""
msgid "Quick Add"
msgstr "Schnelles Hinzufügen"
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr "Widget Optionen"
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr "Änderungen speichern"
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr "Django Xadmin"
-#: views/dashboard.py:185
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
msgid "Widget ID"
msgstr "Widget ID"
-#: views/dashboard.py:186
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr "Widget Titel"
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr "Html Inhalt"
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr "Zielmodell"
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
-msgstr "Schnellauswahlbutton Widget, zum schnellen Öffnen einer beliebigen Seite."
+msgstr ""
+"Schnellauswahlbutton Widget, zum schnellen Öffnen einer beliebigen Seite."
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr "Schnellauswahl Buttons"
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr "Beliebige Objektliste Widget."
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr "Fügen Sie ein beliebiges Modell Objekt Widget hinzu."
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr "Armaturentafel"
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr "%s Armaturentafel"
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr "Andere Felder"
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr "%s Einzelheiten"
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Ändern %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt."
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr "Sie können es trotzdem nochmals bearbeiten."
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr "Sie können unten ein weiteres %s hinzufügen."
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Ändern %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, fuzzy, python-format
msgid "The %s was changed successfully."
msgstr "Passwort erfolgreich geändert."
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr "Datenbankfehler"
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr "%s Liste"
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr "Aufsteigend sortieren"
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr "Absteigend sortieren"
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr "Sortierung abbrechen"
#: views/website.py:16
msgid "Main Dashboard"
msgstr "Hauptübersicht"
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Jetzt"
diff --git a/xadmin/locale/en/LC_MESSAGES/django.mo b/xadmin/locale/en/LC_MESSAGES/django.mo
index 8b93a2104..46394b0a4 100644
Binary files a/xadmin/locale/en/LC_MESSAGES/django.mo and b/xadmin/locale/en/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/en/LC_MESSAGES/django.po b/xadmin/locale/en/LC_MESSAGES/django.po
index df836c5f6..8f291d5b1 100644
--- a/xadmin/locale/en/LC_MESSAGES/django.po
+++ b/xadmin/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,52 +18,62 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=1;\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr ""
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr ""
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr ""
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr ""
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr ""
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr ""
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr ""
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr ""
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr ""
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
msgstr ""
#: forms.py:21
@@ -75,107 +85,161 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr ""
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr ""
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr ""
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr ""
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr ""
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr ""
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr ""
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: models.py:165
+msgid "log entries"
msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr ""
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr ""
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr ""
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr ""
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] ""
msgstr[1] ""
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr ""
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -243,21 +307,21 @@ msgstr ""
msgid "Permission Name"
msgstr ""
-#: plugins/auth.py:159
+#: plugins/auth.py:167
#, fuzzy
msgid "Change Password"
msgstr "Changed Password"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr ""
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr ""
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -272,7 +336,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -282,19 +346,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -340,27 +404,27 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr ""
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr ""
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -385,11 +449,11 @@ msgstr ""
msgid "Change:"
msgstr ""
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -397,20 +461,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr ""
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr ""
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -427,88 +496,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr ""
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr ""
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr ""
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr ""
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr ""
@@ -516,9 +589,10 @@ msgstr ""
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -529,7 +603,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr ""
@@ -546,19 +620,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr ""
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -579,7 +643,9 @@ msgid "Enter new password"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:19
@@ -591,16 +657,22 @@ msgid "Password reset unsuccessful"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
msgstr ""
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -625,7 +697,9 @@ msgid "Password reset"
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -637,7 +711,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -662,19 +738,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr ""
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -692,7 +781,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -738,7 +827,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -752,26 +841,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -788,8 +878,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -827,7 +921,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -848,7 +942,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -881,7 +979,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -903,7 +1001,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -920,7 +1018,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -951,7 +1049,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -993,17 +1094,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1022,17 +1130,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1057,7 +1172,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1083,7 +1200,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1142,127 +1260,152 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+msgid "Changed %s."
+msgstr "Changed Password"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr ""
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr ""
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""
diff --git a/xadmin/locale/es_MX/LC_MESSAGES/django.mo b/xadmin/locale/es_MX/LC_MESSAGES/django.mo
index af31b6018..4044840c1 100644
Binary files a/xadmin/locale/es_MX/LC_MESSAGES/django.mo and b/xadmin/locale/es_MX/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/es_MX/LC_MESSAGES/django.po b/xadmin/locale/es_MX/LC_MESSAGES/django.po
index fe3fab7e2..62ed01107 100644
--- a/xadmin/locale/es_MX/LC_MESSAGES/django.po
+++ b/xadmin/locale/es_MX/LC_MESSAGES/django.po
@@ -14,65 +14,78 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-05-12 18:45+0000\n"
"Last-Translator: sacrac \n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xadmin/language/es_MX/)\n"
+"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xadmin/"
+"language/es_MX/)\n"
"Language: es_MX\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Todo"
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Sí"
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "No"
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr "Desconocido"
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr "Cualquier fecha"
-#: filters.py:266
+#: filters.py:268
#, fuzzy
msgid "Has date"
msgstr "Cualquier fecha"
-#: filters.py:269
+#: filters.py:271
#, fuzzy
msgid "Has no date"
msgstr "Cualquier fecha"
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Hoy"
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr "Pasados 7 días"
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr "Este mes"
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr "Este año"
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "Por favor, introduzca el nombre de usuario y contraseña correctos de su cuenta. Note que ambos campos son sensibles a mayúsculas y minúsculas."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Por favor, introduzca el nombre de usuario y contraseña correctos de su "
+"cuenta. Note que ambos campos son sensibles a mayúsculas y minúsculas."
#: forms.py:21
msgid "Please log in again, because your session has expired."
@@ -81,110 +94,175 @@ msgstr "Por favor, ingrese de nuevo, debido a que su sesión ha caducado."
#: forms.py:41
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Tu dirección de correo no es tu nombre de usuario. Prueba '%s' nuevamente."
+msgstr ""
+"Tu dirección de correo no es tu nombre de usuario. Prueba '%s' nuevamente."
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Titulo"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr "Nombre de Url"
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "Cadena de consulta"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr "Es compartido"
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Marcador"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Marcadores"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr "Configuración llave"
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr "Configuración de contenidos"
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr "Configuración del usuario"
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr "Configuraciones de los usuarios"
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Página"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Tipo de Widget"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Parametros del Widget"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr "Widget del Usuario"
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr "Widgets del Usuario"
-#: widgets.py:48
-msgid "Now"
-msgstr "Ahora"
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Fecha/hora"
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Cambiar %s"
+
+#: models.py:164
+#, fuzzy
+#| msgid "log in"
+msgid "log entry"
+msgstr "Iniciar sesión"
+
+#: models.py:165
+msgid "log entries"
+msgstr ""
+
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, fuzzy, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Cambiar multiples objetos"
-#: plugins/actions.py:54
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Objetos relacionados"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Borrar selección %(verbose_name_plural)s"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Correctamente eliminado %(count)d %(items)s."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Correctamente eliminado %(count)d %(items)s."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "No se puede eliminar %(name)s"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Esta seguro?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] "%(total_count)s seleccionados"
msgstr[1] "Todos los %(total_count)s seleccionados"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "0 de %(cnt)s seleccionado"
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
-msgstr "Los articulos deben de ser seleccionados en orden para realizar la acción. No existen artículos que han cambiado"
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Los articulos deben de ser seleccionados en orden para realizar la acción. "
+"No existen artículos que han cambiado"
#: plugins/aggregation.py:14
msgid "Min"
@@ -252,21 +330,21 @@ msgstr "Estados"
msgid "Permission Name"
msgstr "Permisos"
-#: plugins/auth.py:159
+#: plugins/auth.py:167
#, fuzzy
msgid "Change Password"
msgstr "Cambiar Contraseña"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Cambiar contraseña: %s"
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Contraseña cambiada correctamente"
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -282,7 +360,7 @@ msgstr "Historial de cambios: %s"
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr "Cambio de grupo seleccionado %(verbose_name_plural)s"
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, fuzzy, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr "Correctamente eliminado %(count)d %(items)s."
@@ -292,20 +370,22 @@ msgstr "Correctamente eliminado %(count)d %(items)s."
msgid "Batch change %s"
msgstr "Cambiar %s"
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
#, fuzzy
msgid "bookmark"
msgstr "Marcador"
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
-msgstr "Widget de marcador, puede mostrar datos de la lista de favoritos del usuario en el widget."
+msgstr ""
+"Widget de marcador, puede mostrar datos de la lista de favoritos del usuario "
+"en el widget."
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr "Mostrar simple grafos para los modelos"
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr "%s Graficos"
@@ -353,27 +433,27 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "Detalles de %s"
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr "Entre %s"
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "%(name)s el objeto con la llave primaria %(key)r no existe."
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Hoja"
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -398,11 +478,11 @@ msgstr "Descargar"
msgid "Change:"
msgstr "Cambiar:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -410,20 +490,26 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr "¿Olvidó su contraseña o nombre de usuario?"
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Objetos relacionados"
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr "Buscar %s"
+#: plugins/relfield.py:67
+#, fuzzy, python-format
+#| msgid "Select Date"
+msgid "Select %s"
+msgstr "Seleccionar Fecha"
+
#: plugins/themes.py:47
#, fuzzy
msgid "Default"
@@ -443,88 +529,96 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr "Tema bootstrap por defecto"
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "Añadir %s"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr "Versión inicial."
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr "Cambiar la versión."
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr "Revertir la versión."
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr "Recuperar versión"
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr "Borrado %(verbose_name)s."
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr "Recuperar"
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "Historico"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr "Recuperar borrado %(name)s"
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr "Historial de cambios: %s"
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "Debe seleccionar dos versiones."
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Por favor seleccione dos versiones diferente."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr "Actual: %s"
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr "Revertir %s"
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
-msgstr "El %(model)s \"%(name)s\" se revirtió con éxito. Puede editarlo de nuevo a continuación."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+"El %(model)s \"%(name)s\" se revirtió con éxito. Puede editarlo de nuevo a "
+"continuación."
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr "Recuperar %s"
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
-msgstr "El %(model)s \"%(name) s\" se recuperó con éxito. Puede editarlo de nuevo a continuación."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
+msgstr ""
+"El %(model)s \"%(name) s\" se recuperó con éxito. Puede editarlo de nuevo a "
+"continuación."
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Pagina no encontrada"
@@ -532,9 +626,10 @@ msgstr "Pagina no encontrada"
msgid "We're sorry, but the requested page could not be found."
msgstr "Lo sentimos pero la pagina que usted solicita no se encuentra."
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -545,7 +640,7 @@ msgstr "Lo sentimos pero la pagina que usted solicita no se encuentra."
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Inicio"
@@ -562,20 +657,13 @@ msgid "Server Error (500)"
msgstr "Error en el servidor (500)"
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Ha habido un error. Se nos ha informado a los administradores del sitio a través de un correo electrónico y debe repararse en la breve. Gracias por su paciencia."
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "Bienvenidos,"
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Salir"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada. "
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Ha habido un error. Se nos ha informado a los administradores del sitio a "
+"través de un correo electrónico y debe repararse en la breve. Gracias por su "
+"paciencia."
#: templates/xadmin/auth/password_reset/complete.html:11
#: templates/xadmin/auth/password_reset/done.html:11
@@ -595,8 +683,12 @@ msgid "Enter new password"
msgstr "Escriba la nueva contraseña"
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "Introduzca su nueva contraseña dos veces para que podamos verificar que la ha escrito correctamente."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Introduzca su nueva contraseña dos veces para que podamos verificar que la "
+"ha escrito correctamente."
#: templates/xadmin/auth/password_reset/confirm.html:19
msgid "Change my password"
@@ -607,17 +699,31 @@ msgid "Password reset unsuccessful"
msgstr "Restablecimiento de contraseña sin éxito"
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "El enlace de restablecimiento de contraseña no es válida, posiblemente debido a que ya se ha utilizado. Por favor, solicite un nuevo restablecimiento de contraseña."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+"El enlace de restablecimiento de contraseña no es válida, posiblemente "
+"debido a que ya se ha utilizado. Por favor, solicite un nuevo "
+"restablecimiento de contraseña."
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Nosotro te hemos enviado por correo electrónico las instrucciones para configurar la contraseña a la dirección de correo electrónico que ha enviado. Usted debe recibirlo en breve momento."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Nosotro te hemos enviado por correo electrónico las instrucciones para "
+"configurar la contraseña a la dirección de correo electrónico que ha "
+"enviado. Usted debe recibirlo en breve momento."
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
-msgstr "Tu has recibido este correo debido a que has solicitado restablecimiento de contraseña para tu cuenta de usuario en %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Tu has recibido este correo debido a que has solicitado restablecimiento de "
+"contraseña para tu cuenta de usuario en %(site_name)s."
#: templates/xadmin/auth/password_reset/email.html:4
msgid "Please go to the following page and choose a new password:"
@@ -641,8 +747,12 @@ msgid "Password reset"
msgstr "restablecimiento de contraseña"
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
-msgstr "¿Olvidaste tu contraseña? Escribe tu dirección de e-mail debajo, y le enviaremos un e-mail para el establecimiento de una nueva."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"¿Olvidaste tu contraseña? Escribe tu dirección de e-mail debajo, y le "
+"enviaremos un e-mail para el establecimiento de una nueva."
#: templates/xadmin/auth/password_reset/form.html:25
msgid "E-mail address:"
@@ -653,8 +763,12 @@ msgid "Reset my password"
msgstr "Cambiar contraseña"
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Primero, ingrese usuario y contraseña. Luego, sera capaz de editar mas opciones de usuario."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Primero, ingrese usuario y contraseña. Luego, sera capaz de editar mas "
+"opciones de usuario."
#: templates/xadmin/auth/user/add_form.html:8
msgid "Enter a username and password."
@@ -676,21 +790,35 @@ msgstr "Ingresa una nueva contraseña"
#: templates/xadmin/auth/user/change_password.html:40
#, python-format
msgid "Enter a new password for the user %(username)s."
-msgstr "Introduzca una nueva contraseña para el usuario %(username)s"
+msgstr ""
+"Introduzca una nueva contraseña para el usuario %(username)s"
+
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr "Bienvenidos,"
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Salir"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "No tiene permiso para editar nada. "
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr "Temas"
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr "Buscar"
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr "Agregar"
@@ -708,7 +836,7 @@ msgstr "Próximo paso"
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr "Guardar"
@@ -750,12 +878,13 @@ msgstr "Limpiar Filtros"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
msgid "Click here to select the objects across all pages"
-msgstr "Haz clic aquí para seleccionar los objetos a través de todas las páginas"
+msgstr ""
+"Haz clic aquí para seleccionar los objetos a través de todas las páginas"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccionar todo %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "Seleccionar todo %(total_count)s %(model_name)s"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
msgid "Clear selection"
@@ -768,26 +897,27 @@ msgstr "Graficos"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr "Exportar"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr "Exportar con la cabecera de la tabla."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr "Exportar con formato"
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr "Exportar todos los datos."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr "Cerrar"
@@ -804,8 +934,12 @@ msgstr "Limpiar Refrescar"
msgid "Every %(t)s seconds"
msgstr "Por %(t)s segundos"
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr "Nulo"
@@ -843,7 +977,7 @@ msgstr "día"
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr "Aplicar"
@@ -864,7 +998,13 @@ msgstr "De"
msgid "To"
msgstr "Para"
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+#, fuzzy
+#| msgid "Select Date"
+msgid "Select"
+msgstr "Seleccionar Fecha"
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr "Limpiar"
@@ -897,7 +1037,7 @@ msgid "Choose"
msgstr "Elegir"
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr "Eliminar"
@@ -919,7 +1059,7 @@ msgstr "Mostrar todos"
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -936,7 +1076,7 @@ msgid "Save and continue editing"
msgstr "Guardar y continuar editando"
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr "Borrar"
@@ -967,8 +1107,14 @@ msgid "Add Widget"
msgstr "Añadir Widget"
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Algo está mal con tu instalación de base de datos. Asegúrese de que las tablas de la bases de datos se han creado apropiadamente, y asegúrese de que la base de datos puede ser leído por el usuario apropiado"
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Algo está mal con tu instalación de base de datos. Asegúrese de que las "
+"tablas de la bases de datos se han creado apropiadamente, y asegúrese de que "
+"la base de datos puede ser leído por el usuario apropiado"
#: templates/xadmin/views/logged_out.html:16
msgid "Logout Success"
@@ -1011,18 +1157,32 @@ msgstr "Editar."
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Eliminando los %(verbose_name)s '%(escaped_object)s terminaría eliminando objetos relacionados, pero su cuenta no tiene permisos para eliminar los siguientes tipo de objetos:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Eliminando los %(verbose_name)s '%(escaped_object)s terminaría eliminando "
+"objetos relacionados, pero su cuenta no tiene permisos para eliminar los "
+"siguientes tipo de objetos:"
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
-msgstr "Eliminando los %(verbose_name)s '%(escaped_object)s requeriría eliminar los siguientes objetos relacionas protegidos:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
+msgstr ""
+"Eliminando los %(verbose_name)s '%(escaped_object)s requeriría eliminar los "
+"siguientes objetos relacionas protegidos:"
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "¿Estas seguro de querer eliminar los %(verbose_name)s \"%(escaped_object)s\" ? Todos los siguientes artículos relacionados serán eliminados:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"¿Estas seguro de querer eliminar los %(verbose_name)s \"%(escaped_object)s"
+"\" ? Todos los siguientes artículos relacionados serán eliminados:"
#: templates/xadmin/views/model_delete_confirm.html:34
#: templates/xadmin/views/model_delete_selected_confirm.html:49
@@ -1041,18 +1201,32 @@ msgstr "Eliminar múltiples objetos."
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Eliminando los %(objects_name)s terminaría eliminando objetos relacionados, pero su cuenta no tiene permisos para eliminar los siguientes tipo de objetos:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Eliminando los %(objects_name)s terminaría eliminando objetos relacionados, "
+"pero su cuenta no tiene permisos para eliminar los siguientes tipo de "
+"objetos:"
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
-msgstr "Eliminando los %(objects_name)s seleccionados terminaria emilinando los siguientes objetos relacionados protegidos:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Eliminando los %(objects_name)s seleccionados terminaria emilinando los "
+"siguientes objetos relacionados protegidos:"
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
-msgstr "¿Estas seguro de querer borrar los %(objects_name)s seleccionados? Todos los siguientes objetos y sus artículos relacionados serán eliminados:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"¿Estas seguro de querer borrar los %(objects_name)s seleccionados? Todos los "
+"siguientes objetos y sus artículos relacionados serán eliminados:"
#: templates/xadmin/views/model_history.html:26
msgid "Diff"
@@ -1076,8 +1250,12 @@ msgid "Diff Select Versions"
msgstr "Seleccionar diferentes versiones"
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Este objeto no tiene un historial de cambios, Es probable que no se haya añadido a través de este sitio de admin.|"
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Este objeto no tiene un historial de cambios, Es probable que no se haya "
+"añadido a través de este sitio de admin.|"
#: templates/xadmin/views/model_list.html:29
#, python-format
@@ -1100,11 +1278,16 @@ msgstr "Lista vacia"
#: templates/xadmin/views/recover_form.html:20
msgid "Press the recover button below to recover this version of the object."
-msgstr "Presione el botón de recuperación abajo para recuperar esta versión del objeto."
+msgstr ""
+"Presione el botón de recuperación abajo para recuperar esta versión del "
+"objeto."
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
-msgstr "Selecciona una fecha de la lista de abajo para recuperar una versión eliminada de un objeto."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
+msgstr ""
+"Selecciona una fecha de la lista de abajo para recuperar una versión "
+"eliminada de un objeto."
#: templates/xadmin/views/recover_list.html:39
msgid "There are no deleted objects to recover."
@@ -1144,7 +1327,8 @@ msgstr "Revertir %(verbose_name)s"
#: templates/xadmin/views/revision_form.html:21
msgid "Press the revert button below to revert to this version of the object."
-msgstr "Presiona el botón revertir de abajo para revertir a esta versión del objeto."
+msgstr ""
+"Presiona el botón revertir de abajo para revertir a esta versión del objeto."
#: templates/xadmin/views/revision_form.html:27
msgid "Revert this revision"
@@ -1156,130 +1340,154 @@ msgstr "Éxito"
#: templates/xadmin/widgets/addform.html:14
msgid "Add success, click edit to edit."
-msgstr "Agregado exitosa mente, presiona edit para editar."
+msgstr ""
+"Agregado exitosa mente, presiona edit para editar."
#: templates/xadmin/widgets/addform.html:17
msgid "Quick Add"
msgstr "Agregar rápidamente."
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr "Opciones del Widget"
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr "Guardar cambios"
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr "Django Xadmin"
-#: views/dashboard.py:185
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
msgid "Widget ID"
msgstr "ID del Widget"
-#: views/dashboard.py:186
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr "Titulo del Widget"
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
-msgstr "Contenido html del Widget, puede escribir cualquier contenido del widget."
+msgstr ""
+"Contenido html del Widget, puede escribir cualquier contenido del widget."
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr "Contenido HTML"
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr "Modelo objeto"
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr "botón rapido del widget, abrir rápidamente cualquier página."
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr "Botones rapidos"
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr "Cualquier objeto listado en el widget"
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr "Añadir cualquier modelo de objeto al Widget."
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr "Panel de control"
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, fuzzy, python-format
msgid "%s Dashboard"
msgstr "Panel de control"
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "El %(name)s \"%(obj)s\" fue eliminado exitosa mente."
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr "Otros campos"
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr "%s Detalles"
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Cambiar %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "El %(name)s \"%(obj)s\" fue agregado exitosa mente."
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr "Puedes editarlo de nuevo abajo."
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr "Puedes agregar otro %s debajo."
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Cambiar %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "El %(name)s \"%(obj)s\" fue editado exitosa mente."
-#: views/form.py:164
+#: views/form.py:165
#, fuzzy, python-format
msgid "The %s was changed successfully."
msgstr "El %(name)s \"%(obj)s\" fue editado exitosa mente."
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr "Error de base de datos"
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr "%s Lista"
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr "Ordenar ascendente mente."
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr "Ordenar descendente mente"
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr "Cancelar ordenación"
@@ -1287,6 +1495,10 @@ msgstr "Cancelar ordenación"
msgid "Main Dashboard"
msgstr "Dashboard principal."
+#: widgets.py:48
+msgid "Now"
+msgstr "Ahora"
+
#~ msgid "Add Other %s"
#~ msgstr "Añadir otro %s"
@@ -1305,8 +1517,13 @@ msgstr "Dashboard principal."
#~ msgid "Your password was changed."
#~ msgstr "Tu contraseña fue cambiada."
-#~ msgid "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly."
-#~ msgstr "Introduzca su antigua contraseña, por el bien de la seguridad, y luego ingrese su nueva contraseña dos veces para que podamos verificar que la ha escrito correctamente."
+#~ msgid ""
+#~ "Please enter your old password, for security's sake, and then enter your "
+#~ "new password twice so we can verify you typed it in correctly."
+#~ msgstr ""
+#~ "Introduzca su antigua contraseña, por el bien de la seguridad, y luego "
+#~ "ingrese su nueva contraseña dos veces para que podamos verificar que la "
+#~ "ha escrito correctamente."
#~ msgid "Old password"
#~ msgstr "Vieja contraseña"
diff --git a/xadmin/locale/eu/LC_MESSAGES/django.mo b/xadmin/locale/eu/LC_MESSAGES/django.mo
index c785bc888..f6c51c6f2 100644
Binary files a/xadmin/locale/eu/LC_MESSAGES/django.mo and b/xadmin/locale/eu/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/eu/LC_MESSAGES/django.po b/xadmin/locale/eu/LC_MESSAGES/django.po
index 352cbcd12..61f5e85f5 100644
--- a/xadmin/locale/eu/LC_MESSAGES/django.po
+++ b/xadmin/locale/eu/LC_MESSAGES/django.po
@@ -8,63 +8,76 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: sshwsfc \n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/xadmin/language/eu/)\n"
+"Language-Team: Basque (http://www.transifex.com/projects/p/xadmin/language/"
+"eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Guztia"
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Bai"
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "Ez"
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr "Ezezaguna"
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr "Edozein data"
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Gaur"
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr "Duela 7 egun"
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr "Hilabete hau"
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr "Urte hau"
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "Mesedez sartu langile kontu baten erabiltzaile eta pasahitz egokiak. Kontuan hartu bi eremuek maiuskula eta minuskulak bereizten dituztela."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Mesedez sartu langile kontu baten erabiltzaile eta pasahitz egokiak. Kontuan "
+"hartu bi eremuek maiuskula eta minuskulak bereizten dituztela."
#: forms.py:21
msgid "Please log in again, because your session has expired."
@@ -73,110 +86,176 @@ msgstr "Mesedez hasi berriro saioa, zure uneko saioa iraungi da eta."
#: forms.py:41
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "Zure e-posta helbidea ez da zure erabiltzaile izena. Horren ordez saiatu '%s'."
+msgstr ""
+"Zure e-posta helbidea ez da zure erabiltzaile izena. Horren ordez saiatu "
+"'%s'."
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Izenburua"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr "Url Izena"
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "Kontsulta Katea"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr "Partekatua da."
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Laster-marketara gehitu"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Laster-markak"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr "Ezarpenen Gakoa"
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr "Ezarpenen Edukia"
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr "Erabiltzaile Ezarpenak"
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr "Erabiltzaile Ezarpenak"
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Orrialdea"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Widget Mota"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Widget Parametroak"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr "Erabiltzaile Widgeta"
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr "Erabiltzaile Widgetak"
-#: widgets.py:48
-msgid "Now"
-msgstr "Orain"
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Data/ordua"
-#: plugins/actions.py:54
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Aldaketa %s"
+
+#: models.py:164
+#, fuzzy
+#| msgid "log in"
+msgid "log entry"
+msgstr "hasi saioa"
+
+#: models.py:165
+msgid "log entries"
+msgstr ""
+
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Erlazionatutako Objetuak"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Aukeratutako %(verbose_name_plural)s ezabatu"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Aukeratutako %(count)d %(items)s arrakastaz ezabatuak."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Aukeratutako %(count)d %(items)s arrakastaz ezabatuak."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "Ezin izan da %(name)s ezabatu"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Ziur al zaude?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] "%(total_count)s aukeratua"
msgstr[1] "%(total_count)s guztiak aukeratuak"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "%(cnt)stik 0 aukeratuak"
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
-msgstr "Elementuren bat aukeratzea beharrezkoa da ekintza bat burutzeko. Ez da elementurik aldatu."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Elementuren bat aukeratzea beharrezkoa da ekintza bat burutzeko. Ez da "
+"elementurik aldatu."
#: plugins/aggregation.py:14
msgid "Min"
@@ -244,20 +323,20 @@ msgstr "Egoera"
msgid "Permission Name"
msgstr "Baimenak"
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr "Pasahitza Aldatu"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Pasahitza aldatu: %s"
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Pasahitza arrakastaz aldatua."
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -272,7 +351,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr "Sorta moduko Aldaketa aukeratua %(verbose_name_plural)s"
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -282,19 +361,21 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
-msgstr "Laster-marken Widgeta, erabiltzailearen laster-marka zerrenda widgetean erakutsi dezake."
+msgstr ""
+"Laster-marken Widgeta, erabiltzailearen laster-marka zerrenda widgetean "
+"erakutsi dezake."
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr "Erabili modeluen diagrama sinplea."
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr "%s Diagrama"
@@ -342,27 +423,27 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "%sren xehetasunak"
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr "Sartu %s"
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "Ez da %(key)r eremua nagusitzat duen %(name)srik."
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Xafla"
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -387,11 +468,11 @@ msgstr "Deskargatu"
msgid "Change:"
msgstr "Aldatu:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -399,20 +480,26 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr "Zure pasahitza edo erabiltzailea ahaztu duzu?"
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Erlazionatutako Objetuak"
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr "Bilatu %s"
+#: plugins/relfield.py:67
+#, fuzzy, python-format
+#| msgid "Select Date"
+msgid "Select %s"
+msgstr "Data Aukeratu"
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -429,88 +516,96 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "%s gehitu"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr "Hasierako bertsioa."
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr "Bertsioa aldatu."
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr "Aurreko bertsiora itzuli."
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr "Bertsioa berreskuratu."
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr "%(verbose_name)s ezabatua."
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr "Berreskuratu"
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "Historiala"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr "Ezabatutako %(name)sa berreskuratu"
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr "Historiala aldatu: %s"
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "Bi bertsio aukeratu behar dira."
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Mesedez aukeratu bi bertsio ezberdin."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr "Unekoa: %s"
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr "%s aurreko bertsiora itzuli"
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
-msgstr "\"%(name)s\" %(model)sa aurreko bertsiora arrakastaz itzularazi da. Azpian berriro editatu dezakezu."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+"\"%(name)s\" %(model)sa aurreko bertsiora arrakastaz itzularazi da. Azpian "
+"berriro editatu dezakezu."
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr "%s berreskuratu"
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
-msgstr "\"%(name)s\" %(model)sa arrakastaz berreskuratu da. Azpian berriro editatu dezakezu."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
+msgstr ""
+"\"%(name)s\" %(model)sa arrakastaz berreskuratu da. Azpian berriro editatu "
+"dezakezu."
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Orria ez da aurkitu"
@@ -518,9 +613,10 @@ msgstr "Orria ez da aurkitu"
msgid "We're sorry, but the requested page could not be found."
msgstr "Sentitzen dugu baina eskatutako orria ezin izan da aurkitu."
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -531,7 +627,7 @@ msgstr "Sentitzen dugu baina eskatutako orria ezin izan da aurkitu."
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Hasiera"
@@ -548,20 +644,12 @@ msgid "Server Error (500)"
msgstr "Zerbitzariaren errorea "
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Errore bat egon da. Eposta bidez bidali zaio webgunearen kudeatzaileari eta laister konpondu beharko litzake. Milesker zure pazientziagatik."
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "Ongietorri,"
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Saioa amaitu"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "Ez daukazu ezer editatzeko baimenik."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Errore bat egon da. Eposta bidez bidali zaio webgunearen kudeatzaileari eta "
+"laister konpondu beharko litzake. Milesker zure pazientziagatik."
#: templates/xadmin/auth/password_reset/complete.html:11
#: templates/xadmin/auth/password_reset/done.html:11
@@ -581,8 +669,11 @@ msgid "Enter new password"
msgstr "Pasahitz berria idatzi"
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "Mesedez idatzi zure pasahitz berria bi aldiz ongi idatzi duzun egiaztatzeko."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Mesedez idatzi zure pasahitz berria bi aldiz ongi idatzi duzun egiaztatzeko."
#: templates/xadmin/auth/password_reset/confirm.html:19
msgid "Change my password"
@@ -593,17 +684,29 @@ msgid "Password reset unsuccessful"
msgstr "Pasahitzaren berrezartzea gaizki joan da"
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "Pasahitzaren berrezartze esteka baliogabea zen, ziur aski iadanik erabilia izan delak. Mesedez, eskatu pasahitzaren berrezartze berri bat."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+"Pasahitzaren berrezartze esteka baliogabea zen, ziur aski iadanik erabilia "
+"izan delak. Mesedez, eskatu pasahitzaren berrezartze berri bat."
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Eposta biez zure pasahitza ezartzeko argibideak bidali dizkizugu eman diguzun eposta helbidera. Laister jaso beharko zenituzke."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Eposta biez zure pasahitza ezartzeko argibideak bidali dizkizugu eman "
+"diguzun eposta helbidera. Laister jaso beharko zenituzke."
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
-msgstr "%(site_name)sen zure erabiltzailearen pasahitzaren berrezarpen bat eskatu duzulako ari zera eposta hau jasotzen."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"%(site_name)sen zure erabiltzailearen pasahitzaren berrezarpen bat eskatu "
+"duzulako ari zera eposta hau jasotzen."
#: templates/xadmin/auth/password_reset/email.html:4
msgid "Please go to the following page and choose a new password:"
@@ -627,8 +730,12 @@ msgid "Password reset"
msgstr "Pasahitza berrezarri"
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
-msgstr "Pasahitza ahaztu duzu? Idatzi zure eposta helbidea behean eta berri bat ezartzeko argibideak bidaliko dizkizugu."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Pasahitza ahaztu duzu? Idatzi zure eposta helbidea behean eta berri bat "
+"ezartzeko argibideak bidaliko dizkizugu."
#: templates/xadmin/auth/password_reset/form.html:25
msgid "E-mail address:"
@@ -639,8 +746,12 @@ msgid "Reset my password"
msgstr "Nire pasahitza berrezarri"
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Lehendabizi, erabiltzaile eta pasahitz bat sartu. Ondoren, erabiltzaile aukera gehiago editatzeko gai izango zara."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Lehendabizi, erabiltzaile eta pasahitz bat sartu. Ondoren, erabiltzaile "
+"aukera gehiago editatzeko gai izango zara."
#: templates/xadmin/auth/user/add_form.html:8
msgid "Enter a username and password."
@@ -662,21 +773,35 @@ msgstr "Zure pasahitz berria sartu."
#: templates/xadmin/auth/user/change_password.html:40
#, python-format
msgid "Enter a new password for the user %(username)s."
-msgstr "%(username)s erabiltzailearentzat pasahitz berri bat sartu."
+msgstr ""
+"%(username)s erabiltzailearentzat pasahitz berri bat sartu."
+
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr "Ongietorri,"
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Saioa amaitu"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "Ez daukazu ezer editatzeko baimenik."
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr "Itsura-gaiak"
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr "Bilatu"
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr "Gehitu"
@@ -694,7 +819,7 @@ msgstr "Ondo pausua"
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr "Gorde"
@@ -740,8 +865,8 @@ msgstr "Klikatu hemen orrialde guztiko objetuak aukeratzeko"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Aukeratu %(total_count)s %(module_name)sak"
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "Aukeratu %(total_count)s %(model_name)sak"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
msgid "Clear selection"
@@ -754,26 +879,27 @@ msgstr "Diagramak"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr "Esportatu"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr "Esportatu taularen goiburuarekin."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr "Formatuarekin esportatu."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr "Data guztiak esportatu."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr "Itxi"
@@ -790,8 +916,12 @@ msgstr "Garbitu Freskatzea"
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr "Null"
@@ -829,7 +959,7 @@ msgstr "eguna"
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr "Aplikatu"
@@ -850,7 +980,13 @@ msgstr "Nork"
msgid "To"
msgstr "Nori"
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+#, fuzzy
+#| msgid "Select Date"
+msgid "Select"
+msgstr "Data Aukeratu"
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr "Garbitu"
@@ -883,7 +1019,7 @@ msgid "Choose"
msgstr "Aukeratu"
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr "Ezabatu"
@@ -905,7 +1041,7 @@ msgstr "Guztia erakutsi"
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -922,7 +1058,7 @@ msgid "Save and continue editing"
msgstr "Gorde eta editatzen jarraitu"
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr "Ezabatu"
@@ -953,8 +1089,14 @@ msgid "Add Widget"
msgstr "Widgeta Gehitu"
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Zerbait txarto dago zure datubasearen instalazioarekin. Ziurtatu beharrezko datubase taulak sortuak izan direla eta datubasea erabiltzaile egokiak irakurri dezakela."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Zerbait txarto dago zure datubasearen instalazioarekin. Ziurtatu beharrezko "
+"datubase taulak sortuak izan direla eta datubasea erabiltzaile egokiak "
+"irakurri dezakela."
#: templates/xadmin/views/logged_out.html:16
msgid "Logout Success"
@@ -995,18 +1137,32 @@ msgstr "Editatu"
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "'%(escaped_object)s' %(verbose_name)sa ezabatzeak erlazionatutako beste objetu batzuk ezabatuzko lituzke baina zure kontuak ez dauzka ondorengo objetu motak ezabatzeko baimenik:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"'%(escaped_object)s' %(verbose_name)sa ezabatzeak erlazionatutako beste "
+"objetu batzuk ezabatuzko lituzke baina zure kontuak ez dauzka ondorengo "
+"objetu motak ezabatzeko baimenik:"
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
-msgstr "'%(escaped_object)s' %(verbose_name)sa ezabatzeak ondorengo babestutako erlazionatutako objetuak ezabatuko lituzke:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
+msgstr ""
+"'%(escaped_object)s' %(verbose_name)sa ezabatzeak ondorengo babestutako "
+"erlazionatutako objetuak ezabatuko lituzke:"
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Ziur al zaude \"%(escaped_object)s\" %(verbose_name)sa ezabatu nahi duzula? Ondorengo erlazionatutako objetuak ezabatuko lirateke:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Ziur al zaude \"%(escaped_object)s\" %(verbose_name)sa ezabatu nahi duzula? "
+"Ondorengo erlazionatutako objetuak ezabatuko lirateke:"
#: templates/xadmin/views/model_delete_confirm.html:34
#: templates/xadmin/views/model_delete_selected_confirm.html:49
@@ -1024,18 +1180,32 @@ msgstr "Bizpahiru objetu ezabatu"
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Aukeratutako %(objects_name)s objetua ezabatzeak erlazionatutako objetuak ezabatuko lituzke, baina zure kontuak ez dauzka ondorengo objetu motak ezabatzeko baimenik:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Aukeratutako %(objects_name)s objetua ezabatzeak erlazionatutako objetuak "
+"ezabatuko lituzke, baina zure kontuak ez dauzka ondorengo objetu motak "
+"ezabatzeko baimenik:"
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
-msgstr "Aukeratutako %(objects_name)s objetua ezabatzeak ondorengo objetuak ezabatuko lituzke:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Aukeratutako %(objects_name)s objetua ezabatzeak ondorengo objetuak "
+"ezabatuko lituzke:"
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
-msgstr "Ziur zaude aukeratutako %(objects_name)s ezabatu nahi duzula? Ondorengo objetuak eta haiekin erlazionatuta daudenak ezabatuak izango dira:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Ziur zaude aukeratutako %(objects_name)s ezabatu nahi duzula? Ondorengo "
+"objetuak eta haiekin erlazionatuta daudenak ezabatuak izango dira:"
#: templates/xadmin/views/model_history.html:26
msgid "Diff"
@@ -1059,8 +1229,12 @@ msgid "Diff Select Versions"
msgstr "Aukeratutako Bertsioen Ezberdintasunak"
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Objetu honek ez dauka aldaketa historialik. Ziurrenik ez zen kudeaketa gune honen bitartez gehitua izango."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Objetu honek ez dauka aldaketa historialik. Ziurrenik ez zen kudeaketa gune "
+"honen bitartez gehitua izango."
#: templates/xadmin/views/model_list.html:29
#, python-format
@@ -1082,11 +1256,15 @@ msgstr "Zerrenda hustu"
#: templates/xadmin/views/recover_form.html:20
msgid "Press the recover button below to recover this version of the object."
-msgstr "Sakatu beheko berreskuratze botoia objetuaren bertsio hau berreskuratzeko."
+msgstr ""
+"Sakatu beheko berreskuratze botoia objetuaren bertsio hau berreskuratzeko."
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
-msgstr "Aukeratu beheko zerrendatik data bat objetu baten ezabatutako bertsioa berreskuratzeko."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
+msgstr ""
+"Aukeratu beheko zerrendatik data bat objetu baten ezabatutako bertsioa "
+"berreskuratzeko."
#: templates/xadmin/views/recover_list.html:39
msgid "There are no deleted objects to recover."
@@ -1138,133 +1316,160 @@ msgstr "Arrakasta"
#: templates/xadmin/widgets/addform.html:14
msgid "Add success, click edit to edit."
-msgstr "Gehitze arrakastatsua, klikatu editatu editatzeko."
+msgstr ""
+"Gehitze arrakastatsua, klikatu editatu editatzeko."
#: templates/xadmin/widgets/addform.html:17
msgid "Quick Add"
msgstr "Gehitze Azkarra"
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr "Widget Aukerak"
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr "Aldaketak gorde"
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr "Django Xadmin"
-#: views/dashboard.py:185
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
msgid "Widget ID"
msgstr "Widget IDa"
-#: views/dashboard.py:186
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr "Widget Izenburua"
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr "Html Eduki Widgeta, edozein html eduki idatzi daiteke widgetan."
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr "Html Edukia"
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr "Helburu den Modelua"
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr "Botoi azkarra Widgeta, edozein orri azkar ireki."
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr "Botoi Azkarrak"
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr "Edozein Objetu zerrenda Widgeta."
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr "Edozein objetu gehitu Widgeta."
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr "Arbela"
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "\"%(obj)s\" %(name)sa arrakastaz ezabatua izan da."
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr "Beste Eremuak"
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr "%s Xehetasunak"
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Aldaketa %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "\"%(obj)s\" %(name)sa arrakastaz gehitua izan da."
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr "Behean editatu dezakezu berriro."
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr "Behean beste %s bat gehitu dezakezu."
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Aldaketa %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "\"%(obj)s\" %(name)sa arrakastaz gehitua izan da."
-#: views/form.py:164
+#: views/form.py:165
#, fuzzy, python-format
msgid "The %s was changed successfully."
msgstr "\"%(obj)s\" %(name)sa arrakastaz gehitua izan da."
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr "Datubase errorea"
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr "%s Zerrenda"
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr "GOR Ordenatu"
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr "BEH Ordenatu"
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr "Ezeztatu Ordenaketa"
#: views/website.py:16
msgid "Main Dashboard"
msgstr "Arbela Nagusia"
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Orain"
diff --git a/xadmin/locale/id_ID/LC_MESSAGES/django.mo b/xadmin/locale/id_ID/LC_MESSAGES/django.mo
index be9342ad5..434b6454a 100644
Binary files a/xadmin/locale/id_ID/LC_MESSAGES/django.mo and b/xadmin/locale/id_ID/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/id_ID/LC_MESSAGES/django.po b/xadmin/locale/id_ID/LC_MESSAGES/django.po
index 1e91c9135..1cc66c5e7 100644
--- a/xadmin/locale/id_ID/LC_MESSAGES/django.po
+++ b/xadmin/locale/id_ID/LC_MESSAGES/django.po
@@ -7,62 +7,73 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: sshwsfc \n"
-"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/xadmin/language/id_ID/)\n"
+"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/"
+"xadmin/language/id_ID/)\n"
"Language: id_ID\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr ""
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr ""
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr ""
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr ""
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr ""
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr ""
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr ""
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr ""
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr ""
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
msgstr ""
#: forms.py:21
@@ -74,106 +85,160 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr ""
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr ""
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr ""
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr ""
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr ""
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr ""
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr ""
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: models.py:165
+msgid "log entries"
msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr ""
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr ""
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr ""
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr ""
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] ""
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr ""
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -241,20 +306,20 @@ msgstr ""
msgid "Permission Name"
msgstr ""
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr ""
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr ""
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr ""
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -269,7 +334,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -279,19 +344,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -333,27 +398,27 @@ msgid "1 comment was successfully %(action)s."
msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr ""
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr ""
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -378,11 +443,11 @@ msgstr ""
msgid "Change:"
msgstr ""
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -390,20 +455,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr ""
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr ""
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -420,88 +490,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr ""
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr ""
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr ""
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr ""
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr ""
@@ -509,9 +583,10 @@ msgstr ""
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -522,7 +597,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr ""
@@ -539,19 +614,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr ""
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -572,7 +637,9 @@ msgid "Enter new password"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:19
@@ -584,16 +651,22 @@ msgid "Password reset unsuccessful"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
msgstr ""
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -618,7 +691,9 @@ msgid "Password reset"
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -630,7 +705,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -654,19 +731,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr ""
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -684,7 +774,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -730,7 +820,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -744,26 +834,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -780,8 +871,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -819,7 +914,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -840,7 +935,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -873,7 +972,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -895,7 +994,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -912,7 +1011,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -942,7 +1041,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -984,17 +1086,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1013,17 +1122,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1048,7 +1164,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1074,7 +1192,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1133,127 +1252,152 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, python-format
+msgid "Changed %s."
+msgstr ""
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr ""
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr ""
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""
diff --git a/xadmin/locale/ja/LC_MESSAGES/django.mo b/xadmin/locale/ja/LC_MESSAGES/django.mo
index 6e431fe54..42bffc08a 100644
Binary files a/xadmin/locale/ja/LC_MESSAGES/django.mo and b/xadmin/locale/ja/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/ja/LC_MESSAGES/django.po b/xadmin/locale/ja/LC_MESSAGES/django.po
index 31955a84e..1d716b0c3 100644
--- a/xadmin/locale/ja/LC_MESSAGES/django.po
+++ b/xadmin/locale/ja/LC_MESSAGES/django.po
@@ -7,62 +7,73 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: sshwsfc \n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/xadmin/language/ja/)\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/xadmin/language/"
+"ja/)\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr ""
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr ""
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr ""
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr ""
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr ""
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr ""
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr ""
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr ""
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr ""
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
msgstr ""
#: forms.py:21
@@ -74,106 +85,160 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr ""
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr ""
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr ""
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr ""
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr ""
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr ""
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr ""
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: models.py:165
+msgid "log entries"
msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr ""
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr ""
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr ""
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr ""
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] ""
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr ""
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -241,20 +306,20 @@ msgstr ""
msgid "Permission Name"
msgstr ""
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr ""
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr ""
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr ""
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -269,7 +334,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -279,19 +344,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -333,27 +398,27 @@ msgid "1 comment was successfully %(action)s."
msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr ""
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr ""
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -378,11 +443,11 @@ msgstr ""
msgid "Change:"
msgstr ""
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -390,20 +455,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr ""
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr ""
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -420,88 +490,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr ""
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr ""
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr ""
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr ""
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr ""
@@ -509,9 +583,10 @@ msgstr ""
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -522,7 +597,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr ""
@@ -539,19 +614,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr ""
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -572,7 +637,9 @@ msgid "Enter new password"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:19
@@ -584,16 +651,22 @@ msgid "Password reset unsuccessful"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
msgstr ""
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -618,7 +691,9 @@ msgid "Password reset"
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -630,7 +705,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -654,19 +731,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr ""
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -684,7 +774,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -730,7 +820,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -744,26 +834,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -780,8 +871,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -819,7 +914,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -840,7 +935,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -873,7 +972,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -895,7 +994,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -912,7 +1011,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -942,7 +1041,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -984,17 +1086,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1013,17 +1122,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1048,7 +1164,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1074,7 +1192,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1133,127 +1252,152 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, python-format
+msgid "Changed %s."
+msgstr ""
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr ""
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr ""
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""
diff --git a/xadmin/locale/lt/LC_MESSAGES/django.mo b/xadmin/locale/lt/LC_MESSAGES/django.mo
index 9a7add4cd..7a23b22c4 100644
Binary files a/xadmin/locale/lt/LC_MESSAGES/django.mo and b/xadmin/locale/lt/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/lt/LC_MESSAGES/django.po b/xadmin/locale/lt/LC_MESSAGES/django.po
index 1d9fb88ee..1e7dcbfe9 100644
--- a/xadmin/locale/lt/LC_MESSAGES/django.po
+++ b/xadmin/locale/lt/LC_MESSAGES/django.po
@@ -7,62 +7,74 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: sshwsfc \n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xadmin/language/lt/)\n"
+"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xadmin/"
+"language/lt/)\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr ""
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr ""
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr ""
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr ""
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr ""
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr ""
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr ""
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr ""
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr ""
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
msgstr ""
#: forms.py:21
@@ -74,94 +86,146 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr ""
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr ""
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr ""
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr ""
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr ""
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr ""
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr ""
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: models.py:165
+msgid "log entries"
msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr ""
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr ""
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr ""
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr ""
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
@@ -169,13 +233,15 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr ""
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -243,20 +309,20 @@ msgstr ""
msgid "Permission Name"
msgstr ""
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr ""
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr ""
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr ""
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -271,7 +337,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -281,19 +347,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -343,27 +409,27 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr ""
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr ""
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -388,11 +454,11 @@ msgstr ""
msgid "Change:"
msgstr ""
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -400,20 +466,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr ""
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr ""
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -430,88 +501,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr ""
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr ""
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr ""
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr ""
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr ""
@@ -519,9 +594,10 @@ msgstr ""
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -532,7 +608,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr ""
@@ -549,19 +625,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr ""
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -582,7 +648,9 @@ msgid "Enter new password"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:19
@@ -594,16 +662,22 @@ msgid "Password reset unsuccessful"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
msgstr ""
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -628,7 +702,9 @@ msgid "Password reset"
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -640,7 +716,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -666,19 +744,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr ""
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -696,7 +787,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -742,7 +833,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -756,26 +847,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -792,8 +884,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -831,7 +927,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -852,7 +948,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -885,7 +985,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -907,7 +1007,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -924,7 +1024,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -956,7 +1056,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -998,17 +1101,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1027,17 +1137,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1062,7 +1179,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1088,7 +1207,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1147,127 +1267,152 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, python-format
+msgid "Changed %s."
+msgstr ""
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr ""
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr ""
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""
diff --git a/xadmin/locale/nl_NL/LC_MESSAGES/django.mo b/xadmin/locale/nl_NL/LC_MESSAGES/django.mo
index 63ffa4ce8..f197a007b 100644
Binary files a/xadmin/locale/nl_NL/LC_MESSAGES/django.mo and b/xadmin/locale/nl_NL/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/nl_NL/LC_MESSAGES/django.po b/xadmin/locale/nl_NL/LC_MESSAGES/django.po
index 08c3a5cc6..b7832866f 100644
--- a/xadmin/locale/nl_NL/LC_MESSAGES/django.po
+++ b/xadmin/locale/nl_NL/LC_MESSAGES/django.po
@@ -7,62 +7,73 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: sshwsfc \n"
-"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/xadmin/language/nl_NL/)\n"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/"
+"xadmin/language/nl_NL/)\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr ""
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr ""
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr ""
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr ""
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr ""
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr ""
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr ""
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr ""
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr ""
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
msgstr ""
#: forms.py:21
@@ -74,107 +85,161 @@ msgstr ""
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr ""
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr ""
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr ""
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr ""
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr ""
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr ""
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr ""
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: models.py:165
+msgid "log entries"
msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr ""
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr ""
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr ""
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr ""
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] ""
msgstr[1] ""
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr ""
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
msgstr ""
#: plugins/aggregation.py:14
@@ -242,20 +307,20 @@ msgstr ""
msgid "Permission Name"
msgstr ""
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr ""
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr ""
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr ""
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -270,7 +335,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -280,19 +345,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -338,27 +403,27 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr ""
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr ""
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -383,11 +448,11 @@ msgstr ""
msgid "Change:"
msgstr ""
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -395,20 +460,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr ""
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr ""
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -425,88 +495,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr ""
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr ""
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr ""
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr ""
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr ""
@@ -514,9 +588,10 @@ msgstr ""
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -527,7 +602,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr ""
@@ -544,19 +619,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr ""
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -577,7 +642,9 @@ msgid "Enter new password"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:19
@@ -589,16 +656,22 @@ msgid "Password reset unsuccessful"
msgstr ""
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
msgstr ""
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
msgstr ""
#: templates/xadmin/auth/password_reset/email.html:4
@@ -623,7 +696,9 @@ msgid "Password reset"
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -635,7 +710,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -660,19 +737,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr ""
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -690,7 +780,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -736,7 +826,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -750,26 +840,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -786,8 +877,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -825,7 +920,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -846,7 +941,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -879,7 +978,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -901,7 +1000,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -918,7 +1017,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -949,7 +1048,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -991,17 +1093,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1020,17 +1129,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1055,7 +1171,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1081,7 +1199,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1140,127 +1259,152 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, python-format
+msgid "Changed %s."
+msgstr ""
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr ""
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr ""
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""
diff --git a/xadmin/locale/pl/LC_MESSAGES/django.mo b/xadmin/locale/pl/LC_MESSAGES/django.mo
index 58b9c1459..c9b8381d4 100644
Binary files a/xadmin/locale/pl/LC_MESSAGES/django.mo and b/xadmin/locale/pl/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/pl/LC_MESSAGES/django.po b/xadmin/locale/pl/LC_MESSAGES/django.po
index bc62d634f..5f5751b98 100644
--- a/xadmin/locale/pl/LC_MESSAGES/django.po
+++ b/xadmin/locale/pl/LC_MESSAGES/django.po
@@ -7,59 +7,67 @@ msgid ""
msgstr ""
"Project-Id-Version: django-xadmin\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-08-12 11:11+0200\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2014-08-12 21:08+0100\n"
"Last-Translator: Michał Szpadzik \n"
"Language-Team: Polish translators \n"
+"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.5.4\n"
-"Language: pl\n"
-#: filters.py:158 filters.py:190 filters.py:402 filters.py:488 filters.py:526
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Wszystko"
-#: filters.py:159 plugins/export.py:162
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Tak"
-#: filters.py:160 plugins/export.py:162
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "Nie"
-#: filters.py:174
+#: filters.py:175
msgid "Unknown"
msgstr "Nieznany"
-#: filters.py:266
+#: filters.py:267
msgid "Any date"
msgstr "Dowolna data"
-#: filters.py:267
+#: filters.py:268
msgid "Has date"
msgstr "Ma datę"
-#: filters.py:270
+#: filters.py:271
msgid "Has no date"
msgstr "Nie ma daty"
-#: filters.py:273 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Dzisiaj"
-#: filters.py:277
+#: filters.py:278
msgid "Past 7 days"
msgstr "Ostatnie 7 dni"
-#: filters.py:281
+#: filters.py:282
msgid "This month"
msgstr "Ten miesiąc"
-#: filters.py:285
+#: filters.py:286
msgid "This year"
msgstr "Ten rok"
@@ -82,94 +90,156 @@ msgstr ""
"Twój adres e-mail nie jest Twoją nazwą użytkownika. Zamiast tego spróbuj "
"'%s'."
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Tytuł"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr "użytkownik"
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr "Nazwa Url"
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "Tekst wyszukiwania"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr "Jest współdzielony"
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:178
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Zakładka"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Zakładki"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr "Klucz ustawień"
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr "Treść ustawień"
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr "Ustawienie użytkownika"
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr "Ustawienia użytkownika"
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Strona"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Typ Widgetu"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Parametry Widgetu"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr "Widget użytkownika"
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr "Widgety użytkownika"
-#: widgets.py:48
-msgid "Now"
-msgstr "Teraz"
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Data/czas"
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
-#: plugins/actions.py:54
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Zmień %s"
+
+#: models.py:164
+#, fuzzy
+#| msgid "log in"
+msgid "log entry"
+msgstr "zaloguj się"
+
+#: models.py:165
+msgid "log entries"
+msgstr ""
+
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, fuzzy, python-format
+#| msgid "Change one %(objects_name)s"
+#| msgid_plural "Batch change %(counter)s %(objects_name)s"
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Zmień %(objects_name)s"
+
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Powiązane obiekty"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Usuń zaznaczone %(verbose_name_plural)s"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Z powodzieniem usunięto %(count)d %(items)s."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Z powodzieniem usunięto %(count)d %(items)s."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "Nie można usunąć %(name)s"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Jesteś pewny ?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
@@ -177,12 +247,12 @@ msgstr[0] "%(total_count)s zaznaczony"
msgstr[1] "%(total_count)s zaznaczone"
msgstr[2] "%(total_count)s zaznaczonych"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "0 z %(cnt)s zaznaczonych"
-#: plugins/actions.py:168 plugins/actions.py:178
+#: plugins/actions.py:179 plugins/actions.py:189
msgid ""
"Items must be selected in order to perform actions on them. No items have "
"been changed."
@@ -255,20 +325,20 @@ msgstr "Status"
msgid "Permission Name"
msgstr "Nazwa uprawnienia"
-#: plugins/auth.py:161
+#: plugins/auth.py:167
msgid "Change Password"
msgstr "Zmień hasło"
-#: plugins/auth.py:191
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Zmień hasło: %s"
-#: plugins/auth.py:216 plugins/auth.py:248
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Zmiana hasła zakończona powodzieniem"
-#: plugins/auth.py:235 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -283,29 +353,29 @@ msgstr "Zmień to pole"
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr "Zmiana grupowa wybrana %(verbose_name_plural)s"
-#: plugins/batch.py:88
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr "Z powodzeniem zmieniono %(count)d %(items)s."
-#: plugins/batch.py:136
+#: plugins/batch.py:138
#, python-format
msgid "Batch change %s"
msgstr "Zmiana grupowa %s"
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr "zakładka"
-#: plugins/bookmark.py:174
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr "Widget zakładek, pozwala pokazać dane dla zakładki w widgecie."
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr "Pokaż prosty wykres dla modelu."
-#: plugins/chart.py:50
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr "%s Wykresy"
@@ -355,7 +425,7 @@ msgstr[0] "1 komentarz został z powodzeniem %(action)s."
msgstr[1] "%(count)s komentarze zostało z powodzeniem %(action)s."
msgstr[2] "%(count)s komentarzy zostało z powodzeniem %(action)s."
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "Szczegóły %s"
@@ -365,17 +435,17 @@ msgstr "Szczegóły %s"
msgid "Enter %s"
msgstr "Wejdz w %s"
-#: plugins/editable.py:73 views/dashboard.py:645 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "Obiekt %(name)s z kluczem głównym %(key)r nie istnieje."
-#: plugins/export.py:95 plugins/export.py:132
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Arkusz"
-#: plugins/filters.py:132 plugins/quickfilter.py:140
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr "Błąd filtracji: %s"
@@ -400,11 +470,11 @@ msgstr "Ściągnij"
msgid "Change:"
msgstr "Zmień:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr "Tabela"
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr "Miniaturki"
@@ -412,12 +482,12 @@ msgstr "Miniaturki"
msgid "Forgotten your password or username?"
msgstr "Zapomniałeś swojego hasła lub loginu ?"
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr "Utwórz nowy %s"
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Powiązane obiekty"
@@ -426,6 +496,12 @@ msgstr "Powiązane obiekty"
msgid "Search %s"
msgstr "Szukaj %s"
+#: plugins/relfield.py:67
+#, fuzzy, python-format
+#| msgid "Select Date"
+msgid "Select %s"
+msgstr "Wybierz datę"
+
#: plugins/themes.py:47
msgid "Default"
msgstr "Domyślny"
@@ -442,73 +518,73 @@ msgstr "Bootstrap2"
msgid "Bootstrap 2.x theme"
msgstr "Tematy Bootstrap 2.x"
-#: plugins/topnav.py:63 views/dashboard.py:462 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "Dodaj %s"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr "Wersja startowa."
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr "Zmień wersję."
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr "Przywróć wersję."
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr "Odzyskaj wersję."
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr "Usunięte %(verbose_name)s."
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr "Odzyskaj"
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "Historia"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr "Odzyskaj usunięte %(name)s"
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr "Zmień historię: %s"
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "Musisz wybrać dwie wersje."
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Proszę, wybierz dwie różne wersje."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr "Obecny: %s"
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr "Przywróć %s"
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
msgid ""
"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
@@ -517,12 +593,12 @@ msgstr ""
"%(model)s \"%(name)s\" został przywrócony z powodzeniem. Możesz edytować go "
"ponownie poniżej."
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr "Odzyskaj %s"
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
msgid ""
"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
@@ -531,7 +607,7 @@ msgstr ""
"%(model)s \"%(name)s\" został z powodzeniem odzyskany. Możesz edytować go "
"ponownie poniżej."
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Strona nie została odnaleziona"
@@ -539,9 +615,10 @@ msgstr "Strona nie została odnaleziona"
msgid "We're sorry, but the requested page could not be found."
msgstr "Przepraszamy, ale żądana strona nie została odnaleziona."
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:54
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -552,7 +629,7 @@ msgstr "Przepraszamy, ale żądana strona nie została odnaleziona."
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:462
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Home"
@@ -577,18 +654,6 @@ msgstr ""
"wkrótce powienien zostać naprawiony. Dziękujemy za wyrozumiałość i "
"cierpliwość."
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "Witaj, "
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Wyloguj"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "Nie masz uprawnień by edytować cokolwiek."
-
#: templates/xadmin/auth/password_reset/complete.html:11
#: templates/xadmin/auth/password_reset/done.html:11
msgid "Password reset successful"
@@ -716,19 +781,32 @@ msgstr "Wpisz Twoje nowe hasło."
msgid "Enter a new password for the user %(username)s."
msgstr "Wpisz nowe hasło dla użytkownika %(username)s."
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr "Witaj, "
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Wyloguj"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "Nie masz uprawnień by edytować cokolwiek."
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr "Tematy"
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr "Szukaj"
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr "Dodaj"
@@ -746,7 +824,7 @@ msgstr "Następny krok"
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr "Zapisz"
@@ -792,8 +870,8 @@ msgstr "Kliknij tutaj, aby wybrać wszystkie obiekty na wszystkich stronach"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Wybierz wszystkie %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "Wybierz wszystkie %(total_count)s %(model_name)s"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
msgid "Clear selection"
@@ -843,8 +921,12 @@ msgstr "Wyczyść odświeżanie"
msgid "Every %(t)s seconds"
msgstr "Co każde %(t)s sekund"
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr "Null"
@@ -882,7 +964,7 @@ msgstr "dzień"
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr "Zatwierdź"
@@ -903,7 +985,13 @@ msgstr "Od"
msgid "To"
msgstr "Do"
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+#, fuzzy
+#| msgid "Select Date"
+msgid "Select"
+msgstr "Wybierz datę"
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr "Wyczyść"
@@ -958,7 +1046,7 @@ msgstr "Pokaż wszystkie"
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr "Zapisuję.."
@@ -975,7 +1063,7 @@ msgid "Save and continue editing"
msgstr "Zapisz i kontynuuj edycję"
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr "Usuń"
@@ -1247,123 +1335,147 @@ msgstr "Opcje widgetów"
msgid "Save changes"
msgstr "Zapisz zmiany"
-#: views/base.py:443
+#: views/base.py:315
msgid "Django Xadmin"
msgstr "Django Xadmin"
-#: views/base.py:444
-msgid "my-company.inc 2013"
+#: views/base.py:316
+#, fuzzy
+#| msgid "my-company.inc 2013"
+msgid "my-company.inc"
msgstr "moja-firma.inc 2013"
-#: views/dashboard.py:185
+#: views/dashboard.py:186
msgid "Widget ID"
msgstr "ID widgetu"
-#: views/dashboard.py:186
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr "Tytuł widgetu"
-#: views/dashboard.py:249
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr "Widget treści HTML, możesz wpisać dowolną treść HTMLową w ten widget."
-#: views/dashboard.py:252
+#: views/dashboard.py:255
msgid "Html Content"
msgstr "Treść HTML"
-#: views/dashboard.py:315
+#: views/dashboard.py:318
msgid "Target Model"
msgstr "Model docelowy"
-#: views/dashboard.py:366
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr "Widget szybkich przycisków, pozwala szybko otworzyć dowolna stronę."
-#: views/dashboard.py:368
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr "Szybkie przyciski"
-#: views/dashboard.py:413
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr "Dowolny widget listy obiektów."
-#: views/dashboard.py:453
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr "Dodaj dowolny widget modelu obiektu."
-#: views/dashboard.py:488
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr "Dashboard"
-#: views/dashboard.py:629
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr "%s Dashboard"
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" został usunięty z powodzeniem."
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr "Inne pola"
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr "Szczegóły %s"
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Zmień %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\" został dodany z sukcesem."
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr "Możesz edytować to powtórnie poniżej."
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr "Możesz dodać kolejny %s poniżej."
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Zmień %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)s \"%(obj)s\" został zmieniony z powodzeniem."
-#: views/form.py:164
+#: views/form.py:165
#, python-format
msgid "The %s was changed successfully."
msgstr "%s został z sukcesem zmieniony."
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr "Błąd bazy danych"
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr "Lista %s"
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr "Sortuj ASC"
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr "Sortuj DESC"
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr "Anuluj sortowanie"
#: views/website.py:16
msgid "Main Dashboard"
msgstr "Główny Dashboard"
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Teraz"
diff --git a/xadmin/locale/pt_BR/LC_MESSAGES/django.mo b/xadmin/locale/pt_BR/LC_MESSAGES/django.mo
index 890ff8c36..0187836e1 100644
Binary files a/xadmin/locale/pt_BR/LC_MESSAGES/django.mo and b/xadmin/locale/pt_BR/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/pt_BR/LC_MESSAGES/django.po b/xadmin/locale/pt_BR/LC_MESSAGES/django.po
index e07295cdd..31d6ed00c 100644
--- a/xadmin/locale/pt_BR/LC_MESSAGES/django.po
+++ b/xadmin/locale/pt_BR/LC_MESSAGES/django.po
@@ -11,63 +11,76 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-11-20 10:21+0000\n"
"Last-Translator: gladson \n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/xadmin/language/pt_BR/)\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
+"xadmin/language/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Tudo"
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Sim"
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "Não"
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr "Desconhecido"
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr "Qualquer data"
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr "Tem data"
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr "Não tem data"
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Hoje"
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr "Passados 7 dias"
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr "Este mês"
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr "Este ano"
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "Por favor, insira o nome de usuário e a senha corretamente para sua conta pessoal. Perceba que ambos os campos são case-sensitive."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Por favor, insira o nome de usuário e a senha corretamente para sua conta "
+"pessoal. Perceba que ambos os campos são case-sensitive."
#: forms.py:21
msgid "Please log in again, because your session has expired."
@@ -76,110 +89,177 @@ msgstr "Por favor faça login novamente, porque a sua sessão expirou."
#: forms.py:41
#, python-format
msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "O seu endereço de e-mail não é seu nome de usuário. Tente '% s' em seu lugar."
+msgstr ""
+"O seu endereço de e-mail não é seu nome de usuário. Tente '% s' em seu lugar."
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Título"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr "Usuário"
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr "Nome da Url"
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "String de Consulta"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr "É Compartilhada"
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Favorito"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Favoritos"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr "Configuração da chave"
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr "Configurações de conteúdo"
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr "Configuração de usuário"
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr "Configurações do Usuário"
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Página"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Tipo de Widget"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Parâmetros do Widget"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr "Widget do Usuário"
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr "Widgets do Usuário"
-#: widgets.py:48
-msgid "Now"
-msgstr "Agora"
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Data/Hora"
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Alterar %s"
+
+#: models.py:164
+#, fuzzy
+#| msgid "log in"
+msgid "log entry"
+msgstr "Entrar"
+
+#: models.py:165
+msgid "log entries"
+msgstr ""
-#: plugins/actions.py:54
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, fuzzy, python-format
+#| msgid "Change one %(objects_name)s"
+#| msgid_plural "Batch change %(counter)s %(objects_name)s"
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "Alterar um %(objects_name)s"
+
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Objetos Relacionados"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Excluir selecionado %(verbose_name_plural)s"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Excluído com sucesso %(count)d %(items)s."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Excluído com sucesso %(count)d %(items)s."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "Não é possível excluir %(name)s"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Você tem certeza?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
msgstr[0] "Todos %(total_count)s selecionados"
msgstr[1] "Todos %(total_count)s selecionados"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "0 de %(cnt)s selecionados"
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
-msgstr "Os itens devem ser selecionados, a fim de executar ações sobre eles. Não há itens alterados."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Os itens devem ser selecionados, a fim de executar ações sobre eles. Não há "
+"itens alterados."
#: plugins/aggregation.py:14
msgid "Min"
@@ -247,20 +327,20 @@ msgstr "Status"
msgid "Permission Name"
msgstr "Permissões"
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr "Alterar Senha"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Alterar senha: %s"
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Senha alterada com sucesso."
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -275,7 +355,7 @@ msgstr "Alterar este campo"
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr "Alterar lote selecionado %(verbose_name_plural)s"
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr "Alterado com sucesso %(count)d %(items)s."
@@ -285,19 +365,20 @@ msgstr "Alterado com sucesso %(count)d %(items)s."
msgid "Batch change %s"
msgstr "Lote alterado %s"
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr "Favorito"
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
-msgstr "Widget de Marcador, pode mostrar a lista de marcadores do usuário no widget"
+msgstr ""
+"Widget de Marcador, pode mostrar a lista de marcadores do usuário no widget"
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr "Mostrar modelos gráfico simples."
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr "%s Gráficos"
@@ -345,27 +426,27 @@ msgid_plural "%(count)s comments were successfully %(action)s."
msgstr[0] ""
msgstr[1] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "Detalhes de %s"
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr "Entrar %s"
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr "%(name)s objeto com chave primária %(key)r não existe."
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Planilha"
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr "Filtrar erro: %s"
@@ -390,11 +471,11 @@ msgstr "Baixar"
msgid "Change:"
msgstr "Alterar:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr "Tabela"
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr "Miniaturas"
@@ -402,20 +483,26 @@ msgstr "Miniaturas"
msgid "Forgotten your password or username?"
msgstr "Esqueceu seu nome de usuário ou senha?"
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr "Criar novo %s"
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Objetos Relacionados"
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr "Pesquisar %s"
+#: plugins/relfield.py:67
+#, fuzzy, python-format
+#| msgid "Select Date"
+msgid "Select %s"
+msgstr "Selecionar Data"
+
#: plugins/themes.py:47
msgid "Default"
msgstr "Padrão"
@@ -432,88 +519,96 @@ msgstr "Bootstrap2"
msgid "Bootstrap 2.x theme"
msgstr "Tema Bootstrap 2.x"
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "Adicionar %s"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr "Versão inicial."
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr "Alterar versão."
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr "Reverter versão."
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr "Recuperar versão."
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr "Excluídos %(verbose_name)s."
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr "Recuperar"
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "Histórico"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr "Recuperar deletado %(name)s"
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr "Alterar histórico: %s"
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "É necessário selecionar 2 versões"
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Por favor selecione duas versões diferentes."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr "Atual: %s"
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr "Revertido: %s"
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
-msgstr "%(model)s \"%(name)s\" foi revertido(a) com sucesso. Você pode editá-lo(a) novamente abaixo."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+"%(model)s \"%(name)s\" foi revertido(a) com sucesso. Você pode editá-lo(a) "
+"novamente abaixo."
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr "Recuperar %s"
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
-msgstr "%(model)s \"%(name)s\" foi recuperado(a) com sucesso. Você pode editá-lo(a) novamente abaixo."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
+msgstr ""
+"%(model)s \"%(name)s\" foi recuperado(a) com sucesso. Você pode editá-lo(a) "
+"novamente abaixo."
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Página não encontrada"
@@ -521,9 +616,10 @@ msgstr "Página não encontrada"
msgid "We're sorry, but the requested page could not be found."
msgstr "Pedimos desculpas, mas a página solicitada não foi encontrada."
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -534,7 +630,7 @@ msgstr "Pedimos desculpas, mas a página solicitada não foi encontrada."
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Início"
@@ -551,20 +647,12 @@ msgid "Server Error (500)"
msgstr "Erro do Servidor (500)"
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "Ocorreu um erro. E foi relatado aos administradores do site via e-mail e deve ser corrigido em breve. Obrigado por sua paciência."
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "Bem-Vindo,"
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Sair"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "Você não tem permissão para editar nada."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"Ocorreu um erro. E foi relatado aos administradores do site via e-mail e "
+"deve ser corrigido em breve. Obrigado por sua paciência."
#: templates/xadmin/auth/password_reset/complete.html:11
#: templates/xadmin/auth/password_reset/done.html:11
@@ -584,8 +672,12 @@ msgid "Enter new password"
msgstr "Digite a nova senha"
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "Por favor forneça sua nova senha 2 vezes para que possamos verificar se a mesma foi digitada corretamente."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Por favor forneça sua nova senha 2 vezes para que possamos verificar se a "
+"mesma foi digitada corretamente."
#: templates/xadmin/auth/password_reset/confirm.html:19
msgid "Change my password"
@@ -596,17 +688,29 @@ msgid "Password reset unsuccessful"
msgstr "A senha foi redefinida com sucesso"
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "O link de redefinição de senha era inválida, possivelmente porque ele já foi usado. Por favor, solicite uma nova redefinição de senha."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+"O link de redefinição de senha era inválida, possivelmente porque ele já foi "
+"usado. Por favor, solicite uma nova redefinição de senha."
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Nós enviamos um e-mail com instruções para configurar sua senha para o endereço de e-mail que você solicitou. Você deve recebê-lo em breve."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Nós enviamos um e-mail com instruções para configurar sua senha para o "
+"endereço de e-mail que você solicitou. Você deve recebê-lo em breve."
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
-msgstr "Você está recebendo este e-mail porque você pediu uma redefinição de senha para sua conta de usuário em %(site_name)s."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Você está recebendo este e-mail porque você pediu uma redefinição de senha "
+"para sua conta de usuário em %(site_name)s."
#: templates/xadmin/auth/password_reset/email.html:4
msgid "Please go to the following page and choose a new password:"
@@ -630,8 +734,12 @@ msgid "Password reset"
msgstr "Redefinição de senha"
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
-msgstr "Esqueceu sua senha? Forneça seu endereço de e-mail abaixo, e nós lhe enviaremos instruções para definir uma nova."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"Esqueceu sua senha? Forneça seu endereço de e-mail abaixo, e nós lhe "
+"enviaremos instruções para definir uma nova."
#: templates/xadmin/auth/password_reset/form.html:25
msgid "E-mail address:"
@@ -642,8 +750,12 @@ msgid "Reset my password"
msgstr "Redefinir minha senha"
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "Primeiro, insira um nome de usuário e senha. Então, você vai ser capaz de editar mais opções do usuário."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr ""
+"Primeiro, insira um nome de usuário e senha. Então, você vai ser capaz de "
+"editar mais opções do usuário."
#: templates/xadmin/auth/user/add_form.html:8
msgid "Enter a username and password."
@@ -667,19 +779,32 @@ msgstr "Digite sua nova senha."
msgid "Enter a new password for the user %(username)s."
msgstr "Digite uma nova senha para o usuário %(username)s."
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr "Bem-Vindo,"
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Sair"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "Você não tem permissão para editar nada."
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr "Temas"
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr "Pesquisar"
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr "Adicionar"
@@ -697,7 +822,7 @@ msgstr "Próximo passo"
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr "Gravar"
@@ -743,8 +868,8 @@ msgstr "Clique aqui para selecionar os objetos através de todas as páginas"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Selecionar todos %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "Selecionar todos %(total_count)s %(model_name)s"
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
msgid "Clear selection"
@@ -757,26 +882,27 @@ msgstr "Gráficos"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr "Exportar"
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr "Exportar com cabeçalho da tabela"
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr "Exportar com o formato."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr "Exportar todos os dados."
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr "Fechar"
@@ -793,8 +919,12 @@ msgstr "Atualização Limpa"
msgid "Every %(t)s seconds"
msgstr "A cada %(t)s segundos"
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr "Nulo"
@@ -832,7 +962,7 @@ msgstr "dia"
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr "Aplicar"
@@ -853,7 +983,13 @@ msgstr "De"
msgid "To"
msgstr "Para"
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+#, fuzzy
+#| msgid "Select Date"
+msgid "Select"
+msgstr "Selecionar Data"
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr "Limpar"
@@ -886,7 +1022,7 @@ msgid "Choose"
msgstr "Escolher"
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr "Remover"
@@ -908,7 +1044,7 @@ msgstr "Mostrar Tudo"
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr "Salvando..."
@@ -925,7 +1061,7 @@ msgid "Save and continue editing"
msgstr "Gravar e continuar editando"
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr "Excluir"
@@ -956,8 +1092,14 @@ msgid "Add Widget"
msgstr "Adicionar Widget"
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "Algo está errado com a instalação do banco de dados. Certifique-se que as tabelas foram criadas apropriadamente, e certifique-se que o banco de dados pode ser lido pelo usuário apropriado."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"Algo está errado com a instalação do banco de dados. Certifique-se que as "
+"tabelas foram criadas apropriadamente, e certifique-se que o banco de dados "
+"pode ser lido pelo usuário apropriado."
#: templates/xadmin/views/logged_out.html:16
msgid "Logout Success"
@@ -998,18 +1140,32 @@ msgstr "Editar"
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Excluir o %(verbose_name)s '%(escaped_object)s' resultaria na exclusão dos objetos relacionados, mas a sua conta não tem permissão para excluir os seguintes tipos de objetos:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"Excluir o %(verbose_name)s '%(escaped_object)s' resultaria na exclusão dos "
+"objetos relacionados, mas a sua conta não tem permissão para excluir os "
+"seguintes tipos de objetos:"
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
-msgstr "Excluir o %(verbose_name)s '%(escaped_object)s' exigiria exclusão dos seguintes objetos protegidos relacionados:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
+msgstr ""
+"Excluir o %(verbose_name)s '%(escaped_object)s' exigiria exclusão dos "
+"seguintes objetos protegidos relacionados:"
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "Tem certeza de que deseja excluir %(verbose_name)s \"%(escaped_object)s\"? Todos os seguintes itens relacionados serão excluídos:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"Tem certeza de que deseja excluir %(verbose_name)s \"%(escaped_object)s\"? "
+"Todos os seguintes itens relacionados serão excluídos:"
#: templates/xadmin/views/model_delete_confirm.html:34
#: templates/xadmin/views/model_delete_selected_confirm.html:49
@@ -1027,18 +1183,32 @@ msgstr "Excluir múltiplos objetos"
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "Excluir o %(objects_name)s selecionado resultaria na exclusão de objetos relacionados, mas a sua conta não tem permissão para excluir os seguintes tipos de objetos:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"Excluir o %(objects_name)s selecionado resultaria na exclusão de objetos "
+"relacionados, mas a sua conta não tem permissão para excluir os seguintes "
+"tipos de objetos:"
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
-msgstr "Excluir o %(objects_name)s selecionado exigiria eliminar os seguintes objetos protegidos relacionados:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr ""
+"Excluir o %(objects_name)s selecionado exigiria eliminar os seguintes "
+"objetos protegidos relacionados:"
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
-msgstr "Tem certeza de que deseja excluir o %(objects_name)s selecionado? Todos os seguintes objetos e seus itens relacionados serão excluídos:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"Tem certeza de que deseja excluir o %(objects_name)s selecionado? Todos os "
+"seguintes objetos e seus itens relacionados serão excluídos:"
#: templates/xadmin/views/model_history.html:26
msgid "Diff"
@@ -1062,8 +1232,12 @@ msgid "Diff Select Versions"
msgstr "Comparar Versões Selecionadas"
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "Este objeto não possui um histórico de mudança. Provavelmente não foi adicionado pelo site de administração."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr ""
+"Este objeto não possui um histórico de mudança. Provavelmente não foi "
+"adicionado pelo site de administração."
#: templates/xadmin/views/model_list.html:29
#, python-format
@@ -1089,8 +1263,11 @@ msgid "Press the recover button below to recover this version of the object."
msgstr "Clique no botão recuperar abaixo para recuperar esta versão do objeto."
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
-msgstr "Escolha a data a partir da lista abaixo para recuperar a versão excluída do objeto."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
+msgstr ""
+"Escolha a data a partir da lista abaixo para recuperar a versão excluída do "
+"objeto."
#: templates/xadmin/views/recover_list.html:39
msgid "There are no deleted objects to recover."
@@ -1130,7 +1307,8 @@ msgstr "Reverter %(verbose_name)s"
#: templates/xadmin/views/revision_form.html:21
msgid "Press the revert button below to revert to this version of the object."
-msgstr "Clique no botão reverter abaixo para reverter para esta versão do objeto."
+msgstr ""
+"Clique no botão reverter abaixo para reverter para esta versão do objeto."
#: templates/xadmin/views/revision_form.html:27
msgid "Revert this revision"
@@ -1148,127 +1326,154 @@ msgstr "Sucesso na adição, clique editar para editar."
msgid "Quick Add"
msgstr "Adição Rápida"
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr "Opções do Widget"
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr "Gravar alterações"
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr "Django Xadmin"
-#: views/dashboard.py:185
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
msgid "Widget ID"
msgstr "ID do Widget"
-#: views/dashboard.py:186
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr "Título do Widget"
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
-msgstr "Widget de Conteúdo HTML, pode-se escrever qualquer conteúdo html no widget."
+msgstr ""
+"Widget de Conteúdo HTML, pode-se escrever qualquer conteúdo html no widget."
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr "Conteúdo HTML"
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr "Modelo Alvo"
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr "Widget de Botão Rápido, abre rapidamente qualquer página."
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr "Botões Rápidos"
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr "Widget de listagem de Qualquer Objeto"
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr "Widget de adição de qualquer objeto."
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr "Painel"
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr "%s Painel"
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr "%(name)s \"%(obj)s\" excluído(a) com sucesso."
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr "Outros Campos"
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr "%s Detalhes"
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Alterar %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr "%(name)s \"%(obj)s\" adicionado(a) com sucesso."
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr "Você pode editar novamente abaixo."
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr "Você pode adicionar outro(a) %s abaixo."
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Alterar %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr "%(name)s \"%(obj)s\" alterado(a) com sucesso."
-#: views/form.py:164
+#: views/form.py:165
#, fuzzy, python-format
msgid "The %s was changed successfully."
msgstr "%(name)s \"%(obj)s\" alterado(a) com sucesso."
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr "Erro da base de dados"
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr "Lista %s"
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr "Classificação Ascendente"
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr "Classificação Descendente"
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr "Cancelar Classificação"
#: views/website.py:16
msgid "Main Dashboard"
msgstr "Painel Principal"
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Agora"
diff --git a/xadmin/locale/ru_RU/LC_MESSAGES/django.mo b/xadmin/locale/ru_RU/LC_MESSAGES/django.mo
index a7f41863b..58d8e7159 100644
Binary files a/xadmin/locale/ru_RU/LC_MESSAGES/django.mo and b/xadmin/locale/ru_RU/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/ru_RU/LC_MESSAGES/django.po b/xadmin/locale/ru_RU/LC_MESSAGES/django.po
index 44584cb25..6bdc7947b 100644
--- a/xadmin/locale/ru_RU/LC_MESSAGES/django.po
+++ b/xadmin/locale/ru_RU/LC_MESSAGES/django.po
@@ -8,63 +8,77 @@ msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
"PO-Revision-Date: 2013-12-28 19:36+0000\n"
"Last-Translator: crazyzubr \n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/xadmin/language/ru_RU/)\n"
+"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/xadmin/"
+"language/ru_RU/)\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
+#: adminx.py:19
+msgid "Admin Object"
+msgstr ""
+
+#: apps.py:11
+msgid "Administration"
+msgstr ""
+
+#: filters.py:159 filters.py:191 filters.py:407 filters.py:493 filters.py:531
msgid "All"
msgstr "Все"
-#: filters.py:158 plugins/export.py:117
+#: filters.py:160 plugins/export.py:165
msgid "Yes"
msgstr "Да"
-#: filters.py:159 plugins/export.py:117
+#: filters.py:161 plugins/export.py:165
msgid "No"
msgstr "Нет"
-#: filters.py:173
+#: filters.py:175
msgid "Unknown"
msgstr "Неизвестно"
-#: filters.py:265
+#: filters.py:267
msgid "Any date"
msgstr "Любая дата"
-#: filters.py:266
+#: filters.py:268
msgid "Has date"
msgstr ""
-#: filters.py:269
+#: filters.py:271
msgid "Has no date"
msgstr ""
-#: filters.py:272 widgets.py:30
+#: filters.py:274 widgets.py:30
msgid "Today"
msgstr "Сегодня"
-#: filters.py:276
+#: filters.py:278
msgid "Past 7 days"
msgstr "За последние 7 дней"
-#: filters.py:280
+#: filters.py:282
msgid "This month"
msgstr "В этом месяце"
-#: filters.py:284
+#: filters.py:286
msgid "This year"
msgstr "В этом году"
#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "Пожалуйста, введите корректные имя пользователя и пароль для аккаунта. Оба поля могут быть чувствительны к регистру."
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Пожалуйста, введите корректные имя пользователя и пароль для аккаунта. Оба "
+"поля могут быть чувствительны к регистру."
#: forms.py:21
msgid "Please log in again, because your session has expired."
@@ -75,94 +89,150 @@ msgstr "Пожалуйста, войдите снова, поскольку ва
msgid "Your e-mail address is not your username. Try '%s' instead."
msgstr ""
-#: models.py:47
+#: models.py:48
msgid "Title"
msgstr "Заголовок"
-#: models.py:48 models.py:87 models.py:106
+#: models.py:49 models.py:88 models.py:107 models.py:149
msgid "user"
msgstr ""
-#: models.py:49
+#: models.py:50
msgid "Url Name"
msgstr ""
-#: models.py:51
+#: models.py:52
msgid "Query String"
msgstr "Строка запроса"
-#: models.py:52
+#: models.py:53
msgid "Is Shared"
msgstr ""
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
msgid "Bookmark"
msgstr "Закладка"
-#: models.py:66
+#: models.py:67
msgid "Bookmarks"
msgstr "Закладки"
-#: models.py:88
+#: models.py:89
msgid "Settings Key"
msgstr ""
-#: models.py:89
+#: models.py:90
msgid "Settings Content"
msgstr ""
-#: models.py:101
+#: models.py:102
msgid "User Setting"
msgstr ""
-#: models.py:102
+#: models.py:103
msgid "User Settings"
msgstr ""
-#: models.py:107
+#: models.py:108
msgid "Page"
msgstr "Страница"
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
msgid "Widget Type"
msgstr "Тип виджета"
-#: models.py:109 views/dashboard.py:82
+#: models.py:110 views/dashboard.py:83
msgid "Widget Params"
msgstr "Параметры виджета"
-#: models.py:136
+#: models.py:137
msgid "User Widget"
msgstr ""
-#: models.py:137
+#: models.py:138
msgid "User Widgets"
msgstr ""
-#: widgets.py:48
-msgid "Now"
-msgstr "Сейчас"
+#: models.py:142
+msgid "action time"
+msgstr ""
+
+#: models.py:151
+msgid "action ip"
+msgstr ""
+
+#: models.py:155
+msgid "content type"
+msgstr ""
+
+#: models.py:158
+msgid "object id"
+msgstr ""
+
+#: models.py:159
+msgid "object repr"
+msgstr ""
+
+#: models.py:160
+msgid "action flag"
+msgstr ""
+
+#: models.py:161
+#, fuzzy
+#| msgid "Change %s"
+msgid "change message"
+msgstr "Изменить %s"
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
-#: plugins/actions.py:54
+#: models.py:165
+msgid "log entries"
+msgstr ""
+
+#: models.py:173
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr ""
+
+#: models.py:175
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr ""
+
+#: models.py:180
+#, fuzzy, python-format
+#| msgid "Related Objects"
+msgid "Deleted \"%(object)s.\""
+msgstr "Связанные объекты"
+
+#: plugins/actions.py:57
#, python-format
msgid "Delete selected %(verbose_name_plural)s"
msgstr "Удалить выбранные %(verbose_name_plural)s"
-#: plugins/actions.py:67
+#: plugins/actions.py:72
+#, fuzzy, python-format
+#| msgid "Successfully deleted %(count)d %(items)s."
+msgid "Batch delete %(count)d %(items)s."
+msgstr "Успешно удалены %(count)d %(items)s."
+
+#: plugins/actions.py:78
#, python-format
msgid "Successfully deleted %(count)d %(items)s."
msgstr "Успешно удалены %(count)d %(items)s."
-#: plugins/actions.py:99 views/delete.py:68
+#: plugins/actions.py:110 views/delete.py:70
#, python-format
msgid "Cannot delete %(name)s"
msgstr "Не удается удалить %(name)s"
-#: plugins/actions.py:101 views/delete.py:71
+#: plugins/actions.py:112 views/delete.py:73
msgid "Are you sure?"
msgstr "Вы уверены?"
-#: plugins/actions.py:147
+#: plugins/actions.py:158
#, python-format
msgid "%(total_count)s selected"
msgid_plural "All %(total_count)s selected"
@@ -170,14 +240,18 @@ msgstr[0] "Выбран %(total_count)s"
msgstr[1] "Выбраны все %(total_count)s"
msgstr[2] "Выбраны все %(total_count)s"
-#: plugins/actions.py:151
+#: plugins/actions.py:162
#, python-format
msgid "0 of %(cnt)s selected"
msgstr "Выбрано 0 объектов из %(cnt)s "
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
-msgstr "Чтобы произвести действия над объектами, необходимо их выбрать. Объекты не были изменены."
+#: plugins/actions.py:179 plugins/actions.py:189
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr ""
+"Чтобы произвести действия над объектами, необходимо их выбрать. Объекты не "
+"были изменены."
#: plugins/aggregation.py:14
msgid "Min"
@@ -245,20 +319,20 @@ msgstr "Статус"
msgid "Permission Name"
msgstr "Права"
-#: plugins/auth.py:159
+#: plugins/auth.py:167
msgid "Change Password"
msgstr "Изменить пароль"
-#: plugins/auth.py:189
+#: plugins/auth.py:198
#, python-format
msgid "Change password: %s"
msgstr "Изменить пароль: %s"
-#: plugins/auth.py:214 plugins/auth.py:246
+#: plugins/auth.py:223 plugins/auth.py:255
msgid "Password changed successfully."
msgstr "Пароль успешно изменен"
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
+#: plugins/auth.py:242 templates/xadmin/auth/user/change_password.html:11
#: templates/xadmin/auth/user/change_password.html:22
#: templates/xadmin/auth/user/change_password.html:55
msgid "Change password"
@@ -273,7 +347,7 @@ msgstr ""
msgid "Batch Change selected %(verbose_name_plural)s"
msgstr ""
-#: plugins/batch.py:90
+#: plugins/batch.py:89
#, python-format
msgid "Successfully change %(count)d %(items)s."
msgstr ""
@@ -283,19 +357,19 @@ msgstr ""
msgid "Batch change %s"
msgstr ""
-#: plugins/bookmark.py:171
+#: plugins/bookmark.py:173
msgid "bookmark"
msgstr ""
-#: plugins/bookmark.py:173
+#: plugins/bookmark.py:176
msgid "Bookmark Widget, can show user's bookmark list data in widget."
msgstr ""
-#: plugins/chart.py:24
+#: plugins/chart.py:25
msgid "Show models simple chart."
msgstr ""
-#: plugins/chart.py:49
+#: plugins/chart.py:51
#, python-format
msgid "%s Charts"
msgstr ""
@@ -345,27 +419,27 @@ msgstr[0] ""
msgstr[1] ""
msgstr[2] ""
-#: plugins/details.py:52 views/list.py:576
+#: plugins/details.py:52 views/list.py:578
#, python-format
msgid "Details of %s"
msgstr "Детали %s"
-#: plugins/editable.py:47
+#: plugins/editable.py:46
#, python-format
msgid "Enter %s"
msgstr ""
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
+#: plugins/editable.py:73 views/dashboard.py:649 views/delete.py:27
+#: views/detail.py:145 views/edit.py:454
#, python-format
msgid "%(name)s object with primary key %(key)r does not exist."
msgstr ""
-#: plugins/export.py:87
+#: plugins/export.py:98 plugins/export.py:135
msgid "Sheet"
msgstr "Лист"
-#: plugins/filters.py:125
+#: plugins/filters.py:133 plugins/quickfilter.py:141
#, python-format
msgid "Filtering error: %s"
msgstr ""
@@ -390,11 +464,11 @@ msgstr "Загрузить"
msgid "Change:"
msgstr "Изменить:"
-#: plugins/layout.py:15
+#: plugins/layout.py:16
msgid "Table"
msgstr ""
-#: plugins/layout.py:21
+#: plugins/layout.py:22
msgid "Thumbnails"
msgstr ""
@@ -402,20 +476,25 @@ msgstr ""
msgid "Forgotten your password or username?"
msgstr ""
-#: plugins/quickform.py:77
+#: plugins/quickform.py:79
#, python-format
msgid "Create New %s"
msgstr ""
-#: plugins/relate.py:73
+#: plugins/relate.py:104
msgid "Related Objects"
msgstr "Связанные объекты"
-#: plugins/relfield.py:29 plugins/topnav.py:35
+#: plugins/relfield.py:29 plugins/topnav.py:38
#, python-format
msgid "Search %s"
msgstr "Поиск %s"
+#: plugins/relfield.py:67
+#, python-format
+msgid "Select %s"
+msgstr ""
+
#: plugins/themes.py:47
msgid "Default"
msgstr ""
@@ -432,88 +511,92 @@ msgstr ""
msgid "Bootstrap 2.x theme"
msgstr ""
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
+#: plugins/topnav.py:62 views/dashboard.py:465 views/edit.py:387
+#: views/edit.py:396
#, python-format
msgid "Add %s"
msgstr "Добавить %s"
-#: plugins/xversion.py:130
+#: plugins/xversion.py:106
msgid "Initial version."
msgstr ""
-#: plugins/xversion.py:132
+#: plugins/xversion.py:108
msgid "Change version."
msgstr ""
-#: plugins/xversion.py:134
+#: plugins/xversion.py:110
msgid "Revert version."
msgstr ""
-#: plugins/xversion.py:136
+#: plugins/xversion.py:112
msgid "Rercover version."
msgstr ""
-#: plugins/xversion.py:138
+#: plugins/xversion.py:114
#, python-format
msgid "Deleted %(verbose_name)s."
msgstr ""
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
msgid "Recover"
msgstr ""
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
+#: plugins/xversion.py:143 templates/xadmin/views/model_history.html:11
#: templates/xadmin/views/revision_diff.html:11
#: templates/xadmin/views/revision_form.html:15
msgid "History"
msgstr "История"
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
+#: plugins/xversion.py:194 templates/xadmin/views/recover_form.html:14
#: templates/xadmin/views/recover_list.html:10
#, python-format
msgid "Recover deleted %(name)s"
msgstr ""
-#: plugins/xversion.py:263
+#: plugins/xversion.py:238
#, python-format
msgid "Change history: %s"
msgstr ""
-#: plugins/xversion.py:313
+#: plugins/xversion.py:288
msgid "Must select two versions."
msgstr "Необходимо выбрать две версии."
-#: plugins/xversion.py:321
+#: plugins/xversion.py:296
msgid "Please select two different versions."
msgstr "Пожалуйста, выберите две различные версии."
-#: plugins/xversion.py:408 plugins/xversion.py:516
+#: plugins/xversion.py:383 plugins/xversion.py:500
#, python-format
msgid "Current: %s"
msgstr ""
-#: plugins/xversion.py:440
+#: plugins/xversion.py:424
#, python-format
msgid "Revert %s"
msgstr ""
-#: plugins/xversion.py:456
+#: plugins/xversion.py:440
#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
msgstr ""
-#: plugins/xversion.py:477
+#: plugins/xversion.py:461
#, python-format
msgid "Recover %s"
msgstr ""
-#: plugins/xversion.py:493
+#: plugins/xversion.py:477
#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
msgstr ""
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
msgid "Page not found"
msgstr "Страница не найдена"
@@ -521,9 +604,10 @@ msgstr "Страница не найдена"
msgid "We're sorry, but the requested page could not be found."
msgstr ""
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
+#: templates/xadmin/500.html:7
#: templates/xadmin/auth/user/change_password.html:10
#: templates/xadmin/auth/user/change_password.html:15
+#: templates/xadmin/base_site.html:53
#: templates/xadmin/includes/sitemenu_default.html:7
#: templates/xadmin/views/app_index.html:9
#: templates/xadmin/views/batch_change_form.html:9
@@ -534,7 +618,7 @@ msgstr ""
#: templates/xadmin/views/recover_form.html:8
#: templates/xadmin/views/recover_list.html:8
#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
+#: templates/xadmin/views/revision_form.html:8 views/base.py:473
msgid "Home"
msgstr "Главная"
@@ -551,19 +635,9 @@ msgid "Server Error (500)"
msgstr ""
#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr ""
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "Выйти"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
#: templates/xadmin/auth/password_reset/complete.html:11
@@ -584,8 +658,12 @@ msgid "Enter new password"
msgstr "Введите новый пароль:"
#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "Пожалуйста, введите новый пароль дважды, чтобы мы могли убедиться в правильности написания."
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr ""
+"Пожалуйста, введите новый пароль дважды, чтобы мы могли убедиться в "
+"правильности написания."
#: templates/xadmin/auth/password_reset/confirm.html:19
msgid "Change my password"
@@ -596,17 +674,30 @@ msgid "Password reset unsuccessful"
msgstr "Ошибка восстановления пароля"
#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "Неверная ссылка для восстановления пароля. Возможно, ей уже воспользовались. Пожалуйста, попробуйте восстановить пароль еще раз."
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr ""
+"Неверная ссылка для восстановления пароля. Возможно, ей уже воспользовались. "
+"Пожалуйста, попробуйте восстановить пароль еще раз."
#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "Мы отправили инструкцию по восстановлению пароля на указанный вами адрес электронной почты. Вы должны её вскоре получить."
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"Мы отправили инструкцию по восстановлению пароля на указанный вами адрес "
+"электронной почты. Вы должны её вскоре получить."
#: templates/xadmin/auth/password_reset/email.html:2
#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
-msgstr "Вы получили это письмо, потому что вы (или кто-то другой) запросили восстановление пароля от учётной записи на сайте %(site_name)s, которая связана с этим адресом электронной почты."
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr ""
+"Вы получили это письмо, потому что вы (или кто-то другой) запросили "
+"восстановление пароля от учётной записи на сайте %(site_name)s, которая "
+"связана с этим адресом электронной почты."
#: templates/xadmin/auth/password_reset/email.html:4
msgid "Please go to the following page and choose a new password:"
@@ -630,7 +721,9 @@ msgid "Password reset"
msgstr "Восстановление пароля"
#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
msgstr ""
#: templates/xadmin/auth/password_reset/form.html:25
@@ -642,7 +735,9 @@ msgid "Reset my password"
msgstr ""
#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
msgstr ""
#: templates/xadmin/auth/user/add_form.html:8
@@ -668,19 +763,32 @@ msgstr ""
msgid "Enter a new password for the user %(username)s."
msgstr ""
+#: templates/xadmin/base_site.html:18
+msgid "Welcome,"
+msgstr ""
+
+#: templates/xadmin/base_site.html:24
+msgid "Log out"
+msgstr "Выйти"
+
+#: templates/xadmin/base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr ""
+
#: templates/xadmin/blocks/comm.top.theme.html:4
msgid "Themes"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:8
+#: templates/xadmin/blocks/comm.top.topnav.html:9
+#: templates/xadmin/blocks/model_list.nav_form.search_form.html:8
#: templates/xadmin/filters/char.html:7
#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
+#: templates/xadmin/filters/fk_search.html:16
#: templates/xadmin/filters/number.html:7
msgid "Search"
msgstr ""
-#: templates/xadmin/blocks/comm.top.topnav.html:22
+#: templates/xadmin/blocks/comm.top.topnav.html:23
msgid "Add"
msgstr ""
@@ -698,7 +806,7 @@ msgstr ""
#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Save"
msgstr ""
@@ -744,7 +852,7 @@ msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
+msgid "Select all %(total_count)s %(model_name)s"
msgstr ""
#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
@@ -758,26 +866,27 @@ msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:47
msgid "Export"
msgstr ""
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
msgid "Export with table header."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:38
msgid "Export with format."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
msgid "Export all data."
msgstr ""
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
msgid "Close"
msgstr ""
@@ -794,8 +903,12 @@ msgstr ""
msgid "Every %(t)s seconds"
msgstr ""
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
+#: templates/xadmin/blocks/model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr ""
+
+#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:23
+#: views/edit.py:102 views/list.py:29
msgid "Null"
msgstr ""
@@ -833,7 +946,7 @@ msgstr ""
#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
+#: templates/xadmin/filters/fk_search.html:24
#: templates/xadmin/filters/number.html:37
msgid "Apply"
msgstr ""
@@ -854,7 +967,11 @@ msgstr ""
msgid "To"
msgstr ""
-#: templates/xadmin/filters/fk_search.html:18
+#: templates/xadmin/filters/fk_search.html:14
+msgid "Select"
+msgstr ""
+
+#: templates/xadmin/filters/fk_search.html:26
#: templates/xadmin/filters/number.html:39
msgid "Clean"
msgstr ""
@@ -887,7 +1004,7 @@ msgid "Choose"
msgstr ""
#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
+#: templates/xadmin/widgets/base.html:40
msgid "Remove"
msgstr ""
@@ -909,7 +1026,7 @@ msgstr ""
#: templates/xadmin/includes/submit_line.html:10
#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
+#: templates/xadmin/views/form.html:30 templates/xadmin/views/form.html:31
msgid "Saving.."
msgstr ""
@@ -926,7 +1043,7 @@ msgid "Save and continue editing"
msgstr ""
#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
msgid "Delete"
msgstr ""
@@ -958,7 +1075,10 @@ msgid "Add Widget"
msgstr ""
#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
msgstr ""
#: templates/xadmin/views/logged_out.html:16
@@ -1000,17 +1120,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:11
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:19
#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:27
#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_delete_confirm.html:34
@@ -1029,17 +1156,24 @@ msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:18
#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:26
#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
msgstr ""
#: templates/xadmin/views/model_delete_selected_confirm.html:34
#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
msgstr ""
#: templates/xadmin/views/model_history.html:26
@@ -1064,7 +1198,9 @@ msgid "Diff Select Versions"
msgstr ""
#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
msgstr ""
#: templates/xadmin/views/model_list.html:29
@@ -1090,7 +1226,8 @@ msgid "Press the recover button below to recover this version of the object."
msgstr ""
#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
msgstr ""
#: templates/xadmin/views/recover_list.html:39
@@ -1149,127 +1286,153 @@ msgstr ""
msgid "Quick Add"
msgstr ""
-#: templates/xadmin/widgets/base.html:30
+#: templates/xadmin/widgets/base.html:31
msgid "Widget Options"
msgstr ""
-#: templates/xadmin/widgets/base.html:41
+#: templates/xadmin/widgets/base.html:42
msgid "Save changes"
msgstr ""
-#: views/base.py:430
+#: views/base.py:315
msgid "Django Xadmin"
msgstr ""
-#: views/dashboard.py:185
-msgid "Widget ID"
+#: views/base.py:316
+msgid "my-company.inc"
msgstr ""
#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr ""
+
+#: views/dashboard.py:187
msgid "Widget Title"
msgstr ""
-#: views/dashboard.py:248
+#: views/dashboard.py:252
msgid "Html Content Widget, can write any html content in widget."
msgstr ""
-#: views/dashboard.py:251
+#: views/dashboard.py:255
msgid "Html Content"
msgstr ""
-#: views/dashboard.py:314
+#: views/dashboard.py:318
msgid "Target Model"
msgstr ""
-#: views/dashboard.py:365
+#: views/dashboard.py:369
msgid "Quick button Widget, quickly open any page."
msgstr ""
-#: views/dashboard.py:367
+#: views/dashboard.py:371
msgid "Quick Buttons"
msgstr ""
-#: views/dashboard.py:408
+#: views/dashboard.py:416
msgid "Any Objects list Widget."
msgstr ""
-#: views/dashboard.py:447
+#: views/dashboard.py:456
msgid "Add any model object Widget."
msgstr ""
-#: views/dashboard.py:481
+#: views/dashboard.py:492
msgid "Dashboard"
msgstr ""
-#: views/dashboard.py:622
+#: views/dashboard.py:633
#, python-format
msgid "%s Dashboard"
msgstr ""
-#: views/delete.py:101
+#: views/delete.py:103
#, python-format
msgid "The %(name)s \"%(obj)s\" was deleted successfully."
msgstr ""
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
msgid "Other Fields"
msgstr ""
-#: views/detail.py:233
+#: views/detail.py:235
#, python-format
msgid "%s Detail"
msgstr ""
-#: views/edit.py:394
+#: views/edit.py:253
+msgid "Added."
+msgstr ""
+
+#: views/edit.py:255
+#, fuzzy, python-format
+#| msgid "Change %s"
+msgid "Changed %s."
+msgstr "Изменить %s"
+
+#: views/edit.py:255
+msgid "and"
+msgstr ""
+
+#: views/edit.py:258
+msgid "No fields changed."
+msgstr ""
+
+#: views/edit.py:420
#, python-format
msgid "The %(name)s \"%(obj)s\" was added successfully."
msgstr ""
-#: views/edit.py:399 views/edit.py:494
+#: views/edit.py:425 views/edit.py:520
msgid "You may edit it again below."
msgstr ""
-#: views/edit.py:403 views/edit.py:497
+#: views/edit.py:429 views/edit.py:523
#, python-format
msgid "You may add another %s below."
msgstr ""
-#: views/edit.py:445
+#: views/edit.py:471
#, python-format
msgid "Change %s"
msgstr "Изменить %s"
-#: views/edit.py:490
+#: views/edit.py:516
#, python-format
msgid "The %(name)s \"%(obj)s\" was changed successfully."
msgstr ""
-#: views/form.py:164
+#: views/form.py:165
#, fuzzy, python-format
msgid "The %s was changed successfully."
msgstr "Пароль успешно изменен"
-#: views/list.py:198
+#: views/list.py:199
msgid "Database error"
msgstr ""
-#: views/list.py:372
+#: views/list.py:373
#, python-format
msgid "%s List"
msgstr ""
-#: views/list.py:500
+#: views/list.py:499
msgid "Sort ASC"
msgstr ""
-#: views/list.py:501
+#: views/list.py:500
msgid "Sort DESC"
msgstr ""
-#: views/list.py:505
+#: views/list.py:504
msgid "Cancel Sort"
msgstr ""
#: views/website.py:16
msgid "Main Dashboard"
msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Сейчас"
diff --git a/xadmin/locale/zh_CN/LC_MESSAGES/django.mo b/xadmin/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index ea9ad2235..000000000
Binary files a/xadmin/locale/zh_CN/LC_MESSAGES/django.mo and /dev/null differ
diff --git a/xadmin/locale/zh_CN/LC_MESSAGES/django.po b/xadmin/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 404dbddb6..000000000
--- a/xadmin/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1265 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Translators:
-# sshwsfc , 2013
-# sshwsfc , 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: xadmin-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-10 10:31+0800\n"
-"PO-Revision-Date: 2013-11-20 10:21+0000\n"
-"Last-Translator: sshwsfc \n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/xadmin/language/zh_CN/)\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: filters.py:157 filters.py:189 filters.py:401 filters.py:451
-msgid "All"
-msgstr "全部"
-
-#: filters.py:158 plugins/export.py:117
-msgid "Yes"
-msgstr "是"
-
-#: filters.py:159 plugins/export.py:117
-msgid "No"
-msgstr "否"
-
-#: filters.py:173
-msgid "Unknown"
-msgstr "未知"
-
-#: filters.py:265
-msgid "Any date"
-msgstr "任意日期"
-
-#: filters.py:266
-msgid "Has date"
-msgstr "有日期"
-
-#: filters.py:269
-msgid "Has no date"
-msgstr "无日期"
-
-#: filters.py:272 widgets.py:30
-msgid "Today"
-msgstr "今天"
-
-#: filters.py:276
-msgid "Past 7 days"
-msgstr "过去7天"
-
-#: filters.py:280
-msgid "This month"
-msgstr "本月"
-
-#: filters.py:284
-msgid "This year"
-msgstr "今年"
-
-#: forms.py:10
-msgid "Please enter the correct username and password for a staff account. Note that both fields are case-sensitive."
-msgstr "请输入正确的用户名和密码来登陆您的管理账户。请注意用户名和密码均为大小写相关。"
-
-#: forms.py:21
-msgid "Please log in again, because your session has expired."
-msgstr "请重新登录,因为你的会话已经过期。"
-
-#: forms.py:41
-#, python-format
-msgid "Your e-mail address is not your username. Try '%s' instead."
-msgstr "你的 e-mail 地址不是你的用户名。换 '%s' 试试。"
-
-#: models.py:47
-msgid "Title"
-msgstr "标题"
-
-#: models.py:48 models.py:87 models.py:106
-msgid "user"
-msgstr "用户"
-
-#: models.py:49
-msgid "Url Name"
-msgstr "URL名字"
-
-#: models.py:51
-msgid "Query String"
-msgstr "Query参数"
-
-#: models.py:52
-msgid "Is Shared"
-msgstr "是否共享"
-
-#: models.py:65 plugins/bookmark.py:49 plugins/bookmark.py:177
-msgid "Bookmark"
-msgstr "书签"
-
-#: models.py:66
-msgid "Bookmarks"
-msgstr "书签"
-
-#: models.py:88
-msgid "Settings Key"
-msgstr "设置KEY"
-
-#: models.py:89
-msgid "Settings Content"
-msgstr "设置内容"
-
-#: models.py:101
-msgid "User Setting"
-msgstr "用户设置"
-
-#: models.py:102
-msgid "User Settings"
-msgstr "用户设置"
-
-#: models.py:107
-msgid "Page"
-msgstr "页面"
-
-#: models.py:108 views/dashboard.py:81 views/dashboard.py:91
-msgid "Widget Type"
-msgstr "Widget类型"
-
-#: models.py:109 views/dashboard.py:82
-msgid "Widget Params"
-msgstr "Widget参数"
-
-#: models.py:136
-msgid "User Widget"
-msgstr "用户小组件"
-
-#: models.py:137
-msgid "User Widgets"
-msgstr "用户小组件"
-
-#: widgets.py:48
-msgid "Now"
-msgstr "现在"
-
-#: plugins/actions.py:54
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "删除所选的 %(verbose_name_plural)s"
-
-#: plugins/actions.py:67
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "成功删除了 %(count)d 个 %(items)s"
-
-#: plugins/actions.py:99 views/delete.py:68
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "无法删除 %(name)s"
-
-#: plugins/actions.py:101 views/delete.py:71
-msgid "Are you sure?"
-msgstr "你确定吗?"
-
-#: plugins/actions.py:147
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "选中了 %(total_count)s 个"
-
-#: plugins/actions.py:151
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s 个中 0 个被选"
-
-#: plugins/actions.py:168 plugins/actions.py:178
-msgid "Items must be selected in order to perform actions on them. No items have been changed."
-msgstr "条目必须选中以对其进行操作。没有任何条目被更改。"
-
-#: plugins/aggregation.py:14
-msgid "Min"
-msgstr "最小"
-
-#: plugins/aggregation.py:14
-msgid "Max"
-msgstr "最大"
-
-#: plugins/aggregation.py:14
-msgid "Avg"
-msgstr "平均"
-
-#: plugins/aggregation.py:14
-msgid "Sum"
-msgstr "总和"
-
-#: plugins/aggregation.py:14
-msgid "Count"
-msgstr "总数"
-
-#: plugins/auth.py:21
-#, fuzzy, python-format
-msgid "Can add %s"
-msgstr "可查看%s"
-
-#: plugins/auth.py:22
-#, fuzzy, python-format
-msgid "Can change %s"
-msgstr "修改 %s"
-
-#: plugins/auth.py:23
-#, fuzzy, python-format
-msgid "Can edit %s"
-msgstr "可查看%s"
-
-#: plugins/auth.py:24
-#, fuzzy, python-format
-msgid "Can delete %s"
-msgstr "无法删除 %(name)s"
-
-#: plugins/auth.py:25
-#, python-format
-msgid "Can view %s"
-msgstr "可查看%s"
-
-#: plugins/auth.py:87
-msgid "Personal info"
-msgstr "个人信息"
-
-#: plugins/auth.py:91
-msgid "Permissions"
-msgstr "权限"
-
-#: plugins/auth.py:94
-msgid "Important dates"
-msgstr "重要日期"
-
-#: plugins/auth.py:99
-msgid "Status"
-msgstr "状态"
-
-#: plugins/auth.py:111
-#, fuzzy
-msgid "Permission Name"
-msgstr "权限"
-
-#: plugins/auth.py:159
-msgid "Change Password"
-msgstr "更改密码"
-
-#: plugins/auth.py:189
-#, python-format
-msgid "Change password: %s"
-msgstr "更改密码:%s"
-
-#: plugins/auth.py:214 plugins/auth.py:246
-msgid "Password changed successfully."
-msgstr "密码更改成功"
-
-#: plugins/auth.py:233 templates/xadmin/auth/user/change_password.html:11
-#: templates/xadmin/auth/user/change_password.html:22
-#: templates/xadmin/auth/user/change_password.html:55
-msgid "Change password"
-msgstr "修改密码"
-
-#: plugins/batch.py:44
-msgid "Change this field"
-msgstr "修改该字段"
-
-#: plugins/batch.py:65
-#, python-format
-msgid "Batch Change selected %(verbose_name_plural)s"
-msgstr "批量修改选择的%(verbose_name_plural)s"
-
-#: plugins/batch.py:90
-#, python-format
-msgid "Successfully change %(count)d %(items)s."
-msgstr "成功修改了 %(count)d 个 %(items)s"
-
-#: plugins/batch.py:138
-#, python-format
-msgid "Batch change %s"
-msgstr "批量修改 %s"
-
-#: plugins/bookmark.py:171
-msgid "bookmark"
-msgstr "书签"
-
-#: plugins/bookmark.py:173
-msgid "Bookmark Widget, can show user's bookmark list data in widget."
-msgstr "书签组件,展示用户书签页内容。"
-
-#: plugins/chart.py:24
-msgid "Show models simple chart."
-msgstr "展示简单数据图表"
-
-#: plugins/chart.py:49
-#, python-format
-msgid "%s Charts"
-msgstr "%s图表"
-
-#: plugins/comments.py:33
-msgid "Metadata"
-msgstr ""
-
-#: plugins/comments.py:60
-msgid "flagged"
-msgid_plural "flagged"
-msgstr[0] ""
-
-#: plugins/comments.py:61
-msgid "Flag selected comments"
-msgstr ""
-
-#: plugins/comments.py:66
-msgid "approved"
-msgid_plural "approved"
-msgstr[0] ""
-
-#: plugins/comments.py:67
-msgid "Approve selected comments"
-msgstr ""
-
-#: plugins/comments.py:72
-#, fuzzy
-msgid "removed"
-msgid_plural "removed"
-msgstr[0] "删除"
-
-#: plugins/comments.py:73
-#, fuzzy
-msgid "Remove selected comments"
-msgstr "恢复删除的%(name)s"
-
-#: plugins/comments.py:86
-#, python-format
-msgid "1 comment was successfully %(action)s."
-msgid_plural "%(count)s comments were successfully %(action)s."
-msgstr[0] ""
-
-#: plugins/details.py:52 views/list.py:576
-#, python-format
-msgid "Details of %s"
-msgstr "%s详情"
-
-#: plugins/editable.py:47
-#, python-format
-msgid "Enter %s"
-msgstr "输入%s"
-
-#: plugins/editable.py:74 views/dashboard.py:638 views/delete.py:26
-#: views/detail.py:144 views/edit.py:428
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "具有主键 %(key)r 的对象 %(name)s 不存在。"
-
-#: plugins/export.py:87
-msgid "Sheet"
-msgstr "表"
-
-#: plugins/filters.py:125
-#, python-format
-msgid "Filtering error: %s"
-msgstr "过滤器错误: %s"
-
-#: plugins/images.py:29
-msgid "Previous"
-msgstr "上一个"
-
-#: plugins/images.py:29
-msgid "Next"
-msgstr "下一个"
-
-#: plugins/images.py:29
-msgid "Slideshow"
-msgstr "幻灯片"
-
-#: plugins/images.py:29
-msgid "Download"
-msgstr "下载"
-
-#: plugins/images.py:50
-msgid "Change:"
-msgstr "修改:"
-
-#: plugins/layout.py:15
-msgid "Table"
-msgstr "表格"
-
-#: plugins/layout.py:21
-msgid "Thumbnails"
-msgstr "图标"
-
-#: plugins/passwords.py:64
-msgid "Forgotten your password or username?"
-msgstr "忘记了您的密码或用户名?"
-
-#: plugins/quickform.py:77
-#, python-format
-msgid "Create New %s"
-msgstr "创建新的 %s"
-
-#: plugins/relate.py:73
-msgid "Related Objects"
-msgstr "关联数据"
-
-#: plugins/relfield.py:29 plugins/topnav.py:35
-#, python-format
-msgid "Search %s"
-msgstr "搜索%s"
-
-#: plugins/themes.py:47
-msgid "Default"
-msgstr "默认"
-
-#: plugins/themes.py:48
-msgid "Default bootstrap theme"
-msgstr "默认Bootstrap主题"
-
-#: plugins/themes.py:49
-msgid "Bootstrap2"
-msgstr "Bootstrap2"
-
-#: plugins/themes.py:49
-msgid "Bootstrap 2.x theme"
-msgstr "Bootstrap2主题"
-
-#: plugins/topnav.py:58 views/dashboard.py:455 views/edit.py:361
-#: views/edit.py:370
-#, python-format
-msgid "Add %s"
-msgstr "增加 %s"
-
-#: plugins/xversion.py:130
-msgid "Initial version."
-msgstr "初始化版本"
-
-#: plugins/xversion.py:132
-msgid "Change version."
-msgstr "修改版本"
-
-#: plugins/xversion.py:134
-msgid "Revert version."
-msgstr "还原版本"
-
-#: plugins/xversion.py:136
-msgid "Rercover version."
-msgstr "恢复版本"
-
-#: plugins/xversion.py:138
-#, python-format
-msgid "Deleted %(verbose_name)s."
-msgstr "删除%(verbose_name)s。"
-
-#: plugins/xversion.py:166 templates/xadmin/views/recover_form.html:26
-msgid "Recover"
-msgstr "还原"
-
-#: plugins/xversion.py:182 templates/xadmin/views/model_history.html:11
-#: templates/xadmin/views/revision_diff.html:11
-#: templates/xadmin/views/revision_form.html:15
-msgid "History"
-msgstr "历史"
-
-#: plugins/xversion.py:225 templates/xadmin/views/recover_form.html:14
-#: templates/xadmin/views/recover_list.html:10
-#, python-format
-msgid "Recover deleted %(name)s"
-msgstr "恢复删除的%(name)s"
-
-#: plugins/xversion.py:263
-#, python-format
-msgid "Change history: %s"
-msgstr "变更历史: %s"
-
-#: plugins/xversion.py:313
-msgid "Must select two versions."
-msgstr "必须选择两个版本。"
-
-#: plugins/xversion.py:321
-msgid "Please select two different versions."
-msgstr "请选择两个不同的版本。"
-
-#: plugins/xversion.py:408 plugins/xversion.py:516
-#, python-format
-msgid "Current: %s"
-msgstr "当前:%s"
-
-#: plugins/xversion.py:440
-#, python-format
-msgid "Revert %s"
-msgstr "还原%s"
-
-#: plugins/xversion.py:456
-#, python-format
-msgid "The %(model)s \"%(name)s\" was reverted successfully. You may edit it again below."
-msgstr "%(model)s “%(name)s”成功还原,您可以继续编辑。"
-
-#: plugins/xversion.py:477
-#, python-format
-msgid "Recover %s"
-msgstr "恢复%s"
-
-#: plugins/xversion.py:493
-#, python-format
-msgid "The %(model)s \"%(name)s\" was recovered successfully. You may edit it again below."
-msgstr "%(model)s “%(name)s”成功恢复,您可以继续编辑。"
-
-#: templates/xadmin/404.html:4 templates/xadmin/404.html.py:8
-msgid "Page not found"
-msgstr "页面没有找到"
-
-#: templates/xadmin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很报歉,请求页面无法找到。"
-
-#: templates/xadmin/500.html:7 templates/xadmin/base_site.html:53
-#: templates/xadmin/auth/user/change_password.html:10
-#: templates/xadmin/auth/user/change_password.html:15
-#: templates/xadmin/includes/sitemenu_default.html:7
-#: templates/xadmin/views/app_index.html:9
-#: templates/xadmin/views/batch_change_form.html:9
-#: templates/xadmin/views/invalid_setup.html:7
-#: templates/xadmin/views/model_dashboard.html:7
-#: templates/xadmin/views/model_delete_selected_confirm.html:8
-#: templates/xadmin/views/model_history.html:8
-#: templates/xadmin/views/recover_form.html:8
-#: templates/xadmin/views/recover_list.html:8
-#: templates/xadmin/views/revision_diff.html:8
-#: templates/xadmin/views/revision_form.html:8 views/base.py:448
-msgid "Home"
-msgstr "首页"
-
-#: templates/xadmin/500.html:8
-msgid "Server error"
-msgstr "服务器错误"
-
-#: templates/xadmin/500.html:12
-msgid "Server error (500)"
-msgstr "服务器错误(500)"
-
-#: templates/xadmin/500.html:15
-msgid "Server Error (500)"
-msgstr "服务器错误 (500)"
-
-#: templates/xadmin/500.html:16
-msgid "There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience."
-msgstr "发生了一个错误。系统已将错误通过电子邮件报告给了站点管理员,相信问题应该会很快得到解决。感谢您的耐心。"
-
-#: templates/xadmin/base_site.html:19
-msgid "Welcome,"
-msgstr "欢迎,"
-
-#: templates/xadmin/base_site.html:25
-msgid "Log out"
-msgstr "注销"
-
-#: templates/xadmin/base_site.html:37
-msgid "You don't have permission to edit anything."
-msgstr "你无权修改任何东西。"
-
-#: templates/xadmin/auth/password_reset/complete.html:11
-#: templates/xadmin/auth/password_reset/done.html:11
-msgid "Password reset successful"
-msgstr "密码重设成功"
-
-#: templates/xadmin/auth/password_reset/complete.html:14
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "你的口令己经设置。现在你可以继续进行登录。"
-
-#: templates/xadmin/auth/password_reset/complete.html:15
-msgid "Log in"
-msgstr "登录"
-
-#: templates/xadmin/auth/password_reset/confirm.html:12
-msgid "Enter new password"
-msgstr "输入新密码"
-
-#: templates/xadmin/auth/password_reset/confirm.html:17
-msgid "Please enter your new password twice so we can verify you typed it in correctly."
-msgstr "请输入两遍新密码,以便我们校验你输入的是否正确。"
-
-#: templates/xadmin/auth/password_reset/confirm.html:19
-msgid "Change my password"
-msgstr "修改我的密码"
-
-#: templates/xadmin/auth/password_reset/confirm.html:24
-msgid "Password reset unsuccessful"
-msgstr "密码重设失败"
-
-#: templates/xadmin/auth/password_reset/confirm.html:27
-msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset."
-msgstr "密码重置链接无效,可能是因为它已使用。可以请求一次新的密码重置。"
-
-#: templates/xadmin/auth/password_reset/done.html:14
-msgid "We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly."
-msgstr "我们已经按你所提交的电子邮箱地址发送了密码设置说明。你应该很快就能收到这封邮件。"
-
-#: templates/xadmin/auth/password_reset/email.html:2
-#, python-format
-msgid "You're receiving this e-mail because you requested a password reset for your user account at %(site_name)s."
-msgstr "因为你要求重置 %(site_name)s 上的账户密码, 所以收到了这封邮件."
-
-#: templates/xadmin/auth/password_reset/email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "请访问该页面并选择一个新密码:"
-
-#: templates/xadmin/auth/password_reset/email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "你的用户名,如果已忘记的话:"
-
-#: templates/xadmin/auth/password_reset/email.html:10
-msgid "Thanks for using our site!"
-msgstr "感谢使用我们的站点!"
-
-#: templates/xadmin/auth/password_reset/email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 团队"
-
-#: templates/xadmin/auth/password_reset/form.html:13
-msgid "Password reset"
-msgstr "密码重设"
-
-#: templates/xadmin/auth/password_reset/form.html:17
-msgid "Forgotten your password? Enter your e-mail address below, and we'll e-mail instructions for setting a new one."
-msgstr "忘记了你的密码?请在下面输入你的 e-mail 地址,我们将把新密码设置说明通过邮件发送给你。"
-
-#: templates/xadmin/auth/password_reset/form.html:25
-msgid "E-mail address:"
-msgstr "E-mail 地址:"
-
-#: templates/xadmin/auth/password_reset/form.html:33
-msgid "Reset my password"
-msgstr "重设我的密码"
-
-#: templates/xadmin/auth/user/add_form.html:6
-msgid "First, enter a username and password. Then, you'll be able to edit more user options."
-msgstr "首先,输入一个用户名和密码。然后,你就可以编辑更多的用户选项。"
-
-#: templates/xadmin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "输入用户名和"
-
-#: templates/xadmin/auth/user/change_password.html:31
-#: templates/xadmin/views/batch_change_form.html:24
-#: templates/xadmin/views/form.html:18
-#: templates/xadmin/views/model_form.html:20
-msgid "Please correct the error below."
-msgid_plural "Please correct the errors below."
-msgstr[0] "请修正下面的错误。"
-
-#: templates/xadmin/auth/user/change_password.html:38
-msgid "Enter your new password."
-msgstr "输入你的新密码"
-
-#: templates/xadmin/auth/user/change_password.html:40
-#, python-format
-msgid "Enter a new password for the user %(username)s."
-msgstr "为用户 %(username)s 输入一个新的密码。"
-
-#: templates/xadmin/blocks/comm.top.theme.html:4
-msgid "Themes"
-msgstr "主题"
-
-#: templates/xadmin/blocks/comm.top.topnav.html:8
-#: templates/xadmin/filters/char.html:7
-#: templates/xadmin/filters/fk_search.html:7
-#: templates/xadmin/filters/fk_search.html:14
-#: templates/xadmin/filters/number.html:7
-msgid "Search"
-msgstr "搜索"
-
-#: templates/xadmin/blocks/comm.top.topnav.html:22
-msgid "Add"
-msgstr "增加"
-
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
-msgid "Prev step"
-msgstr "上一步"
-
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
-msgid "Next step"
-msgstr "下一步"
-
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:15
-#: templates/xadmin/blocks/model_form.submit_line.wizard.html:31
-#: templates/xadmin/includes/submit_line.html:10
-#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
-msgid "Save"
-msgstr "保存"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
-msgid "Clean Bookmarks"
-msgstr "清除书签"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
-msgid "No Bookmarks"
-msgstr "没有书签"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
-msgid "New Bookmark"
-msgstr "新建书签"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
-msgid "Save current page as Bookmark"
-msgstr "将当前页面保存为书签"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
-msgid "Enter bookmark title"
-msgstr "输入书签标题"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
-msgid "Waiting"
-msgstr "请稍侯"
-
-#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
-msgid "Save Bookmark"
-msgstr "保存书签"
-
-#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
-msgid "Filters"
-msgstr "过滤器"
-
-#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
-msgid "Clean Filters"
-msgstr "清除过滤器"
-
-#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
-msgid "Click here to select the objects across all pages"
-msgstr "点击此处选择所有页面中包含的对象。"
-
-#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "选中所有的 %(total_count)s 个 %(module_name)s"
-
-#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
-msgid "Clear selection"
-msgstr "清除选中"
-
-#: templates/xadmin/blocks/model_list.results_top.charts.html:4
-msgid "Charts"
-msgstr "图表"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:4
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:8
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:19
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:44
-msgid "Export"
-msgstr "导出"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:26
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:29
-msgid "Export with table header."
-msgstr "导出表头"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:32
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:35
-msgid "Export with format."
-msgstr "导出格式"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:39
-msgid "Export all data."
-msgstr "导出全部数据"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:43
-#: templates/xadmin/widgets/base.html:40
-msgid "Close"
-msgstr "关闭"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.layouts.html:4
-msgid "Layout"
-msgstr "布局"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:8
-msgid "Clean Refresh"
-msgstr "清除自动刷新"
-
-#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
-#, python-format
-msgid "Every %(t)s seconds"
-msgstr "每 %(t)s 秒"
-
-#: templates/xadmin/edit_inline/blank.html:5 views/detail.py:22
-#: views/edit.py:100 views/list.py:28
-msgid "Null"
-msgstr "空"
-
-#: templates/xadmin/filters/char.html:13
-msgid "Enter"
-msgstr "输入"
-
-#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
-msgid "Choice Date"
-msgstr "选择日期"
-
-#: templates/xadmin/filters/date.html:18
-msgid "YY"
-msgstr "年"
-
-#: templates/xadmin/filters/date.html:19
-msgid "year"
-msgstr "年"
-
-#: templates/xadmin/filters/date.html:22
-msgid "MM"
-msgstr "月"
-
-#: templates/xadmin/filters/date.html:23
-msgid "month"
-msgstr "月"
-
-#: templates/xadmin/filters/date.html:26
-msgid "DD"
-msgstr "日"
-
-#: templates/xadmin/filters/date.html:27
-msgid "day"
-msgstr "日"
-
-#: templates/xadmin/filters/date.html:29 templates/xadmin/filters/date.html:46
-#: templates/xadmin/filters/date.html:54
-#: templates/xadmin/filters/fk_search.html:16
-#: templates/xadmin/filters/number.html:37
-msgid "Apply"
-msgstr "应用"
-
-#: templates/xadmin/filters/date.html:34
-msgid "Date Range"
-msgstr "日期范围"
-
-#: templates/xadmin/filters/date.html:41
-msgid "Select Date"
-msgstr "选择日期"
-
-#: templates/xadmin/filters/date.html:42
-msgid "From"
-msgstr "从"
-
-#: templates/xadmin/filters/date.html:44
-msgid "To"
-msgstr "到"
-
-#: templates/xadmin/filters/fk_search.html:18
-#: templates/xadmin/filters/number.html:39
-msgid "Clean"
-msgstr "清除"
-
-#: templates/xadmin/filters/number.html:17
-#: templates/xadmin/filters/number.html:25
-#: templates/xadmin/filters/number.html:33
-msgid "Enter Number"
-msgstr "输入数字"
-
-#: templates/xadmin/filters/rel.html:3
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " 以 %(filter_title)s"
-
-#: templates/xadmin/forms/transfer.html:4
-msgid "Available"
-msgstr "可用项"
-
-#: templates/xadmin/forms/transfer.html:12
-msgid "Click to choose all at once."
-msgstr "点击一次性选择全部"
-
-#: templates/xadmin/forms/transfer.html:12
-msgid "Choose all"
-msgstr "选择全部"
-
-#: templates/xadmin/forms/transfer.html:16
-msgid "Choose"
-msgstr "选择"
-
-#: templates/xadmin/forms/transfer.html:19
-#: templates/xadmin/widgets/base.html:39
-msgid "Remove"
-msgstr "删除"
-
-#: templates/xadmin/forms/transfer.html:23
-msgid "Chosen"
-msgstr "已选项"
-
-#: templates/xadmin/forms/transfer.html:27
-msgid "Click to remove all chosen at once."
-msgstr "点击一次性删除全部"
-
-#: templates/xadmin/forms/transfer.html:27
-msgid "Remove all"
-msgstr "删除全部"
-
-#: templates/xadmin/includes/pagination.html:9
-msgid "Show all"
-msgstr "显示全部"
-
-#: templates/xadmin/includes/submit_line.html:10
-#: templates/xadmin/includes/submit_line.html:13
-#: templates/xadmin/views/form.html:30
-msgid "Saving.."
-msgstr "保存中.."
-
-#: templates/xadmin/includes/submit_line.html:17
-msgid "Save as new"
-msgstr "保存为新的"
-
-#: templates/xadmin/includes/submit_line.html:18
-msgid "Save and add another"
-msgstr "保存并增加另一个"
-
-#: templates/xadmin/includes/submit_line.html:19
-msgid "Save and continue editing"
-msgstr "保存并继续编辑"
-
-#: templates/xadmin/includes/submit_line.html:24
-#: templates/xadmin/views/model_detail.html:28 views/delete.py:91
-msgid "Delete"
-msgstr "删除"
-
-#: templates/xadmin/views/app_index.html:13
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/xadmin/views/batch_change_form.html:11
-msgid "Change multiple objects"
-msgstr "修改多个数据"
-
-#: templates/xadmin/views/batch_change_form.html:16
-#, python-format
-msgid "Change one %(objects_name)s"
-msgid_plural "Batch change %(counter)s %(objects_name)s"
-msgstr[0] "批量修改 %(counter)s 个 %(objects_name)s"
-
-#: templates/xadmin/views/batch_change_form.html:38
-msgid "Change Multiple"
-msgstr "修改多个数据"
-
-#: templates/xadmin/views/dashboard.html:15
-#: templates/xadmin/views/dashboard.html:22
-#: templates/xadmin/views/dashboard.html:23
-msgid "Add Widget"
-msgstr "添加小组件"
-
-#: templates/xadmin/views/invalid_setup.html:13
-msgid "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user."
-msgstr "你的数据库安装有误。确保已经创建了相应的数据库表,并确保数据库可被相关的用户读取。"
-
-#: templates/xadmin/views/logged_out.html:16
-msgid "Logout Success"
-msgstr "成功退出"
-
-#: templates/xadmin/views/logged_out.html:17
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感谢您今天在本站花费了一些宝贵时间。"
-
-#: templates/xadmin/views/logged_out.html:19
-msgid "Close Window"
-msgstr "关闭窗口"
-
-#: templates/xadmin/views/logged_out.html:20
-msgid "Log in again"
-msgstr "重新登录"
-
-#: templates/xadmin/views/login.html:39 views/website.py:38
-msgid "Please Login"
-msgstr "请登录"
-
-#: templates/xadmin/views/login.html:52
-msgid "Username"
-msgstr "用户名"
-
-#: templates/xadmin/views/login.html:64
-msgid "Password"
-msgstr "密码"
-
-#: templates/xadmin/views/login.html:75
-msgid "log in"
-msgstr "登录"
-
-#: templates/xadmin/views/model_dashboard.html:26
-#: templates/xadmin/views/model_detail.html:25
-msgid "Edit"
-msgstr "编辑"
-
-#: templates/xadmin/views/model_delete_confirm.html:11
-#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "要删除所选的%(verbose_name)s '%(escaped_object)s' 结果会删除相关对象, 但你的账户没有权限删除这类对象:"
-
-#: templates/xadmin/views/model_delete_confirm.html:19
-#, python-format
-msgid "Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting the following protected related objects:"
-msgstr "要删除所选的%(verbose_name)s '%(escaped_object)s' 将要求删除以下受保护的相关对象:"
-
-#: templates/xadmin/views/model_delete_confirm.html:27
-#, python-format
-msgid "Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? All of the following related items will be deleted:"
-msgstr "请确认要删除选中的%(verbose_name)s \"%(escaped_object)s\"吗?以下所有对象和余它们相关的条目将都会被删除:"
-
-#: templates/xadmin/views/model_delete_confirm.html:34
-#: templates/xadmin/views/model_delete_selected_confirm.html:49
-msgid "Yes, I'm sure"
-msgstr "是的,我确定"
-
-#: templates/xadmin/views/model_delete_confirm.html:35
-#: templates/xadmin/views/model_delete_selected_confirm.html:50
-msgid "Cancel"
-msgstr "取消"
-
-#: templates/xadmin/views/model_delete_selected_confirm.html:10
-msgid "Delete multiple objects"
-msgstr "删除多个对象"
-
-#: templates/xadmin/views/model_delete_selected_confirm.html:18
-#, python-format
-msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
-msgstr "要删除所选的 %(objects_name)s 结果会删除相关对象, 但你的账户没有权限删除这类对象:"
-
-#: templates/xadmin/views/model_delete_selected_confirm.html:26
-#, python-format
-msgid "Deleting the selected %(objects_name)s would require deleting the following protected related objects:"
-msgstr "要删除所选的 %(objects_name)s, 将要求删除以下受保护的相关对象:"
-
-#: templates/xadmin/views/model_delete_selected_confirm.html:34
-#, python-format
-msgid "Are you sure you want to delete the selected %(objects_name)s? All of the following objects and their related items will be deleted:"
-msgstr "请确认要删除选中的 %(objects_name)s 吗?以下所有对象和余它们相关的条目将都会被删除:"
-
-#: templates/xadmin/views/model_history.html:26
-msgid "Diff"
-msgstr "不同"
-
-#: templates/xadmin/views/model_history.html:27
-#: templates/xadmin/views/recover_list.html:25
-msgid "Date/time"
-msgstr "日期/时间"
-
-#: templates/xadmin/views/model_history.html:28
-msgid "User"
-msgstr "用户"
-
-#: templates/xadmin/views/model_history.html:29
-msgid "Comment"
-msgstr "注释"
-
-#: templates/xadmin/views/model_history.html:54
-msgid "Diff Select Versions"
-msgstr "查看所选版本的不同"
-
-#: templates/xadmin/views/model_history.html:58
-msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
-msgstr "该对象没有变更历史记录。可能从未通过这个管理站点添加。"
-
-#: templates/xadmin/views/model_list.html:29
-#, python-format
-msgid "Add %(name)s"
-msgstr "增加 %(name)s"
-
-#: templates/xadmin/views/model_list.html:39
-#, fuzzy
-msgid "Columns"
-msgstr "列"
-
-#: templates/xadmin/views/model_list.html:42
-msgid "Restore Selected"
-msgstr "恢复显示列"
-
-#: templates/xadmin/views/model_list.html:147
-#: templates/xadmin/widgets/list.html:33
-msgid "Empty list"
-msgstr "空列表"
-
-#: templates/xadmin/views/recover_form.html:20
-msgid "Press the recover button below to recover this version of the object."
-msgstr "点击下方的“还原”按钮还原到该版本。"
-
-#: templates/xadmin/views/recover_list.html:19
-msgid "Choose a date from the list below to recover a deleted version of an object."
-msgstr "从以下列表中选择一个日期来恢复删除掉的数据。"
-
-#: templates/xadmin/views/recover_list.html:39
-msgid "There are no deleted objects to recover."
-msgstr "没有已删除的数据。"
-
-#: templates/xadmin/views/revision_diff.html:12
-#: templates/xadmin/views/revision_diff.html:17
-#, python-format
-msgid "Diff %(verbose_name)s"
-msgstr "%(verbose_name)s的不同"
-
-#: templates/xadmin/views/revision_diff.html:25
-msgid "Field"
-msgstr "字段"
-
-#: templates/xadmin/views/revision_diff.html:26
-msgid "Version A"
-msgstr "版本A"
-
-#: templates/xadmin/views/revision_diff.html:27
-msgid "Version B"
-msgstr "版本B"
-
-#: templates/xadmin/views/revision_diff.html:39
-msgid "Revert to"
-msgstr "还原到"
-
-#: templates/xadmin/views/revision_diff.html:40
-#: templates/xadmin/views/revision_diff.html:41
-msgid "Revert"
-msgstr "还原"
-
-#: templates/xadmin/views/revision_form.html:16
-#, python-format
-msgid "Revert %(verbose_name)s"
-msgstr "还原%(verbose_name)s"
-
-#: templates/xadmin/views/revision_form.html:21
-msgid "Press the revert button below to revert to this version of the object."
-msgstr "点击下方的“还原”按钮还原数据到该版本。"
-
-#: templates/xadmin/views/revision_form.html:27
-msgid "Revert this revision"
-msgstr "还原该版本"
-
-#: templates/xadmin/widgets/addform.html:14
-msgid "Success"
-msgstr "成功"
-
-#: templates/xadmin/widgets/addform.html:14
-msgid "Add success, click edit to edit."
-msgstr "添加成功,点击 编辑 可以继续修改该数据。"
-
-#: templates/xadmin/widgets/addform.html:17
-msgid "Quick Add"
-msgstr "快速添加"
-
-#: templates/xadmin/widgets/base.html:30
-msgid "Widget Options"
-msgstr "小组件设置项"
-
-#: templates/xadmin/widgets/base.html:41
-msgid "Save changes"
-msgstr "保存变更"
-
-#: views/base.py:430
-msgid "Django Xadmin"
-msgstr "Django Xadmin"
-
-#: views/dashboard.py:185
-msgid "Widget ID"
-msgstr "小组件ID"
-
-#: views/dashboard.py:186
-msgid "Widget Title"
-msgstr "小组件标题"
-
-#: views/dashboard.py:248
-msgid "Html Content Widget, can write any html content in widget."
-msgstr "HTML内容小组件,可以编写任意HTML内容。"
-
-#: views/dashboard.py:251
-msgid "Html Content"
-msgstr "HTML内容"
-
-#: views/dashboard.py:314
-msgid "Target Model"
-msgstr "目标数据"
-
-#: views/dashboard.py:365
-msgid "Quick button Widget, quickly open any page."
-msgstr "快捷按钮小组件,可以快速打开任意页面。"
-
-#: views/dashboard.py:367
-msgid "Quick Buttons"
-msgstr "快速按钮"
-
-#: views/dashboard.py:408
-msgid "Any Objects list Widget."
-msgstr "数据列表小组件"
-
-#: views/dashboard.py:447
-msgid "Add any model object Widget."
-msgstr "添加任意数据的小组件"
-
-#: views/dashboard.py:481
-msgid "Dashboard"
-msgstr "仪表盘"
-
-#: views/dashboard.py:622
-#, python-format
-msgid "%s Dashboard"
-msgstr "%s 主页"
-
-#: views/delete.py:101
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 删除成功。"
-
-#: views/detail.py:172 views/edit.py:199 views/form.py:72
-msgid "Other Fields"
-msgstr "其它字段"
-
-#: views/detail.py:233
-#, python-format
-msgid "%s Detail"
-msgstr "%s详情"
-
-#: views/edit.py:394
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 添加成功。"
-
-#: views/edit.py:399 views/edit.py:494
-msgid "You may edit it again below."
-msgstr "你可以在下面再次编辑它。"
-
-#: views/edit.py:403 views/edit.py:497
-#, python-format
-msgid "You may add another %s below."
-msgstr "你可以在下面增加另一个 %s 。"
-
-#: views/edit.py:445
-#, python-format
-msgid "Change %s"
-msgstr "修改 %s"
-
-#: views/edit.py:490
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 修改成功。"
-
-#: views/form.py:164
-#, fuzzy, python-format
-msgid "The %s was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 修改成功。"
-
-#: views/list.py:198
-msgid "Database error"
-msgstr "数据库错误"
-
-#: views/list.py:372
-#, python-format
-msgid "%s List"
-msgstr "%s列表"
-
-#: views/list.py:500
-msgid "Sort ASC"
-msgstr "正序"
-
-#: views/list.py:501
-msgid "Sort DESC"
-msgstr "倒序"
-
-#: views/list.py:505
-msgid "Cancel Sort"
-msgstr "取消排序"
-
-#: views/website.py:16
-msgid "Main Dashboard"
-msgstr "主页面"
diff --git a/xadmin/locale/zh_CN/LC_MESSAGES/djangojs.mo b/xadmin/locale/zh_CN/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 9612a41eb..000000000
Binary files a/xadmin/locale/zh_CN/LC_MESSAGES/djangojs.mo and /dev/null differ
diff --git a/xadmin/locale/zh_Hans/LC_MESSAGES/django.mo b/xadmin/locale/zh_Hans/LC_MESSAGES/django.mo
new file mode 100644
index 000000000..2107c5b29
Binary files /dev/null and b/xadmin/locale/zh_Hans/LC_MESSAGES/django.mo differ
diff --git a/xadmin/locale/zh_Hans/LC_MESSAGES/django.po b/xadmin/locale/zh_Hans/LC_MESSAGES/django.po
new file mode 100644
index 000000000..cd41423f6
--- /dev/null
+++ b/xadmin/locale/zh_Hans/LC_MESSAGES/django.po
@@ -0,0 +1,1528 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# sshwsfc , 2013
+# sshwsfc , 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2017-09-04 15:12+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc \n"
+"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/xadmin/"
+"language/zh_CN/)\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: .\adminx.py:20
+msgid "Admin Object"
+msgstr "管理对象"
+
+#: .\apps.py:11
+msgid "Administration"
+msgstr "管理"
+
+#: .\filters.py:169 .\filters.py:207 .\filters.py:427 .\filters.py:513
+#: .\filters.py:551
+msgid "All"
+msgstr "全部"
+
+#: .\filters.py:170 .\plugins\export.py:167
+msgid "Yes"
+msgstr "是"
+
+#: .\filters.py:171 .\plugins\export.py:167
+msgid "No"
+msgstr "否"
+
+#: .\filters.py:191
+msgid "Unknown"
+msgstr "未知"
+
+#: .\filters.py:287
+msgid "Any date"
+msgstr "任意日期"
+
+#: .\filters.py:288
+msgid "Has date"
+msgstr "有日期"
+
+#: .\filters.py:291
+msgid "Has no date"
+msgstr "无日期"
+
+#: .\filters.py:294 .\widgets.py:35 .\widgets.py:81
+msgid "Today"
+msgstr "今天"
+
+#: .\filters.py:298
+msgid "Past 7 days"
+msgstr "过去7天"
+
+#: .\filters.py:302
+msgid "This month"
+msgstr "本月"
+
+#: .\filters.py:306
+msgid "This year"
+msgstr "今年"
+
+#: .\forms.py:10
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"请输入正确的用户名和密码来登陆您的管理账户。请注意用户名和密码均为大小写相"
+"关。"
+
+#: .\forms.py:21
+msgid "Please log in again, because your session has expired."
+msgstr "请重新登录,因为你的会话已经过期。"
+
+#: .\forms.py:42
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr "你的 e-mail 地址不是你的用户名。换 '%s' 试试。"
+
+#: .\models.py:46
+msgid "Title"
+msgstr "标题"
+
+#: .\models.py:47 .\models.py:87 .\models.py:107 .\models.py:151
+msgid "user"
+msgstr "用户"
+
+#: .\models.py:48
+msgid "Url Name"
+msgstr "URL名字"
+
+#: .\models.py:50
+msgid "Query String"
+msgstr "Query参数"
+
+#: .\models.py:51
+msgid "Is Shared"
+msgstr "是否共享"
+
+#: .\models.py:64 .\plugins\bookmark.py:59 .\plugins\bookmark.py:194
+msgid "Bookmark"
+msgstr "书签"
+
+#: .\models.py:65
+msgid "Bookmarks"
+msgstr "书签"
+
+#: .\models.py:88
+msgid "Settings Key"
+msgstr "设置KEY"
+
+#: .\models.py:89
+msgid "Settings Content"
+msgstr "设置内容"
+
+#: .\models.py:101
+msgid "User Setting"
+msgstr "用户设置"
+
+#: .\models.py:102
+msgid "User Settings"
+msgstr "用户设置"
+
+#: .\models.py:108
+msgid "Page"
+msgstr "页面"
+
+#: .\models.py:109 .\views\dashboard.py:85 .\views\dashboard.py:95
+msgid "Widget Type"
+msgstr "Widget类型"
+
+#: .\models.py:110 .\views\dashboard.py:86
+msgid "Widget Params"
+msgstr "Widget参数"
+
+#: .\models.py:137
+msgid "User Widget"
+msgstr "用户小组件"
+
+#: .\models.py:138
+msgid "User Widgets"
+msgstr "用户小组件"
+
+#: .\models.py:144
+msgid "action time"
+msgstr "记录时间"
+
+#: .\models.py:153
+msgid "action ip"
+msgstr "操作IP"
+
+#: .\models.py:157
+msgid "content type"
+msgstr "数据类型"
+
+#: .\models.py:160
+msgid "object id"
+msgstr "数据ID"
+
+#: .\models.py:161
+msgid "object repr"
+msgstr "数据描述"
+
+#: .\models.py:162
+msgid "action flag"
+msgstr "操作标示"
+
+#: .\models.py:163
+msgid "change message"
+msgstr "修改信息"
+
+#: .\models.py:166
+msgid "log entry"
+msgstr "日志"
+
+#: .\models.py:167
+msgid "log entries"
+msgstr "日志"
+
+#: .\models.py:175
+#, python-format
+msgid "Added \"%(object)s\"."
+msgstr "添加 \"%(object)s\"。"
+
+#: .\models.py:177
+#, python-format
+msgid "Changed \"%(object)s\" - %(changes)s"
+msgstr "修改 \"%(object)s\" - %(changes)s"
+
+#: .\models.py:182
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr "删除 \"%(object)s.\""
+
+#: .\plugins\actions.py:58
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr "删除所选的 %(verbose_name_plural)s"
+
+#: .\plugins\actions.py:73
+#, python-format
+msgid "Batch delete %(count)d %(items)s."
+msgstr "批量删除 %(count)d 个 %(items)s"
+
+#: .\plugins\actions.py:79
+#, python-format
+msgid "Successfully deleted %(count)d %(items)s."
+msgstr "成功删除了 %(count)d 个 %(items)s"
+
+#: .\plugins\actions.py:111 .\views\delete.py:71
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "无法删除 %(name)s"
+
+#: .\plugins\actions.py:113 .\views\delete.py:74
+msgid "Are you sure?"
+msgstr "你确定吗?"
+
+#: .\plugins\actions.py:159
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "选中了 %(total_count)s 个"
+
+#: .\plugins\actions.py:163
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "%(cnt)s 个中 0 个被选"
+
+#: .\plugins\actions.py:180 .\plugins\actions.py:190
+msgid ""
+"Items must be selected in order to perform actions on them. No items have "
+"been changed."
+msgstr "条目必须选中以对其进行操作。没有任何条目被更改。"
+
+#: .\plugins\aggregation.py:14
+msgid "Min"
+msgstr "最小"
+
+#: .\plugins\aggregation.py:14
+msgid "Max"
+msgstr "最大"
+
+#: .\plugins\aggregation.py:14
+msgid "Avg"
+msgstr "平均"
+
+#: .\plugins\aggregation.py:14
+msgid "Sum"
+msgstr "总和"
+
+#: .\plugins\aggregation.py:14
+msgid "Count"
+msgstr "总数"
+
+#: .\plugins\auth.py:25
+#, python-format
+msgid "Can add %s"
+msgstr "添加:%s"
+
+#: .\plugins\auth.py:26
+#, python-format
+msgid "Can change %s"
+msgstr "修改:%s"
+
+#: .\plugins\auth.py:27
+#, python-format
+msgid "Can edit %s"
+msgstr "编辑:%s"
+
+#: .\plugins\auth.py:28
+#, python-format
+msgid "Can delete %s"
+msgstr "删除:%s"
+
+#: .\plugins\auth.py:29
+#, python-format
+msgid "Can view %s"
+msgstr "查看:%s"
+
+#: .\plugins\auth.py:91
+msgid "Personal info"
+msgstr "个人信息"
+
+#: .\plugins\auth.py:95
+msgid "Permissions"
+msgstr "权限"
+
+#: .\plugins\auth.py:98
+msgid "Important dates"
+msgstr "重要日期"
+
+#: .\plugins\auth.py:103
+msgid "Status"
+msgstr "状态"
+
+#: .\plugins\auth.py:115
+msgid "Permission Name"
+msgstr "权限"
+
+#: .\plugins\auth.py:171
+msgid "Change Password"
+msgstr "更改密码"
+
+#: .\plugins\auth.py:202
+#, python-format
+msgid "Change password: %s"
+msgstr "更改密码:%s"
+
+#: .\plugins\auth.py:227 .\plugins\auth.py:259
+msgid "Password changed successfully."
+msgstr "密码更改成功"
+
+#: .\plugins\auth.py:246 .\templates\xadmin\auth\user\change_password.html:11
+#: .\templates\xadmin\auth\user\change_password.html:22
+#: .\templates\xadmin\auth\user\change_password.html:55
+msgid "Change password"
+msgstr "修改密码"
+
+#: .\plugins\batch.py:44
+msgid "Change this field"
+msgstr "修改该字段"
+
+#: .\plugins\batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "批量修改选择的%(verbose_name_plural)s"
+
+#: .\plugins\batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr "成功修改了 %(count)d 个 %(items)s"
+
+#: .\plugins\batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr "批量修改 %s"
+
+#: .\plugins\bookmark.py:187
+msgid "bookmark"
+msgstr "书签"
+
+#: .\plugins\bookmark.py:190
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr "书签组件,展示用户书签页内容。"
+
+#: .\plugins\chart.py:24
+msgid "Show models simple chart."
+msgstr "展示简单数据图表"
+
+#: .\plugins\chart.py:50
+#, python-format
+msgid "%s Charts"
+msgstr "%s图表"
+
+#: .\plugins\comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: .\plugins\comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+
+#: .\plugins\comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: .\plugins\comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+
+#: .\plugins\comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: .\plugins\comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "删除"
+
+#: .\plugins\comments.py:73
+msgid "Remove selected comments"
+msgstr "恢复删除的%(name)s"
+
+#: .\plugins\comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+
+#: .\plugins\details.py:52 .\views\list.py:577
+#, python-format
+msgid "Details of %s"
+msgstr "%s详情"
+
+#: .\plugins\editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "输入%s"
+
+#: .\plugins\editable.py:73 .\views\dashboard.py:652 .\views\delete.py:28
+#: .\views\detail.py:145 .\views\edit.py:460
+#, python-format
+msgid "%(name)s object with primary key %(key)r does not exist."
+msgstr "具有主键 %(key)r 的对象 %(name)s 不存在。"
+
+#: .\plugins\export.py:100 .\plugins\export.py:137
+msgid "Sheet"
+msgstr "表"
+
+#: .\plugins\filters.py:137 .\plugins\quickfilter.py:143
+#, python-format
+msgid "Filtering error: %s"
+msgstr "过滤器错误: %s"
+
+#: .\plugins\images.py:29
+msgid "Previous"
+msgstr "上一个"
+
+#: .\plugins\images.py:29
+msgid "Next"
+msgstr "下一个"
+
+#: .\plugins\images.py:29
+msgid "Slideshow"
+msgstr "幻灯片"
+
+#: .\plugins\images.py:29
+msgid "Download"
+msgstr "下载"
+
+#: .\plugins\images.py:50
+msgid "Change:"
+msgstr "修改:"
+
+#: .\plugins\importexport.py:174 .\plugins\importexport.py:244
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.import.html:4
+#: .\templates\xadmin\import_export\import.html:6
+#: .\templates\xadmin\import_export\import.html:13
+#, fuzzy
+#| msgid "Export"
+msgid "Import"
+msgstr "导出"
+
+#: .\plugins\importexport.py:227
+#, python-format
+msgid "Imported file has a wrong encoding: %s
"
+msgstr "导入文件编码错误: %s
"
+
+#: .\plugins\importexport.py:229
+#, python-format
+msgid "%s encountered while trying to read file: %s
"
+msgstr "%s读取文件是发生错误: %s
"
+
+#: .\plugins\importexport.py:300
+msgid "Import finished"
+msgstr "导入完成"
+
+#: .\plugins\importexport.py:300
+#: .\templates\xadmin\blocks\comm.top.topnav.html:23
+msgid "Add"
+msgstr "增加"
+
+#: .\plugins\importexport.py:301
+#: .\templates\xadmin\import_export\import.html:109
+msgid "Update"
+msgstr "更新"
+
+#: .\plugins\importexport.py:435
+msgid "You must select an export format."
+msgstr "必须选择一种导入格式"
+
+#: .\plugins\layout.py:16
+msgid "Table"
+msgstr "表格"
+
+#: .\plugins\layout.py:22
+msgid "Thumbnails"
+msgstr "图标"
+
+#: .\plugins\passwords.py:62
+msgid "Forgotten your password or username?"
+msgstr "忘记了您的密码或用户名?"
+
+#: .\plugins\quickform.py:80
+#, python-format
+msgid "Create New %s"
+msgstr "创建新的 %s"
+
+#: .\plugins\relate.py:105
+msgid "Related Objects"
+msgstr "关联数据"
+
+#: .\plugins\relfield.py:29 .\plugins\topnav.py:38
+#, python-format
+msgid "Search %s"
+msgstr "搜索%s"
+
+#: .\plugins\relfield.py:77
+#, python-format
+msgid "Select %s"
+msgstr "选择%s"
+
+#: .\plugins\themes.py:59
+msgid "Default"
+msgstr "默认"
+
+#: .\plugins\themes.py:59
+msgid "Default bootstrap theme"
+msgstr "默认Bootstrap主题"
+
+#: .\plugins\themes.py:60
+msgid "Bootstrap2"
+msgstr "Bootstrap2"
+
+#: .\plugins\themes.py:60
+msgid "Bootstrap 2.x theme"
+msgstr "Bootstrap2主题"
+
+#: .\plugins\topnav.py:62 .\views\dashboard.py:468 .\views\edit.py:393
+#: .\views\edit.py:402
+#, python-format
+msgid "Add %s"
+msgstr "增加 %s"
+
+#: .\plugins\xversion.py:107
+msgid "Initial version."
+msgstr "初始化版本"
+
+#: .\plugins\xversion.py:109
+msgid "Change version."
+msgstr "修改版本"
+
+#: .\plugins\xversion.py:111
+msgid "Revert version."
+msgstr "还原版本"
+
+#: .\plugins\xversion.py:113
+msgid "Rercover version."
+msgstr "恢复版本"
+
+#: .\plugins\xversion.py:115
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "删除%(verbose_name)s。"
+
+#: .\plugins\xversion.py:128 .\templates\xadmin\views\recover_form.html:26
+msgid "Recover"
+msgstr "还原"
+
+#: .\plugins\xversion.py:144 .\templates\xadmin\views\model_history.html:11
+#: .\templates\xadmin\views\revision_diff.html:11
+#: .\templates\xadmin\views\revision_form.html:15
+msgid "History"
+msgstr "历史"
+
+#: .\plugins\xversion.py:195 .\templates\xadmin\views\recover_form.html:14
+#: .\templates\xadmin\views\recover_list.html:10
+#, python-format
+msgid "Recover deleted %(name)s"
+msgstr "恢复删除的%(name)s"
+
+#: .\plugins\xversion.py:239
+#, python-format
+msgid "Change history: %s"
+msgstr "变更历史: %s"
+
+#: .\plugins\xversion.py:289
+msgid "Must select two versions."
+msgstr "必须选择两个版本。"
+
+#: .\plugins\xversion.py:297
+msgid "Please select two different versions."
+msgstr "请选择两个不同的版本。"
+
+#: .\plugins\xversion.py:384 .\plugins\xversion.py:501
+#, python-format
+msgid "Current: %s"
+msgstr "当前:%s"
+
+#: .\plugins\xversion.py:425
+#, python-format
+msgid "Revert %s"
+msgstr "还原%s"
+
+#: .\plugins\xversion.py:441
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr "%(model)s “%(name)s”成功还原,您可以继续编辑。"
+
+#: .\plugins\xversion.py:462
+#, python-format
+msgid "Recover %s"
+msgstr "恢复%s"
+
+#: .\plugins\xversion.py:478
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was recovered successfully. You may edit it again "
+"below."
+msgstr "%(model)s “%(name)s”成功恢复,您可以继续编辑。"
+
+#: .\templates\xadmin\404.html:4 .\templates\xadmin\404.html:8
+msgid "Page not found"
+msgstr "页面没有找到"
+
+#: .\templates\xadmin\404.html:10
+msgid "We're sorry, but the requested page could not be found."
+msgstr "很报歉,请求页面无法找到。"
+
+#: .\templates\xadmin\500.html:7
+#: .\templates\xadmin\auth\user\change_password.html:10
+#: .\templates\xadmin\auth\user\change_password.html:15
+#: .\templates\xadmin\base_site.html:53
+#: .\templates\xadmin\import_export\export_action.html:13
+#: .\templates\xadmin\import_export\import.html:11
+#: .\templates\xadmin\includes\sitemenu_default.html:7
+#: .\templates\xadmin\views\app_index.html:9
+#: .\templates\xadmin\views\batch_change_form.html:9
+#: .\templates\xadmin\views\invalid_setup.html:7
+#: .\templates\xadmin\views\model_dashboard.html:7
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:8
+#: .\templates\xadmin\views\model_history.html:8
+#: .\templates\xadmin\views\recover_form.html:8
+#: .\templates\xadmin\views\recover_list.html:8
+#: .\templates\xadmin\views\revision_diff.html:8
+#: .\templates\xadmin\views\revision_form.html:8 .\views\base.py:478
+msgid "Home"
+msgstr "首页"
+
+#: .\templates\xadmin\500.html:8
+msgid "Server error"
+msgstr "服务器错误"
+
+#: .\templates\xadmin\500.html:12
+msgid "Server error (500)"
+msgstr "服务器错误(500)"
+
+#: .\templates\xadmin\500.html:15
+msgid "Server Error (500)"
+msgstr "服务器错误 (500)"
+
+#: .\templates\xadmin\500.html:16
+msgid ""
+"There's been an error. It's been reported to the site administrators via e-"
+"mail and should be fixed shortly. Thanks for your patience."
+msgstr ""
+"发生了一个错误。系统已将错误通过电子邮件报告给了站点管理员,相信问题应该会很"
+"快得到解决。感谢您的耐心。"
+
+#: .\templates\xadmin\auth\password_reset\complete.html:11
+#: .\templates\xadmin\auth\password_reset\done.html:11
+msgid "Password reset successful"
+msgstr "密码重设成功"
+
+#: .\templates\xadmin\auth\password_reset\complete.html:14
+msgid "Your password has been set. You may go ahead and log in now."
+msgstr "你的口令己经设置。现在你可以继续进行登录。"
+
+#: .\templates\xadmin\auth\password_reset\complete.html:15
+msgid "Log in"
+msgstr "登录"
+
+#: .\templates\xadmin\auth\password_reset\confirm.html:12
+msgid "Enter new password"
+msgstr "输入新密码"
+
+#: .\templates\xadmin\auth\password_reset\confirm.html:17
+msgid ""
+"Please enter your new password twice so we can verify you typed it in "
+"correctly."
+msgstr "请输入两遍新密码,以便我们校验你输入的是否正确。"
+
+#: .\templates\xadmin\auth\password_reset\confirm.html:19
+msgid "Change my password"
+msgstr "修改我的密码"
+
+#: .\templates\xadmin\auth\password_reset\confirm.html:24
+msgid "Password reset unsuccessful"
+msgstr "密码重设失败"
+
+#: .\templates\xadmin\auth\password_reset\confirm.html:27
+msgid ""
+"The password reset link was invalid, possibly because it has already been "
+"used. Please request a new password reset."
+msgstr "密码重置链接无效,可能是因为它已使用。可以请求一次新的密码重置。"
+
+#: .\templates\xadmin\auth\password_reset\done.html:14
+msgid ""
+"We've e-mailed you instructions for setting your password to the e-mail "
+"address you submitted. You should be receiving it shortly."
+msgstr ""
+"我们已经按你所提交的电子邮箱地址发送了密码设置说明。你应该很快就能收到这封邮"
+"件。"
+
+#: .\templates\xadmin\auth\password_reset\email.html:2
+#, python-format
+msgid ""
+"You're receiving this e-mail because you requested a password reset for your "
+"user account at %(site_name)s."
+msgstr "因为你要求重置 %(site_name)s 上的账户密码, 所以收到了这封邮件."
+
+#: .\templates\xadmin\auth\password_reset\email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "请访问该页面并选择一个新密码:"
+
+#: .\templates\xadmin\auth\password_reset\email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "你的用户名,如果已忘记的话:"
+
+#: .\templates\xadmin\auth\password_reset\email.html:10
+msgid "Thanks for using our site!"
+msgstr "感谢使用我们的站点!"
+
+#: .\templates\xadmin\auth\password_reset\email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s 团队"
+
+#: .\templates\xadmin\auth\password_reset\form.html:13
+msgid "Password reset"
+msgstr "密码重设"
+
+#: .\templates\xadmin\auth\password_reset\form.html:17
+msgid ""
+"Forgotten your password? Enter your e-mail address below, and we'll e-mail "
+"instructions for setting a new one."
+msgstr ""
+"忘记了你的密码?请在下面输入你的 e-mail 地址,我们将把新密码设置说明通过邮件"
+"发送给你。"
+
+#: .\templates\xadmin\auth\password_reset\form.html:25
+msgid "E-mail address:"
+msgstr "E-mail 地址:"
+
+#: .\templates\xadmin\auth\password_reset\form.html:33
+msgid "Reset my password"
+msgstr "重设我的密码"
+
+#: .\templates\xadmin\auth\user\add_form.html:6
+msgid ""
+"First, enter a username and password. Then, you'll be able to edit more user "
+"options."
+msgstr "首先,输入一个用户名和密码。然后,你就可以编辑更多的用户选项。"
+
+#: .\templates\xadmin\auth\user\add_form.html:8
+msgid "Enter a username and password."
+msgstr "输入用户名和"
+
+#: .\templates\xadmin\auth\user\change_password.html:31
+#: .\templates\xadmin\views\batch_change_form.html:24
+#: .\templates\xadmin\views\form.html:18
+#: .\templates\xadmin\views\model_form.html:20
+msgid "Please correct the error below."
+msgid_plural "Please correct the errors below."
+msgstr[0] "请修正下面的错误。"
+
+#: .\templates\xadmin\auth\user\change_password.html:38
+msgid "Enter your new password."
+msgstr "输入你的新密码"
+
+#: .\templates\xadmin\auth\user\change_password.html:40
+#, python-format
+msgid "Enter a new password for the user %(username)s."
+msgstr "为用户 %(username)s 输入一个新的密码。"
+
+#: .\templates\xadmin\base_site.html:18
+msgid "Welcome,"
+msgstr "欢迎,"
+
+#: .\templates\xadmin\base_site.html:24
+msgid "Log out"
+msgstr "注销"
+
+#: .\templates\xadmin\base_site.html:36
+msgid "You don't have permission to edit anything."
+msgstr "你无权修改任何东西。"
+
+#: .\templates\xadmin\blocks\comm.top.theme.html:4
+msgid "Themes"
+msgstr "主题"
+
+#: .\templates\xadmin\blocks\comm.top.topnav.html:9
+#: .\templates\xadmin\blocks\model_list.nav_form.search_form.html:8
+#: .\templates\xadmin\filters\char.html:7
+#: .\templates\xadmin\filters\fk_search.html:7
+#: .\templates\xadmin\filters\fk_search.html:16
+#: .\templates\xadmin\filters\number.html:7
+msgid "Search"
+msgstr "搜索"
+
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:9
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "上一步"
+
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:13
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "下一步"
+
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:15
+#: .\templates\xadmin\blocks\model_form.submit_line.wizard.html:31
+#: .\templates\xadmin\includes\submit_line.html:10
+#: .\templates\xadmin\includes\submit_line.html:13
+#: .\templates\xadmin\views\form.html:30 .\templates\xadmin\views\form.html:31
+msgid "Save"
+msgstr "保存"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "清除书签"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "没有书签"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "新建书签"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "将当前页面保存为书签"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "输入书签标题"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "请稍侯"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "保存书签"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "过滤器"
+
+#: .\templates\xadmin\blocks\model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+msgstr "清除过滤器"
+
+#: .\templates\xadmin\blocks\model_list.results_bottom.actions.html:19
+msgid "Click here to select the objects across all pages"
+msgstr "点击此处选择所有页面中包含的对象。"
+
+#: .\templates\xadmin\blocks\model_list.results_bottom.actions.html:19
+#, python-format
+msgid "Select all %(total_count)s %(model_name)s"
+msgstr "选中所有的 %(total_count)s 个 %(model_name)s"
+
+#: .\templates\xadmin\blocks\model_list.results_bottom.actions.html:20
+msgid "Clear selection"
+msgstr "清除选中"
+
+#: .\templates\xadmin\blocks\model_list.results_top.charts.html:4
+msgid "Charts"
+msgstr "图表"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:4
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:8
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:19
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:47
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:4
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:12
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:41
+#: .\templates\xadmin\import_export\export_action.html:7
+#: .\templates\xadmin\import_export\export_action.html:15
+msgid "Export"
+msgstr "导出"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:26
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:29
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:32
+msgid "Export with table header."
+msgstr "导出表头"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:35
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:38
+msgid "Export with format."
+msgstr "导出格式"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:42
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:35
+msgid "Export all data."
+msgstr "导出全部数据"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.exports.html:46
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:39
+#: .\templates\xadmin\widgets\base.html:41
+msgid "Close"
+msgstr "关闭"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:33
+msgid "Export current page data."
+msgstr "导出当前页数据"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:34
+msgid "Export selected data."
+msgstr "导出所选择数据"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.importexport.export.html:36
+msgid "Export header only."
+msgstr "仅导出表头"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.layouts.html:4
+msgid "Layout"
+msgstr "布局"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.refresh.html:8
+msgid "Clean Refresh"
+msgstr "清除自动刷新"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.refresh.html:14
+#, python-format
+msgid "Every %(t)s seconds"
+msgstr "每 %(t)s 秒"
+
+#: .\templates\xadmin\blocks\model_list.top_toolbar.saveorder.html:4
+msgid "Save Order"
+msgstr "保存排序"
+
+#: .\templates\xadmin\edit_inline\blank.html:5 .\views\detail.py:25
+#: .\views\edit.py:104 .\views\list.py:31
+msgid "Null"
+msgstr "空"
+
+#: .\templates\xadmin\filters\char.html:13
+msgid "Enter"
+msgstr "输入"
+
+#: .\templates\xadmin\filters\date.html:10
+#: .\templates\xadmin\filters\date.html:13
+msgid "Choice Date"
+msgstr "选择日期"
+
+#: .\templates\xadmin\filters\date.html:18
+msgid "YY"
+msgstr "年"
+
+#: .\templates\xadmin\filters\date.html:19
+msgid "year"
+msgstr "年"
+
+#: .\templates\xadmin\filters\date.html:22
+msgid "MM"
+msgstr "月"
+
+#: .\templates\xadmin\filters\date.html:23
+msgid "month"
+msgstr "月"
+
+#: .\templates\xadmin\filters\date.html:26
+msgid "DD"
+msgstr "日"
+
+#: .\templates\xadmin\filters\date.html:27
+msgid "day"
+msgstr "日"
+
+#: .\templates\xadmin\filters\date.html:29
+#: .\templates\xadmin\filters\date.html:46
+#: .\templates\xadmin\filters\date.html:54
+#: .\templates\xadmin\filters\fk_search.html:24
+#: .\templates\xadmin\filters\number.html:37
+msgid "Apply"
+msgstr "应用"
+
+#: .\templates\xadmin\filters\date.html:34
+msgid "Date Range"
+msgstr "日期范围"
+
+#: .\templates\xadmin\filters\date.html:41
+msgid "Select Date"
+msgstr "选择日期"
+
+#: .\templates\xadmin\filters\date.html:42
+msgid "From"
+msgstr "从"
+
+#: .\templates\xadmin\filters\date.html:44
+msgid "To"
+msgstr "到"
+
+#: .\templates\xadmin\filters\fk_search.html:14
+msgid "Select"
+msgstr "选择"
+
+#: .\templates\xadmin\filters\fk_search.html:26
+#: .\templates\xadmin\filters\number.html:39
+msgid "Clean"
+msgstr "清除"
+
+#: .\templates\xadmin\filters\number.html:17
+#: .\templates\xadmin\filters\number.html:25
+#: .\templates\xadmin\filters\number.html:33
+msgid "Enter Number"
+msgstr "输入数字"
+
+#: .\templates\xadmin\filters\rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " 以 %(filter_title)s"
+
+#: .\templates\xadmin\forms\transfer.html:4
+msgid "Available"
+msgstr "可用项"
+
+#: .\templates\xadmin\forms\transfer.html:12
+msgid "Click to choose all at once."
+msgstr "点击一次性选择全部"
+
+#: .\templates\xadmin\forms\transfer.html:12
+msgid "Choose all"
+msgstr "选择全部"
+
+#: .\templates\xadmin\forms\transfer.html:16
+msgid "Choose"
+msgstr "选择"
+
+#: .\templates\xadmin\forms\transfer.html:19
+#: .\templates\xadmin\widgets\base.html:40
+msgid "Remove"
+msgstr "删除"
+
+#: .\templates\xadmin\forms\transfer.html:23
+msgid "Chosen"
+msgstr "已选项"
+
+#: .\templates\xadmin\forms\transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "点击一次性删除全部"
+
+#: .\templates\xadmin\forms\transfer.html:27
+msgid "Remove all"
+msgstr "删除全部"
+
+#: .\templates\xadmin\import_export\export_action.html:43
+#: .\templates\xadmin\import_export\import.html:59
+msgid "Submit"
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:26
+msgid ""
+"Below is a preview of data to be imported. If you are satisfied with the "
+"results, click 'Confirm import'"
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:29
+msgid "Confirm import"
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:38
+msgid "This importer will import the following fields: "
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:67
+msgid "Errors"
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:78
+#, fuzzy
+#| msgid "Enter Number"
+msgid "Line number"
+msgstr "输入数字"
+
+#: .\templates\xadmin\import_export\import.html:88
+#, fuzzy
+#| msgid "Previous"
+msgid "Preview"
+msgstr "上一个"
+
+#: .\templates\xadmin\import_export\import.html:103
+#, fuzzy
+#| msgid "Now"
+msgid "New"
+msgstr "现在"
+
+#: .\templates\xadmin\import_export\import.html:105
+msgid "Skipped"
+msgstr ""
+
+#: .\templates\xadmin\import_export\import.html:107
+#: .\templates\xadmin\includes\submit_line.html:24
+#: .\templates\xadmin\views\model_detail.html:28 .\views\delete.py:94
+msgid "Delete"
+msgstr "删除"
+
+#: .\templates\xadmin\includes\pagination.html:9
+msgid "Show all"
+msgstr "显示全部"
+
+#: .\templates\xadmin\includes\submit_line.html:10
+#: .\templates\xadmin\includes\submit_line.html:13
+#: .\templates\xadmin\views\form.html:30 .\templates\xadmin\views\form.html:31
+msgid "Saving.."
+msgstr "保存中.."
+
+#: .\templates\xadmin\includes\submit_line.html:17
+msgid "Save as new"
+msgstr "保存为新的"
+
+#: .\templates\xadmin\includes\submit_line.html:18
+msgid "Save and add another"
+msgstr "保存并增加另一个"
+
+#: .\templates\xadmin\includes\submit_line.html:19
+msgid "Save and continue editing"
+msgstr "保存并继续编辑"
+
+#: .\templates\xadmin\views\app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr "%(name)s"
+
+#: .\templates\xadmin\views\batch_change_form.html:11
+msgid "Change multiple objects"
+msgstr "修改多个数据"
+
+#: .\templates\xadmin\views\batch_change_form.html:16
+#, python-format
+msgid "Change one %(objects_name)s"
+msgid_plural "Batch change %(counter)s %(objects_name)s"
+msgstr[0] "批量修改 %(counter)s 个 %(objects_name)s"
+
+#: .\templates\xadmin\views\batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "修改多个数据"
+
+#: .\templates\xadmin\views\dashboard.html:15
+#: .\templates\xadmin\views\dashboard.html:22
+#: .\templates\xadmin\views\dashboard.html:23
+msgid "Add Widget"
+msgstr "添加小组件"
+
+#: .\templates\xadmin\views\invalid_setup.html:13
+msgid ""
+"Something's wrong with your database installation. Make sure the appropriate "
+"database tables have been created, and make sure the database is readable by "
+"the appropriate user."
+msgstr ""
+"你的数据库安装有误。确保已经创建了相应的数据库表,并确保数据库可被相关的用户"
+"读取。"
+
+#: .\templates\xadmin\views\logged_out.html:16
+msgid "Logout Success"
+msgstr "成功退出"
+
+#: .\templates\xadmin\views\logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "感谢您今天在本站花费了一些宝贵时间。"
+
+#: .\templates\xadmin\views\logged_out.html:19
+msgid "Close Window"
+msgstr "关闭窗口"
+
+#: .\templates\xadmin\views\logged_out.html:20
+msgid "Log in again"
+msgstr "重新登录"
+
+#: .\templates\xadmin\views\login.html:39 .\views\website.py:39
+msgid "Please Login"
+msgstr "请登录"
+
+#: .\templates\xadmin\views\login.html:52
+msgid "Username"
+msgstr "用户名"
+
+#: .\templates\xadmin\views\login.html:64
+msgid "Password"
+msgstr "密码"
+
+#: .\templates\xadmin\views\login.html:75
+msgid "log in"
+msgstr "登录"
+
+#: .\templates\xadmin\views\model_dashboard.html:26
+#: .\templates\xadmin\views\model_detail.html:25
+msgid "Edit"
+msgstr "编辑"
+
+#: .\templates\xadmin\views\model_delete_confirm.html:11
+#, python-format
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would result in deleting "
+"related objects, but your account doesn't have permission to delete the "
+"following types of objects:"
+msgstr ""
+"要删除所选的%(verbose_name)s '%(escaped_object)s' 结果会删除相关对象, 但你的"
+"账户没有权限删除这类对象:"
+
+#: .\templates\xadmin\views\model_delete_confirm.html:19
+#, python-format
+msgid ""
+"Deleting the %(verbose_name)s '%(escaped_object)s' would require deleting "
+"the following protected related objects:"
+msgstr ""
+"要删除所选的%(verbose_name)s '%(escaped_object)s' 将要求删除以下受保护的相关"
+"对象:"
+
+#: .\templates\xadmin\views\model_delete_confirm.html:27
+#, python-format
+msgid ""
+"Are you sure you want to delete the %(verbose_name)s \"%(escaped_object)s\"? "
+"All of the following related items will be deleted:"
+msgstr ""
+"请确认要删除选中的%(verbose_name)s \"%(escaped_object)s\"吗?以下所有对象和余"
+"它们相关的条目将都会被删除:"
+
+#: .\templates\xadmin\views\model_delete_confirm.html:34
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "是的,我确定"
+
+#: .\templates\xadmin\views\model_delete_confirm.html:35
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:50
+msgid "Cancel"
+msgstr "取消"
+
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:10
+msgid "Delete multiple objects"
+msgstr "删除多个对象"
+
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:18
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would result in deleting related "
+"objects, but your account doesn't have permission to delete the following "
+"types of objects:"
+msgstr ""
+"要删除所选的 %(objects_name)s 结果会删除相关对象, 但你的账户没有权限删除这类"
+"对象:"
+
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:26
+#, python-format
+msgid ""
+"Deleting the selected %(objects_name)s would require deleting the following "
+"protected related objects:"
+msgstr "要删除所选的 %(objects_name)s, 将要求删除以下受保护的相关对象:"
+
+#: .\templates\xadmin\views\model_delete_selected_confirm.html:34
+#, python-format
+msgid ""
+"Are you sure you want to delete the selected %(objects_name)s? All of the "
+"following objects and their related items will be deleted:"
+msgstr ""
+"请确认要删除选中的 %(objects_name)s 吗?以下所有对象和余它们相关的条目将都会"
+"被删除:"
+
+#: .\templates\xadmin\views\model_history.html:26
+msgid "Diff"
+msgstr "不同"
+
+#: .\templates\xadmin\views\model_history.html:27
+#: .\templates\xadmin\views\recover_list.html:25
+msgid "Date/time"
+msgstr "日期/时间"
+
+#: .\templates\xadmin\views\model_history.html:28
+msgid "User"
+msgstr "用户"
+
+#: .\templates\xadmin\views\model_history.html:29
+msgid "Comment"
+msgstr "注释"
+
+#: .\templates\xadmin\views\model_history.html:54
+msgid "Diff Select Versions"
+msgstr "查看所选版本的不同"
+
+#: .\templates\xadmin\views\model_history.html:58
+msgid ""
+"This object doesn't have a change history. It probably wasn't added via this "
+"admin site."
+msgstr "该对象没有变更历史记录。可能从未通过这个管理站点添加。"
+
+#: .\templates\xadmin\views\model_list.html:29
+#, python-format
+msgid "Add %(name)s"
+msgstr "增加 %(name)s"
+
+#: .\templates\xadmin\views\model_list.html:39
+msgid "Columns"
+msgstr "显示列"
+
+#: .\templates\xadmin\views\model_list.html:42
+msgid "Restore Selected"
+msgstr "恢复显示列"
+
+#: .\templates\xadmin\views\model_list.html:147
+#: .\templates\xadmin\widgets\list.html:33
+msgid "Empty list"
+msgstr "空列表"
+
+#: .\templates\xadmin\views\recover_form.html:20
+msgid "Press the recover button below to recover this version of the object."
+msgstr "点击下方的“还原”按钮还原到该版本。"
+
+#: .\templates\xadmin\views\recover_list.html:19
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
+msgstr "从以下列表中选择一个日期来恢复删除掉的数据。"
+
+#: .\templates\xadmin\views\recover_list.html:39
+msgid "There are no deleted objects to recover."
+msgstr "没有已删除的数据。"
+
+#: .\templates\xadmin\views\revision_diff.html:12
+#: .\templates\xadmin\views\revision_diff.html:17
+#, python-format
+msgid "Diff %(verbose_name)s"
+msgstr "%(verbose_name)s的不同"
+
+#: .\templates\xadmin\views\revision_diff.html:25
+msgid "Field"
+msgstr "字段"
+
+#: .\templates\xadmin\views\revision_diff.html:26
+msgid "Version A"
+msgstr "版本A"
+
+#: .\templates\xadmin\views\revision_diff.html:27
+msgid "Version B"
+msgstr "版本B"
+
+#: .\templates\xadmin\views\revision_diff.html:39
+msgid "Revert to"
+msgstr "还原到"
+
+#: .\templates\xadmin\views\revision_diff.html:40
+#: .\templates\xadmin\views\revision_diff.html:41
+msgid "Revert"
+msgstr "还原"
+
+#: .\templates\xadmin\views\revision_form.html:16
+#, python-format
+msgid "Revert %(verbose_name)s"
+msgstr "还原%(verbose_name)s"
+
+#: .\templates\xadmin\views\revision_form.html:21
+msgid "Press the revert button below to revert to this version of the object."
+msgstr "点击下方的“还原”按钮还原数据到该版本。"
+
+#: .\templates\xadmin\views\revision_form.html:27
+msgid "Revert this revision"
+msgstr "还原该版本"
+
+#: .\templates\xadmin\widgets\addform.html:14
+msgid "Success"
+msgstr "成功"
+
+#: .\templates\xadmin\widgets\addform.html:14
+msgid "Add success, click edit to edit."
+msgstr "添加成功,点击 编辑 可以继续修改该数据。"
+
+#: .\templates\xadmin\widgets\addform.html:17
+msgid "Quick Add"
+msgstr "快速添加"
+
+#: .\templates\xadmin\widgets\base.html:31
+msgid "Widget Options"
+msgstr "小组件设置项"
+
+#: .\templates\xadmin\widgets\base.html:42
+msgid "Save changes"
+msgstr "保存变更"
+
+#: .\views\base.py:320
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: .\views\base.py:321
+msgid "my-company.inc"
+msgstr "我的公司"
+
+#: .\views\dashboard.py:189
+msgid "Widget ID"
+msgstr "小组件ID"
+
+#: .\views\dashboard.py:190
+msgid "Widget Title"
+msgstr "小组件标题"
+
+#: .\views\dashboard.py:255
+msgid "Html Content Widget, can write any html content in widget."
+msgstr "HTML内容小组件,可以编写任意HTML内容。"
+
+#: .\views\dashboard.py:258
+msgid "Html Content"
+msgstr "HTML内容"
+
+#: .\views\dashboard.py:321
+msgid "Target Model"
+msgstr "目标数据"
+
+#: .\views\dashboard.py:372
+msgid "Quick button Widget, quickly open any page."
+msgstr "快捷按钮小组件,可以快速打开任意页面。"
+
+#: .\views\dashboard.py:374
+msgid "Quick Buttons"
+msgstr "快速按钮"
+
+#: .\views\dashboard.py:419
+msgid "Any Objects list Widget."
+msgstr "数据列表小组件"
+
+#: .\views\dashboard.py:459
+msgid "Add any model object Widget."
+msgstr "添加任意数据的小组件"
+
+#: .\views\dashboard.py:495
+msgid "Dashboard"
+msgstr "仪表盘"
+
+#: .\views\dashboard.py:636
+#, python-format
+msgid "%s Dashboard"
+msgstr "%s 主页"
+
+#: .\views\delete.py:104
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr "%(name)s \"%(obj)s\" 删除成功。"
+
+#: .\views\detail.py:173 .\views\edit.py:216 .\views\form.py:74
+msgid "Other Fields"
+msgstr "其它字段"
+
+#: .\views\detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "%s详情"
+
+#: .\views\edit.py:258
+msgid "Added."
+msgstr "已添加"
+
+#: .\views\edit.py:260
+#, python-format
+msgid "Changed %s."
+msgstr "修改 %s"
+
+#: .\views\edit.py:260
+msgid "and"
+msgstr "和"
+
+#: .\views\edit.py:263
+msgid "No fields changed."
+msgstr "没有数据变化"
+
+#: .\views\edit.py:426
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was added successfully."
+msgstr "%(name)s \"%(obj)s\" 添加成功。"
+
+#: .\views\edit.py:431 .\views\edit.py:526
+msgid "You may edit it again below."
+msgstr "你可以在下面再次编辑它。"
+
+#: .\views\edit.py:435 .\views\edit.py:529
+#, python-format
+msgid "You may add another %s below."
+msgstr "你可以在下面增加另一个 %s 。"
+
+#: .\views\edit.py:477
+#, python-format
+msgid "Change %s"
+msgstr "修改 %s"
+
+#: .\views\edit.py:522
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr "%(name)s \"%(obj)s\" 修改成功。"
+
+#: .\views\form.py:168
+#, python-format
+msgid "The %s was changed successfully."
+msgstr "%s 修改成功。"
+
+#: .\views\list.py:192
+msgid "Database error"
+msgstr "数据库错误"
+
+#: .\views\list.py:369
+#, python-format
+msgid "%s List"
+msgstr "%s列表"
+
+#: .\views\list.py:498
+msgid "Sort ASC"
+msgstr "正序"
+
+#: .\views\list.py:499
+msgid "Sort DESC"
+msgstr "倒序"
+
+#: .\views\list.py:503
+msgid "Cancel Sort"
+msgstr "取消排序"
+
+#: .\views\website.py:17
+msgid "Main Dashboard"
+msgstr "主页面"
+
+#: .\widgets.py:53 .\widgets.py:81
+msgid "Now"
+msgstr "现在"
diff --git a/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.mo b/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.mo
new file mode 100644
index 000000000..dea023170
Binary files /dev/null and b/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.mo differ
diff --git a/xadmin/locale/zh_CN/LC_MESSAGES/djangojs.po b/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po
similarity index 75%
rename from xadmin/locale/zh_CN/LC_MESSAGES/djangojs.po
rename to xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po
index 0fc75bc68..65fb767de 100644
--- a/xadmin/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ b/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po
@@ -1,27 +1,46 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-#
+#
# Translators:
# sshwsfc , 2013
msgid ""
msgstr ""
"Project-Id-Version: xadmin-core\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"POT-Creation-Date: 2015-05-22 16:02+0800\n"
"PO-Revision-Date: 2013-11-20 12:41+0000\n"
"Last-Translator: sshwsfc \n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/xadmin/language/zh_CN/)\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: static/xadmin/js/xadmin.plugin.actions.js:20
+#: static/xadmin/js/xadmin.page.dashboard.js:14
+#: static/xadmin/js/xadmin.plugin.details.js:24
+#: static/xadmin/js/xadmin.plugin.quick-form.js:172
+msgid "Close"
+msgstr "关闭"
+
+#: static/xadmin/js/xadmin.page.dashboard.js:15
+msgid "Save changes"
+msgstr "保存修改"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:11
msgid "%(sel)s of %(cnt)s selected"
msgid_plural "%(sel)s of %(cnt)s selected"
msgstr[0] "选中了 %(cnt)s 个中的 %(sel)s 个"
+msgstr[1] "选中了 %(cnt)s 个中的 %(sel)s 个"
+
+#: static/xadmin/js/xadmin.plugin.details.js:25
+msgid "Edit"
+msgstr "编辑"
+
+#: static/xadmin/js/xadmin.plugin.quick-form.js:173
+msgid "Add"
+msgstr "添加"
#: static/xadmin/js/xadmin.plugin.revision.js:25
msgid "New Item"
@@ -40,9 +59,7 @@ msgid "Su Mo Tu We Th Fr Sa Su"
msgstr "日 一 二 三 四 五 六"
#: static/xadmin/js/xadmin.widget.datetime.js:35
-msgid ""
-"January February March April May June July August September October November"
-" December"
+msgid "January February March April May June July August September October November December"
msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
#: static/xadmin/js/xadmin.widget.datetime.js:36
diff --git a/xadmin/migrations/0001_initial.py b/xadmin/migrations/0001_initial.py
new file mode 100644
index 000000000..1eeee381a
--- /dev/null
+++ b/xadmin/migrations/0001_initial.py
@@ -0,0 +1,62 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.2 on 2016-03-20 13:46
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL)
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Bookmark',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(max_length=128, verbose_name='Title')),
+ ('url_name', models.CharField(max_length=64, verbose_name='Url Name')),
+ ('query', models.CharField(blank=True, max_length=1000, verbose_name='Query String')),
+ ('is_share', models.BooleanField(default=False, verbose_name='Is Shared')),
+ ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+ ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'Bookmark',
+ 'verbose_name_plural': 'Bookmarks',
+ },
+ ),
+ migrations.CreateModel(
+ name='UserSettings',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('key', models.CharField(max_length=256, verbose_name='Settings Key')),
+ ('value', models.TextField(verbose_name='Settings Content')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'User Setting',
+ 'verbose_name_plural': 'User Settings',
+ },
+ ),
+ migrations.CreateModel(
+ name='UserWidget',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('page_id', models.CharField(max_length=256, verbose_name='Page')),
+ ('widget_type', models.CharField(max_length=50, verbose_name='Widget Type')),
+ ('value', models.TextField(verbose_name='Widget Params')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
+ ],
+ options={
+ 'verbose_name': 'User Widget',
+ 'verbose_name_plural': 'User Widgets',
+ },
+ ),
+ ]
diff --git a/xadmin/migrations/0002_log.py b/xadmin/migrations/0002_log.py
new file mode 100644
index 000000000..3153bee7b
--- /dev/null
+++ b/xadmin/migrations/0002_log.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-15 05:50
+from __future__ import unicode_literals
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('contenttypes', '0002_remove_content_type_name'),
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('xadmin', '0001_initial'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Log',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('action_time', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='action time')),
+ ('ip_addr', models.GenericIPAddressField(blank=True, null=True, verbose_name='action ip')),
+ ('object_id', models.TextField(blank=True, null=True, verbose_name='object id')),
+ ('object_repr', models.CharField(max_length=200, verbose_name='object repr')),
+ ('action_flag', models.PositiveSmallIntegerField(verbose_name='action flag')),
+ ('message', models.TextField(blank=True, verbose_name='change message')),
+ ('content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='contenttypes.ContentType', verbose_name='content type')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='user')),
+ ],
+ options={
+ 'ordering': ('-action_time',),
+ 'verbose_name': 'log entry',
+ 'verbose_name_plural': 'log entries',
+ },
+ ),
+ ]
diff --git a/xadmin/migrations/0003_auto_20160715_0100.py b/xadmin/migrations/0003_auto_20160715_0100.py
new file mode 100644
index 000000000..073f5b4b4
--- /dev/null
+++ b/xadmin/migrations/0003_auto_20160715_0100.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-07-15 06:00
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('xadmin', '0002_log'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='log',
+ name='action_flag',
+ field=models.CharField(max_length=32, verbose_name='action flag'),
+ ),
+ ]
diff --git a/xadmin/migrations/__init__.py b/xadmin/migrations/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/xadmin/models.py b/xadmin/models.py
index 614f40490..da5145641 100644
--- a/xadmin/models.py
+++ b/xadmin/models.py
@@ -1,25 +1,23 @@
import json
import django
from django.db import models
+from django.utils import timezone
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
-from django.utils.translation import ugettext_lazy as _
-from django.core.urlresolvers import reverse
+from django.utils.translation import ugettext_lazy as _, ugettext
+from django.core.urlresolvers import NoReverseMatch, reverse
from django.core.serializers.json import DjangoJSONEncoder
from django.db.models.base import ModelBase
-from django.utils.encoding import smart_unicode
+from django.utils.encoding import python_2_unicode_compatible, smart_text
-from django.db.models.signals import post_syncdb
+from django.db.models.signals import post_migrate
from django.contrib.auth.models import Permission
import datetime
import decimal
+from xadmin.util import quote
-if 4 < django.VERSION[1] < 7:
- AUTH_USER_MODEL = django.contrib.auth.get_user_model()
-else:
- AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
-
+AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
def add_view_permissions(sender, **kwargs):
"""
@@ -40,9 +38,10 @@ def add_view_permissions(sender, **kwargs):
#print "Added view permission for %s" % content_type.name
# check for all our view permissions after a syncdb
-post_syncdb.connect(add_view_permissions)
+post_migrate.connect(add_view_permissions)
+@python_2_unicode_compatible
class Bookmark(models.Model):
title = models.CharField(_(u'Title'), max_length=128)
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"), blank=True, null=True)
@@ -58,7 +57,7 @@ def url(https://github.com/self):
base_url = base_url + '?' + self.query
return base_url
- def __unicode__(self):
+ def __str__(self):
return self.title
class Meta:
@@ -68,21 +67,22 @@ class Meta:
class JSONEncoder(DjangoJSONEncoder):
def default(self, o):
- if isinstance(o, datetime.date):
- return o.strftime('%Y-%m-%d')
- elif isinstance(o, datetime.datetime):
+ if isinstance(o, datetime.datetime):
return o.strftime('%Y-%m-%d %H:%M:%S')
+ elif isinstance(o, datetime.date):
+ return o.strftime('%Y-%m-%d')
elif isinstance(o, decimal.Decimal):
return str(o)
elif isinstance(o, ModelBase):
- return '%s.%s' % (o._meta.app_label, o._meta.module_name)
+ return '%s.%s' % (o._meta.app_label, o._meta.model_name)
else:
try:
return super(JSONEncoder, self).default(o)
except Exception:
- return smart_unicode(o)
+ return smart_text(o)
+@python_2_unicode_compatible
class UserSettings(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"))
key = models.CharField(_('Settings Key'), max_length=256)
@@ -94,7 +94,7 @@ def json_value(self):
def set_json(self, obj):
self.value = json.dumps(obj, cls=JSONEncoder, ensure_ascii=False)
- def __unicode__(self):
+ def __str__(self):
return "%s %s" % (self.user, self.key)
class Meta:
@@ -102,6 +102,7 @@ class Meta:
verbose_name_plural = _('User Settings')
+@python_2_unicode_compatible
class UserWidget(models.Model):
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_(u"user"))
page_id = models.CharField(_(u"Page"), max_length=256)
@@ -129,9 +130,60 @@ def save(self, *args, **kwargs):
except Exception:
pass
- def __unicode__(self):
+ def __str__(self):
return "%s %s widget" % (self.user, self.widget_type)
class Meta:
verbose_name = _(u'User Widget')
verbose_name_plural = _('User Widgets')
+
+
+@python_2_unicode_compatible
+class Log(models.Model):
+ action_time = models.DateTimeField(
+ _('action time'),
+ default=timezone.now,
+ editable=False,
+ )
+ user = models.ForeignKey(
+ AUTH_USER_MODEL,
+ models.CASCADE,
+ verbose_name=_('user'),
+ )
+ ip_addr = models.GenericIPAddressField(_('action ip'), blank=True, null=True)
+ content_type = models.ForeignKey(
+ ContentType,
+ models.SET_NULL,
+ verbose_name=_('content type'),
+ blank=True, null=True,
+ )
+ object_id = models.TextField(_('object id'), blank=True, null=True)
+ object_repr = models.CharField(_('object repr'), max_length=200)
+ action_flag = models.CharField(_('action flag'), max_length=32)
+ message = models.TextField(_('change message'), blank=True)
+
+ class Meta:
+ verbose_name = _('log entry')
+ verbose_name_plural = _('log entries')
+ ordering = ('-action_time',)
+
+ def __repr__(self):
+ return smart_text(self.action_time)
+
+ def __str__(self):
+ if self.action_flag == 'create':
+ return ugettext('Added "%(object)s".') % {'object': self.object_repr}
+ elif self.action_flag == 'change':
+ return ugettext('Changed "%(object)s" - %(changes)s') % {
+ 'object': self.object_repr,
+ 'changes': self.message,
+ }
+ elif self.action_flag == 'delete' and self.object_repr:
+ return ugettext('Deleted "%(object)s."') % {'object': self.object_repr}
+
+ return self.message
+
+ def get_edited_object(self):
+ "Returns the edited object represented by this log entry"
+ return self.content_type.get_object_for_this_type(pk=self.object_id)
+
diff --git a/xadmin/plugins/__init__.py b/xadmin/plugins/__init__.py
index d6c7b2840..e570dfe67 100644
--- a/xadmin/plugins/__init__.py
+++ b/xadmin/plugins/__init__.py
@@ -1,12 +1,39 @@
-PLUGINS = ('actions', 'filters', 'bookmark', 'export', 'layout', 'refresh', 'sortable', 'details',
- 'editable', 'relate', 'chart', 'ajax', 'relfield', 'inline', 'topnav', 'portal', 'quickform',
- 'wizard', 'images', 'auth', 'multiselect', 'themes', 'aggregation', 'mobile', 'passwords',
- 'sitemenu', 'language', 'comments','quickfilter')
+PLUGINS = (
+ 'actions',
+ 'filters',
+ 'bookmark',
+ 'export',
+ 'layout',
+ 'refresh',
+ 'details',
+ 'editable',
+ 'relate',
+ 'chart',
+ 'ajax',
+ 'relfield',
+ 'inline',
+ 'topnav',
+ 'portal',
+ 'quickform',
+ 'wizard',
+ 'images',
+ 'auth',
+ 'multiselect',
+ 'themes',
+ 'aggregation',
+ 'mobile',
+ 'passwords',
+ 'sitemenu',
+ 'language',
+ 'quickfilter',
+ 'sortablelist',
+ 'importexport'
+)
def register_builtin_plugins(site):
- from django.utils.importlib import import_module
+ from importlib import import_module
from django.conf import settings
exclude_plugins = getattr(settings, 'XADMIN_EXCLUDE_PLUGINS', [])
diff --git a/xadmin/plugins/actions.py b/xadmin/plugins/actions.py
index 6dbb4cfca..02085bf33 100644
--- a/xadmin/plugins/actions.py
+++ b/xadmin/plugins/actions.py
@@ -1,16 +1,21 @@
+from collections import OrderedDict
from django import forms
from django.core.exceptions import PermissionDenied
from django.db import router
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from django.template.response import TemplateResponse
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_unicode
+from django.utils import six
+from django.utils.encoding import force_text
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _, ungettext
from django.utils.text import capfirst
+
+from django.contrib.admin.utils import get_deleted_objects
+
+from xadmin.plugins.utils import get_context_dict
from xadmin.sites import site
-from xadmin.util import model_format_dict, get_deleted_objects, model_ngettext
+from xadmin.util import model_format_dict, model_ngettext
from xadmin.views import BaseAdminPlugin, ListAdminView
from xadmin.views.base import filter_hook, ModelAdminView
@@ -20,14 +25,13 @@
def action_checkbox(obj):
- return checkbox.render(ACTION_CHECKBOX_NAME, force_unicode(obj.pk))
+ return checkbox.render(ACTION_CHECKBOX_NAME, force_text(obj.pk))
action_checkbox.short_description = mark_safe(
'')
action_checkbox.allow_tags = True
action_checkbox.allow_export = False
action_checkbox.is_column = False
-
class BaseActionView(ModelAdminView):
action_name = None
description = None
@@ -56,6 +60,8 @@ class DeleteSelectedAction(BaseActionView):
delete_confirmation_template = None
delete_selected_confirmation_template = None
+ delete_models_batch = True
+
model_perm = 'delete'
icon = 'fa fa-times'
@@ -63,7 +69,13 @@ class DeleteSelectedAction(BaseActionView):
def delete_models(self, queryset):
n = queryset.count()
if n:
- queryset.delete()
+ if self.delete_models_batch:
+ self.log('delete', _('Batch delete %(count)d %(items)s.') % { "count": n, "items": model_ngettext(self.opts, n) })
+ queryset.delete()
+ else:
+ for obj in queryset:
+ self.log('delete', '', obj)
+ obj.delete()
self.message_user(_("Successfully deleted %(count)d %(items)s.") % {
"count": n, "items": model_ngettext(self.opts, n)
}, 'success')
@@ -78,7 +90,7 @@ def do_action(self, queryset):
# Populate deletable_objects, a data structure of all related objects that
# will also be deleted.
- deletable_objects, perms_needed, protected = get_deleted_objects(
+ deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
queryset, self.opts, self.user, self.admin_site, using)
# The user has already confirmed the deletion.
@@ -91,9 +103,9 @@ def do_action(self, queryset):
return None
if len(queryset) == 1:
- objects_name = force_unicode(self.opts.verbose_name)
+ objects_name = force_text(self.opts.verbose_name)
else:
- objects_name = force_unicode(self.opts.verbose_name_plural)
+ objects_name = force_text(self.opts.verbose_name_plural)
if perms_needed or protected:
title = _("Cannot delete %(name)s") % {"name": objects_name}
@@ -115,7 +127,7 @@ def do_action(self, queryset):
# Display the confirmation page
return TemplateResponse(self.request, self.delete_selected_confirmation_template or
- self.get_template_list('views/model_delete_selected_confirm.html'), context, current_app=self.admin_site.name)
+ self.get_template_list('views/model_delete_selected_confirm.html'), context)
class ActionPlugin(BaseAdminPlugin):
@@ -203,7 +215,7 @@ def response_action(self, ac, queryset):
def get_actions(self):
if self.actions is None:
- return SortedDict()
+ return OrderedDict()
actions = [self.get_action(action) for action in self.global_actions]
@@ -216,9 +228,11 @@ def get_actions(self):
# get_action might have returned None, so filter any of those out.
actions = filter(None, actions)
+ if six.PY3:
+ actions = list(actions)
- # Convert the actions into a SortedDict keyed by name.
- actions = SortedDict([
+ # Convert the actions into a OrderedDict keyed by name.
+ actions = OrderedDict([
(name, (ac, name, desc, icon))
for ac, name, desc, icon in actions
])
@@ -231,7 +245,7 @@ def get_action_choices(self):
tuple (name, description).
"""
choices = []
- for ac, name, description, icon in self.actions.itervalues():
+ for ac, name, description, icon in self.actions.values():
choice = (name, description % model_format_dict(self.opts), icon)
choices.append(choice)
return choices
@@ -279,7 +293,8 @@ def get_media(self, media):
# Block Views
def block_results_bottom(self, context, nodes):
if self.actions and self.admin_view.result_count:
- nodes.append(loader.render_to_string('xadmin/blocks/model_list.results_bottom.actions.html', context_instance=context))
+ nodes.append(loader.render_to_string('xadmin/blocks/model_list.results_bottom.actions.html',
+ context=get_context_dict(context)))
site.register_plugin(ActionPlugin, ListAdminView)
diff --git a/xadmin/plugins/ajax.py b/xadmin/plugins/ajax.py
index aa5bb32eb..b09bea21b 100644
--- a/xadmin/plugins/ajax.py
+++ b/xadmin/plugins/ajax.py
@@ -1,7 +1,7 @@
-from django import forms
-from django.utils.datastructures import SortedDict
+from collections import OrderedDict
+from django.forms.utils import ErrorDict
from django.utils.html import escape
-from django.utils.encoding import force_unicode
+from django.utils.encoding import force_text
from xadmin.sites import site
from xadmin.views import BaseAdminPlugin, ListAdminView, ModelFormAdminView, DetailAdminView
@@ -12,7 +12,7 @@
class BaseAjaxPlugin(BaseAdminPlugin):
def init_request(self, *args, **kwargs):
- return bool(self.request.is_ajax() or self.request.REQUEST.get('_ajax'))
+ return bool(self.request.is_ajax() or self.request.GET.get('_ajax'))
class AjaxListPlugin(BaseAjaxPlugin):
@@ -27,7 +27,7 @@ def get_list_display(self,list_display):
def get_result_list(self, response):
av = self.admin_view
base_fields = self.get_list_display(av.base_list_display)
- headers = dict([(c.field_name, force_unicode(c.text)) for c in av.result_headers(
+ headers = dict([(c.field_name, force_text(c.text)) for c in av.result_headers(
).cells if c.field_name in base_fields])
objects = [dict([(o.field_name, escape(str(o.value))) for i, o in
@@ -37,7 +37,7 @@ def get_result_list(self, response):
return self.render_response({'headers': headers, 'objects': objects, 'total_count': av.result_count, 'has_more': av.has_more})
-class JsonErrorDict(forms.util.ErrorDict):
+class JsonErrorDict(ErrorDict):
def __init__(self, errors, form):
super(JsonErrorDict, self).__init__(errors)
@@ -92,7 +92,7 @@ def get_response(self, __):
result = self.admin_view.get_field_result(f)
results.append((result.label, result.val))
- return self.render_response(SortedDict(results))
+ return self.render_response(OrderedDict(results))
site.register_plugin(AjaxListPlugin, ListAdminView)
site.register_plugin(AjaxFormPlugin, ModelFormAdminView)
diff --git a/xadmin/plugins/auth.py b/xadmin/plugins/auth.py
index cd2dc3239..1ab6f6110 100644
--- a/xadmin/plugins/auth.py
+++ b/xadmin/plugins/auth.py
@@ -4,18 +4,22 @@
AdminPasswordChangeForm, PasswordChangeForm)
from django.contrib.auth.models import Group, Permission
from django.core.exceptions import PermissionDenied
+from django.conf import settings
from django.template.response import TemplateResponse
from django.utils.decorators import method_decorator
from django.http import HttpResponseRedirect
from django.utils.html import escape
+from django.utils.encoding import smart_text
from django.utils.translation import ugettext as _
from django.views.decorators.debug import sensitive_post_parameters
from django.forms import ModelMultipleChoiceField
+from django.contrib.auth import get_user_model
from xadmin.layout import Fieldset, Main, Side, Row, FormHelper
from xadmin.sites import site
-from xadmin.util import unquote, User
+from xadmin.util import unquote
from xadmin.views import BaseAdminPlugin, ModelFormAdminView, ModelAdminView, CommAdminView, csrf_protect_m
+User = get_user_model()
ACTION_NAME = {
'add': _('Can add %s'),
@@ -151,6 +155,12 @@ def queryset(self, qs):
qs = qs.filter(**filters)
return qs
+ def get_list_display(self, list_display):
+ if self.user_can_access_owned_objects_only and \
+ not self.user.is_superuser and \
+ self.user_owned_objects_field in list_display:
+ list_display.remove(self.user_owned_objects_field)
+ return list_display
site.register_plugin(ModelPermissionPlugin, ModelAdminView)
@@ -186,9 +196,10 @@ def get_context(self):
context = super(ChangePasswordView, self).get_context()
helper = FormHelper()
helper.form_tag = False
+ helper.include_media = False
self.form.helper = helper
context.update({
- 'title': _('Change password: %s') % escape(unicode(self.obj)),
+ 'title': _('Change password: %s') % escape(smart_text(self.obj)),
'form': self.form,
'has_delete_permission': False,
'has_change_permission': True,
@@ -201,7 +212,7 @@ def get_response(self):
return TemplateResponse(self.request, [
self.change_user_password_template or
'xadmin/auth/user/change_password.html'
- ], self.get_context(), current_app=self.admin_site.name)
+ ], self.get_context())
@method_decorator(sensitive_post_parameters())
@csrf_protect_m
@@ -250,7 +261,9 @@ def post(self, request):
else:
return self.get_response()
-site.register_view(r'^auth/user/(.+)/update/password/$',
+
+user_model = settings.AUTH_USER_MODEL.lower().replace('.','/')
+site.register_view(r'^%s/(.+)/password/$' % user_model,
ChangePasswordView, name='user_change_password')
site.register_view(r'^account/password/$', ChangeAccountPasswordView,
name='account_password')
diff --git a/xadmin/plugins/batch.py b/xadmin/plugins/batch.py
index 24eadeeda..b322af98e 100644
--- a/xadmin/plugins/batch.py
+++ b/xadmin/plugins/batch.py
@@ -5,7 +5,7 @@
from django.core.exceptions import PermissionDenied
from django.forms.models import modelform_factory
from django.template.response import TemplateResponse
-from django.utils.encoding import force_unicode
+from django.utils.encoding import force_text
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _, ugettext_lazy
from xadmin.layout import FormHelper, Layout, Fieldset, Container, Col
@@ -16,10 +16,10 @@
BATCH_CHECKBOX_NAME = '_batch_change_fields'
+
class ChangeFieldWidgetWrapper(forms.Widget):
def __init__(self, widget):
- self.is_hidden = widget.is_hidden
self.needs_multipart_form = widget.needs_multipart_form
self.attrs = widget.attrs
self.widget = widget
@@ -74,7 +74,8 @@ def change_models(self, queryset, cleaned_data):
n = queryset.count()
data = {}
- for f in self.opts.fields:
+ fields = self.opts.fields + self.opts.many_to_many
+ for f in fields:
if not f.editable or isinstance(f, models.AutoField) \
or not f.name in cleaned_data:
continue
@@ -121,15 +122,16 @@ def do_action(self, queryset):
helper = FormHelper()
helper.form_tag = False
+ helper.include_media = False
helper.add_layout(Layout(Container(Col('full',
Fieldset("", *self.form_obj.fields.keys(), css_class="unsort no_title"), horizontal=True, span=12)
)))
self.form_obj.helper = helper
count = len(queryset)
if count == 1:
- objects_name = force_unicode(self.opts.verbose_name)
+ objects_name = force_text(self.opts.verbose_name)
else:
- objects_name = force_unicode(self.opts.verbose_name_plural)
+ objects_name = force_text(self.opts.verbose_name_plural)
context = self.get_context()
context.update({
@@ -144,7 +146,7 @@ def do_action(self, queryset):
})
return TemplateResponse(self.request, self.batch_change_form_template or
- self.get_template_list('views/batch_change_form.html'), context, current_app=self.admin_site.name)
+ self.get_template_list('views/batch_change_form.html'), context)
@filter_hook
def get_media(self):
diff --git a/xadmin/plugins/bookmark.py b/xadmin/plugins/bookmark.py
index 7c7dcb610..3d612cec8 100644
--- a/xadmin/plugins/bookmark.py
+++ b/xadmin/plugins/bookmark.py
@@ -1,21 +1,23 @@
-from django.template import loader
-from django.core.urlresolvers import reverse
-from django.utils.translation import ugettext_lazy as _
-from django.utils.decorators import method_decorator
-from django.views.decorators.csrf import csrf_protect
from django.contrib.contenttypes.models import ContentType
+from django.core.urlresolvers import reverse
from django.db import transaction
from django.db.models import Q
from django.forms import ModelChoiceField
from django.http import QueryDict
+from django.template import loader
+from django.utils.decorators import method_decorator
+from django.utils.encoding import smart_text
+from django.utils.translation import ugettext_lazy as _
+from django.views.decorators.csrf import csrf_protect
+from xadmin.filters import FILTER_PREFIX, SEARCH_VAR
+from xadmin.plugins.relate import RELATE_PREFIX
+from xadmin.plugins.utils import get_context_dict
from xadmin.sites import site
from xadmin.views import ModelAdminView, BaseAdminPlugin, ListAdminView
from xadmin.views.list import COL_LIST_VAR, ORDER_VAR
from xadmin.views.dashboard import widget_manager, BaseWidget, PartialBaseWidget
-from xadmin.filters import FILTER_PREFIX, SEARCH_VAR
-from xadmin.plugins.relate import RELATE_PREFIX
from xadmin.models import Bookmark
@@ -40,11 +42,19 @@ def get_context(self, context):
bookmarks = []
- current_qs = '&'.join(['%s=%s' % (k, v) for k, v in sorted(
- filter(lambda i: bool(i[1] and (i[0] in (COL_LIST_VAR, ORDER_VAR, SEARCH_VAR) or i[0].startswith(FILTER_PREFIX)
- or i[0].startswith(RELATE_PREFIX))), self.request.GET.items()))])
-
- model_info = (self.opts.app_label, self.opts.module_name)
+ current_qs = '&'.join([
+ '%s=%s' % (k, v)
+ for k, v in sorted(filter(
+ lambda i: bool(i[1] and (
+ i[0] in (COL_LIST_VAR, ORDER_VAR, SEARCH_VAR)
+ or i[0].startswith(FILTER_PREFIX)
+ or i[0].startswith(RELATE_PREFIX)
+ )),
+ self.request.GET.items()
+ ))
+ ])
+
+ model_info = (self.opts.app_label, self.opts.model_name)
has_selected = False
menu_title = _(u"Bookmark")
list_base_url = reverse('xadmin:%s_%s_changelist' %
@@ -53,8 +63,10 @@ def get_context(self, context):
# local bookmarks
for bk in self.list_bookmarks:
title = bk['title']
- params = dict(
- [(FILTER_PREFIX + k, v) for (k, v) in bk['query'].items()])
+ params = dict([
+ (FILTER_PREFIX + k, v)
+ for (k, v) in bk['query'].items()
+ ])
if 'order' in bk:
params[ORDER_VAR] = '.'.join(bk['order'])
if 'cols' in bk:
@@ -63,7 +75,10 @@ def get_context(self, context):
params[SEARCH_VAR] = bk['search']
def check_item(i):
return bool(i[1]) or i[1] == False
- bk_qs = '&'.join(['%s=%s' % (k, v) for k, v in sorted(filter(check_item, params.items()))])
+ bk_qs = '&'.join([
+ '%s=%s' % (k, v)
+ for k, v in sorted(filter(check_item, params.items()))
+ ])
url = list_base_url + '?' + bk_qs
selected = (current_qs == bk_qs)
@@ -75,7 +90,7 @@ def check_item(i):
has_selected = True
content_type = ContentType.objects.get_for_model(self.model)
- bk_model_info = (Bookmark._meta.app_label, Bookmark._meta.module_name)
+ bk_model_info = (Bookmark._meta.app_label, Bookmark._meta.model_name)
bookmarks_queryset = Bookmark.objects.filter(
content_type=content_type,
url_name='xadmin:%s_%s_changelist' % model_info
@@ -119,15 +134,16 @@ def get_media(self, media):
# Block Views
def block_nav_menu(self, context, nodes):
if self.show_bookmarks:
- nodes.insert(0, loader.render_to_string('xadmin/blocks/model_list.nav_menu.bookmarks.html', context_instance=context))
+ nodes.insert(0, loader.render_to_string('xadmin/blocks/model_list.nav_menu.bookmarks.html',
+ context=get_context_dict(context)))
class BookmarkView(ModelAdminView):
@csrf_protect_m
- @transaction.commit_on_success
+ @transaction.atomic
def post(self, request):
- model_info = (self.opts.app_label, self.opts.module_name)
+ model_info = (self.opts.app_label, self.opts.model_name)
url_name = 'xadmin:%s_%s_changelist' % model_info
bookmark = Bookmark(
content_type=ContentType.objects.get_for_model(self.model),
@@ -186,7 +202,7 @@ def setup(self):
self.bookmark = bookmark
if not self.title:
- self.title = unicode(bookmark)
+ self.title = smart_text(bookmark)
req = self.make_get_request("", data.items())
self.list_view = self.get_view_class(
@@ -205,9 +221,13 @@ def context(self, context):
context['result_headers'] = [c for c in list_view.result_headers(
).cells if c.field_name in base_fields]
- context['results'] = [[o for i, o in
- enumerate(filter(lambda c:c.field_name in base_fields, r.cells))]
- for r in list_view.results()]
+ context['results'] = [
+ [o for i, o in enumerate(filter(
+ lambda c: c.field_name in base_fields,
+ r.cells
+ ))]
+ for r in list_view.results()
+ ]
context['result_count'] = list_view.result_count
context['page_url'] = self.bookmark.url
diff --git a/xadmin/plugins/chart.py b/xadmin/plugins/chart.py
index e83ab8ca9..e2b0a649a 100644
--- a/xadmin/plugins/chart.py
+++ b/xadmin/plugins/chart.py
@@ -1,21 +1,21 @@
+import calendar
import datetime
import decimal
-import calendar
-from django.template import loader
-from django.http import HttpResponseNotFound
from django.core.serializers.json import DjangoJSONEncoder
-from django.http import HttpResponse
-from django.utils.encoding import smart_unicode
from django.db import models
+from django.http import HttpResponse, HttpResponseNotFound
+from django.template import loader
from django.utils.http import urlencode
+from django.utils.encoding import force_text, smart_text
from django.utils.translation import ugettext_lazy as _, ugettext
+from xadmin.plugins.utils import get_context_dict
from xadmin.sites import site
from xadmin.views import BaseAdminPlugin, ListAdminView
from xadmin.views.dashboard import ModelBaseWidget, widget_manager
-from xadmin.util import lookup_field, label_for_field, force_unicode, json
+from xadmin.util import lookup_field, label_for_field, json
@widget_manager.register
@@ -76,7 +76,7 @@ def default(self, o):
try:
return super(JSONEncoder, self).default(o)
except Exception:
- return smart_unicode(o)
+ return smart_text(o)
class ChartsPlugin(BaseAdminPlugin):
@@ -98,7 +98,8 @@ def block_results_top(self, context, nodes):
context.update({
'charts': [{"name": name, "title": v['title'], 'url': self.get_chart_url(https://github.com/name,%20v)} for name, v in self.data_charts.items()],
})
- nodes.append(loader.render_to_string('xadmin/blocks/model_list.results_top.charts.html', context_instance=context))
+ nodes.append(loader.render_to_string('xadmin/blocks/model_list.results_top.charts.html',
+ context=get_context_dict(context)))
class ChartsView(ListAdminView):
@@ -122,7 +123,7 @@ def get(self, request, name):
self.y_fields = (
y_fields,) if type(y_fields) not in (list, tuple) else y_fields
- datas = [{"data":[], "label": force_unicode(label_for_field(
+ datas = [{"data":[], "label": force_text(label_for_field(
i, self.model, model_admin=self))} for i in self.y_fields]
self.make_result_list()
diff --git a/xadmin/plugins/details.py b/xadmin/plugins/details.py
index 2c37fe118..0b5ed919e 100644
--- a/xadmin/plugins/details.py
+++ b/xadmin/plugins/details.py
@@ -39,12 +39,12 @@ def result_item(self, item, obj, field_name, row):
try:
item_res_uri = reverse(
'%s:%s_%s_detail' % (self.admin_site.app_name,
- opts.app_label, opts.module_name),
+ opts.app_label, opts.model_name),
args=(getattr(rel_obj, opts.pk.attname),))
if item_res_uri:
if has_change_perm:
edit_url = reverse(
- '%s:%s_%s_change' % (self.admin_site.app_name, opts.app_label, opts.module_name),
+ '%s:%s_%s_change' % (self.admin_site.app_name, opts.app_label, opts.model_name),
args=(getattr(rel_obj, opts.pk.attname),))
else:
edit_url = ''
diff --git a/xadmin/plugins/editable.py b/xadmin/plugins/editable.py
index 6a20cc79c..1b49feb60 100644
--- a/xadmin/plugins/editable.py
+++ b/xadmin/plugins/editable.py
@@ -3,7 +3,7 @@
from django.db import models, transaction
from django.forms.models import modelform_factory
from django.http import Http404, HttpResponse
-from django.utils.encoding import force_unicode, smart_unicode
+from django.utils.encoding import force_text, smart_text
from django.utils.html import escape, conditional_escape
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext as _
@@ -71,7 +71,7 @@ def init_request(self, object_id, *args, **kwargs):
if self.org_obj is None:
raise Http404(_('%(name)s object with primary key %(key)r does not exist.') %
- {'name': force_unicode(self.opts.verbose_name), 'key': escape(object_id)})
+ {'name': force_text(self.opts.verbose_name), 'key': escape(object_id)})
def get_new_field_html(self, f):
result = self.result_item(self.org_obj, f, {'is_display_first':
@@ -92,7 +92,7 @@ def _get_new_field_html(self, field_name):
allow_tags = True
text = boolean_icon(value)
else:
- text = smart_unicode(value)
+ text = smart_text(value)
else:
if isinstance(f.rel, models.ManyToOneRel):
field_val = getattr(self.org_obj, f.name)
@@ -118,6 +118,7 @@ def get(self, request, object_id):
helper = FormHelper()
helper.form_tag = False
+ helper.include_media = False
form.helper = helper
s = '{% load i18n crispy_forms_tags %}