eraser 4 年之前
当前提交
873c3ac44f
共有 100 个文件被更改,包括 21681 次插入0 次删除
  1. 33 0
      app/__init__.py
  2. 3 0
      app/admin.py
  3. 37 0
      app/adminx.py
  4. 5 0
      app/apps.py
  5. 43 0
      app/migrations/0001_initial.py
  6. 18 0
      app/migrations/0002_gameitemtype_type.py
  7. 18 0
      app/migrations/0003_auto_20190830_1006.py
  8. 23 0
      app/migrations/0004_auto_20190830_1734.py
  9. 18 0
      app/migrations/0005_gameitem_gameinfo.py
  10. 18 0
      app/migrations/0006_auto_20190904_1014.py
  11. 43 0
      app/migrations/0007_auto_20190904_1017.py
  12. 18 0
      app/migrations/0008_auto_20190904_1018.py
  13. 31 0
      app/migrations/0009_user.py
  14. 18 0
      app/migrations/0010_auto_20190905_1446.py
  15. 23 0
      app/migrations/0011_auto_20190905_1504.py
  16. 18 0
      app/migrations/0012_auto_20190905_1509.py
  17. 25 0
      app/migrations/0013_gamehistory.py
  18. 19 0
      app/migrations/0014_auto_20190905_1636.py
  19. 23 0
      app/migrations/0015_auto_20190906_1058.py
  20. 18 0
      app/migrations/0016_gameitem_gameprice.py
  21. 18 0
      app/migrations/0017_gameitem_gameimage.py
  22. 29 0
      app/migrations/0018_auto_20190916_1416.py
  23. 19 0
      app/migrations/0019_auto_20190916_1525.py
  24. 19 0
      app/migrations/0020_gameitem_gamesrc.py
  25. 0 0
      app/migrations/__init__.py
  26. 179 0
      app/models.py
  27. 42 0
      app/pa.py
  28. 29 0
      app/serializer.py
  29. 3 0
      app/tests.py
  30. 16 0
      app/urls.py
  31. 180 0
      app/views.py
  32. 二进制
      db.sqlite3
  33. 0 0
      extra_apps/__init__.py
  34. 14 0
      extra_apps/xadmin/.tx/config
  35. 70 0
      extra_apps/xadmin/__init__.py
  36. 32 0
      extra_apps/xadmin/adminx.py
  37. 15 0
      extra_apps/xadmin/apps.py
  38. 573 0
      extra_apps/xadmin/filters.py
  39. 47 0
      extra_apps/xadmin/forms.py
  40. 113 0
      extra_apps/xadmin/layout.py
  41. 二进制
      extra_apps/xadmin/locale/de_DE/LC_MESSAGES/django.mo
  42. 1454 0
      extra_apps/xadmin/locale/de_DE/LC_MESSAGES/django.po
  43. 二进制
      extra_apps/xadmin/locale/de_DE/LC_MESSAGES/djangojs.mo
  44. 72 0
      extra_apps/xadmin/locale/de_DE/LC_MESSAGES/djangojs.po
  45. 二进制
      extra_apps/xadmin/locale/en/LC_MESSAGES/django.mo
  46. 1411 0
      extra_apps/xadmin/locale/en/LC_MESSAGES/django.po
  47. 二进制
      extra_apps/xadmin/locale/en/LC_MESSAGES/djangojs.mo
  48. 69 0
      extra_apps/xadmin/locale/en/LC_MESSAGES/djangojs.po
  49. 二进制
      extra_apps/xadmin/locale/es_MX/LC_MESSAGES/django.mo
  50. 1556 0
      extra_apps/xadmin/locale/es_MX/LC_MESSAGES/django.po
  51. 二进制
      extra_apps/xadmin/locale/es_MX/LC_MESSAGES/djangojs.mo
  52. 76 0
      extra_apps/xadmin/locale/es_MX/LC_MESSAGES/djangojs.po
  53. 二进制
      extra_apps/xadmin/locale/eu/LC_MESSAGES/django.mo
  54. 1475 0
      extra_apps/xadmin/locale/eu/LC_MESSAGES/django.po
  55. 二进制
      extra_apps/xadmin/locale/eu/LC_MESSAGES/djangojs.mo
  56. 71 0
      extra_apps/xadmin/locale/eu/LC_MESSAGES/djangojs.po
  57. 二进制
      extra_apps/xadmin/locale/id_ID/LC_MESSAGES/django.mo
  58. 1403 0
      extra_apps/xadmin/locale/id_ID/LC_MESSAGES/django.po
  59. 二进制
      extra_apps/xadmin/locale/id_ID/LC_MESSAGES/djangojs.mo
  60. 69 0
      extra_apps/xadmin/locale/id_ID/LC_MESSAGES/djangojs.po
  61. 二进制
      extra_apps/xadmin/locale/ja/LC_MESSAGES/django.mo
  62. 1403 0
      extra_apps/xadmin/locale/ja/LC_MESSAGES/django.po
  63. 二进制
      extra_apps/xadmin/locale/ja/LC_MESSAGES/djangojs.mo
  64. 69 0
      extra_apps/xadmin/locale/ja/LC_MESSAGES/djangojs.po
  65. 二进制
      extra_apps/xadmin/locale/lt/LC_MESSAGES/django.mo
  66. 1418 0
      extra_apps/xadmin/locale/lt/LC_MESSAGES/django.po
  67. 二进制
      extra_apps/xadmin/locale/lt/LC_MESSAGES/djangojs.mo
  68. 71 0
      extra_apps/xadmin/locale/lt/LC_MESSAGES/djangojs.po
  69. 二进制
      extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/django.mo
  70. 1410 0
      extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/django.po
  71. 二进制
      extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/djangojs.mo
  72. 70 0
      extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/djangojs.po
  73. 二进制
      extra_apps/xadmin/locale/pl/LC_MESSAGES/django.mo
  74. 1481 0
      extra_apps/xadmin/locale/pl/LC_MESSAGES/django.po
  75. 二进制
      extra_apps/xadmin/locale/pl/LC_MESSAGES/djangojs.mo
  76. 83 0
      extra_apps/xadmin/locale/pl/LC_MESSAGES/djangojs.po
  77. 二进制
      extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/django.mo
  78. 1479 0
      extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/django.po
  79. 二进制
      extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/djangojs.mo
  80. 71 0
      extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/djangojs.po
  81. 二进制
      extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/django.mo
  82. 1438 0
      extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/django.po
  83. 二进制
      extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/djangojs.mo
  84. 71 0
      extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/djangojs.po
  85. 二进制
      extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/django.mo
  86. 1528 0
      extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/django.po
  87. 二进制
      extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.mo
  88. 87 0
      extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po
  89. 62 0
      extra_apps/xadmin/migrations/0001_initial.py
  90. 39 0
      extra_apps/xadmin/migrations/0002_log.py
  91. 20 0
      extra_apps/xadmin/migrations/0003_auto_20160715_0100.py
  92. 0 0
      extra_apps/xadmin/migrations/__init__.py
  93. 190 0
      extra_apps/xadmin/models.py
  94. 41 0
      extra_apps/xadmin/plugins/__init__.py
  95. 316 0
      extra_apps/xadmin/plugins/actions.py
  96. 68 0
      extra_apps/xadmin/plugins/aggregation.py
  97. 99 0
      extra_apps/xadmin/plugins/ajax.py
  98. 269 0
      extra_apps/xadmin/plugins/auth.py
  99. 156 0
      extra_apps/xadmin/plugins/batch.py
  100. 236 0
      extra_apps/xadmin/plugins/bookmark.py

+ 33 - 0
app/__init__.py

@@ -0,0 +1,33 @@
+# import pymysql
+#
+# pymysql.install_as_MySQLdb()
+from django.db.models.signals import pre_save, post_save
+
+
+def pre_save_func(sender, instance, **kwargs):
+    # print("pre_save_func")
+    # print("pre_save_msg:", sender)
+    # print("测试对比的类:", instance)
+    print("错了")
+    # try:
+    #
+    #     if "GameItem" == instance.s():
+    #         print("正是他:", instance.gameImage)
+    #         # instance.gameInfo = "6666666"
+    # except Exception as e:
+    #     print("错了", e)
+
+
+def post_save_func(sender, instance, **kwargs):
+    try:
+
+        if "GameItem" == instance.s():
+            print("正是他:", instance.gameImage)
+            instance.gameInfo = instance.gameImage
+    except Exception as e:
+        print("错了", e)
+
+
+#
+pre_save.connect(pre_save_func)  # models对象保存前触发callback函数
+post_save.connect(post_save_func)  # models对象保存后触发函数

+ 3 - 0
app/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 37 - 0
app/adminx.py

@@ -0,0 +1,37 @@
+import xadmin
+from .models import GameItem, GameItemType, User
+
+
+class GameItemAdmin(object):
+    list_display = ['gameType', 'gameTitle', 'gameTitleUrl', 'gamePrice', 'Avatar', 'gamePath',
+                    'gameInfo',
+                    'gameImage', 'gameSrc']
+    search_fields = ['gameTitle', ]
+    list_editable = ['gameType', 'gameTitle', 'gameImageUrl', 'gameInfo', 'gamePrice', 'gameImage',
+                     'gameSrc']
+    list_filter = ['gameType', 'gameTitle', 'gameImageUrl']
+    style_fields = {'gameType': 'm2m_transfer'}
+
+
+xadmin.site.register(GameItem, GameItemAdmin)
+
+
+class GameItemTypeAdmin(object):
+    list_display = ['typeTitle', 'type']
+    search_fields = ['typeTitle', ]
+    list_editable = ['typeTitle']
+    list_filter = ['typeTitle', ]
+
+
+xadmin.site.register(GameItemType, GameItemTypeAdmin)
+
+
+class UserAdmin(object):
+    list_display = ['userId', 'userPhone', 'userName', 'userWXId', 'userRegisterDate',
+                    'userLoginDate']
+    search_fields = ['userName', ]
+    list_editable = ['userPhone', 'userName', 'userWXId', 'userLoginDate', 'userLoginDate']
+    list_filter = ['userPhone', ]
+
+
+xadmin.site.register(User, UserAdmin)

+ 5 - 0
app/apps.py

@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class AppConfig(AppConfig):
+    name = 'app'

+ 43 - 0
app/migrations/0001_initial.py

@@ -0,0 +1,43 @@
+# Generated by Django 2.1.3 on 2019-08-30 01:53
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='GameItem',
+            fields=[
+                ('id', models.AutoField(primary_key=True, serialize=False)),
+                ('gameTitle', models.CharField(max_length=255)),
+                ('gameUrl', models.TextField()),
+            ],
+            options={
+                'verbose_name': '游戏条目',
+                'verbose_name_plural': '游戏条目',
+                'ordering': ['id'],
+            },
+        ),
+        migrations.CreateModel(
+            name='GameItemType',
+            fields=[
+                ('id', models.AutoField(primary_key=True, serialize=False)),
+                ('typeTitle', models.CharField(max_length=255)),
+            ],
+            options={
+                'verbose_name': '游戏类型',
+                'verbose_name_plural': '游戏类型',
+            },
+        ),
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameType',
+            field=models.ManyToManyField(to='app.GameItemType'),
+        ),
+    ]

+ 18 - 0
app/migrations/0002_gameitemtype_type.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-08-30 02:02
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitemtype',
+            name='type',
+            field=models.IntegerField(auto_created=True, default=0, unique=True),
+        ),
+    ]

+ 18 - 0
app/migrations/0003_auto_20190830_1006.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-08-30 02:06
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0002_gameitemtype_type'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gameitemtype',
+            name='type',
+            field=models.IntegerField(default=0, unique=True),
+        ),
+    ]

+ 23 - 0
app/migrations/0004_auto_20190830_1734.py

@@ -0,0 +1,23 @@
+# Generated by Django 2.1.3 on 2019-08-30 09:34
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0003_auto_20190830_1006'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameImageUrl',
+            field=models.TextField(default=''),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameUrl',
+            field=models.TextField(default=''),
+        ),
+    ]

+ 18 - 0
app/migrations/0005_gameitem_gameinfo.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-04 01:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0004_auto_20190830_1734'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameInfo',
+            field=models.TextField(default=''),
+        ),
+    ]

+ 18 - 0
app/migrations/0006_auto_20190904_1014.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-04 02:14
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0005_gameitem_gameinfo'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameTitle',
+            field=models.CharField(max_length=255, verbose_name='游戏类型'),
+        ),
+    ]

+ 43 - 0
app/migrations/0007_auto_20190904_1017.py

@@ -0,0 +1,43 @@
+# Generated by Django 2.1.3 on 2019-09-04 02:17
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0006_auto_20190904_1014'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameImageUrl',
+            field=models.TextField(default='', verbose_name='游戏图片'),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameInfo',
+            field=models.TextField(default='', verbose_name='游戏简介'),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameTitle',
+            field=models.CharField(max_length=255, verbose_name='游戏名字'),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameUrl',
+            field=models.TextField(default='', verbose_name='游戏地址'),
+        ),
+        migrations.AlterField(
+            model_name='gameitemtype',
+            name='type',
+            field=models.IntegerField(default=0, unique=True, verbose_name='游戏类型'),
+        ),
+        migrations.AlterField(
+            model_name='gameitemtype',
+            name='typeTitle',
+            field=models.CharField(max_length=255, verbose_name='游戏类型'),
+        ),
+    ]

+ 18 - 0
app/migrations/0008_auto_20190904_1018.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-04 02:18
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0007_auto_20190904_1017'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gameitemtype',
+            name='id',
+            field=models.AutoField(primary_key=True, serialize=False, verbose_name='游戏类型'),
+        ),
+    ]

+ 31 - 0
app/migrations/0009_user.py

@@ -0,0 +1,31 @@
+# Generated by Django 2.1.3 on 2019-09-05 06:42
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0008_auto_20190904_1018'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='User',
+            fields=[
+                ('id', models.AutoField(primary_key=True, serialize=False, verbose_name='用户id')),
+                ('userName', models.CharField(max_length=255, verbose_name='名字')),
+                ('userId', models.CharField(max_length=255, verbose_name='账号')),
+                ('userPhone', models.CharField(max_length=255, verbose_name='手机号')),
+                ('userPassWord', models.CharField(max_length=255, verbose_name='密码')),
+                ('userWXId', models.CharField(max_length=255, verbose_name='微信账号')),
+                ('userRegisterDate', models.DateTimeField(default=django.utils.timezone.now, verbose_name='注册时间')),
+                ('userLoginDate', models.DateTimeField(auto_now=True, verbose_name='登陆时间')),
+            ],
+            options={
+                'verbose_name': '用户',
+                'verbose_name_plural': '用户',
+            },
+        ),
+    ]

+ 18 - 0
app/migrations/0010_auto_20190905_1446.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-05 06:46
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0009_user'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='userPhone',
+            field=models.IntegerField(max_length=11, verbose_name='手机号'),
+        ),
+    ]

+ 23 - 0
app/migrations/0011_auto_20190905_1504.py

@@ -0,0 +1,23 @@
+# Generated by Django 2.1.3 on 2019-09-05 07:04
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0010_auto_20190905_1446'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='user',
+            name='userHead',
+            field=models.CharField(default='', max_length=255, verbose_name='头像'),
+        ),
+        migrations.AlterField(
+            model_name='user',
+            name='userPhone',
+            field=models.IntegerField(verbose_name='手机号'),
+        ),
+    ]

+ 18 - 0
app/migrations/0012_auto_20190905_1509.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-05 07:09
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0011_auto_20190905_1504'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='user',
+            name='userId',
+            field=models.CharField(max_length=255, unique=True, verbose_name='账号'),
+        ),
+    ]

+ 25 - 0
app/migrations/0013_gamehistory.py

@@ -0,0 +1,25 @@
+# Generated by Django 2.1.3 on 2019-09-05 07:29
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0012_auto_20190905_1509'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='gameHistory',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('gameId', models.IntegerField()),
+                ('userId', models.CharField(max_length=255)),
+            ],
+            options={
+                'verbose_name': '玩过的游戏的历史记录',
+                'verbose_name_plural': '玩过的游戏的历史记录',
+            },
+        ),
+    ]

+ 19 - 0
app/migrations/0014_auto_20190905_1636.py

@@ -0,0 +1,19 @@
+# Generated by Django 2.1.3 on 2019-09-05 08:36
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0013_gamehistory'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gamehistory',
+            name='gameId',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='app.GameItem'),
+        ),
+    ]

+ 23 - 0
app/migrations/0015_auto_20190906_1058.py

@@ -0,0 +1,23 @@
+# Generated by Django 2.1.3 on 2019-09-06 02:58
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0014_auto_20190905_1636'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='gamehistory',
+            options={'ordering': ('-create_time',), 'verbose_name': '玩过的游戏的历史记录', 'verbose_name_plural': '玩过的游戏的历史记录'},
+        ),
+        migrations.AddField(
+            model_name='gamehistory',
+            name='create_time',
+            field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间'),
+        ),
+    ]

+ 18 - 0
app/migrations/0016_gameitem_gameprice.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-12 08:47
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0015_auto_20190906_1058'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gamePrice',
+            field=models.FloatField(default=0.01, verbose_name='价钱'),
+        ),
+    ]

+ 18 - 0
app/migrations/0017_gameitem_gameimage.py

@@ -0,0 +1,18 @@
+# Generated by Django 2.1.3 on 2019-09-16 03:19
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0016_gameitem_gameprice'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameImage',
+            field=models.ImageField(default='', upload_to='image', verbose_name='图片'),
+        ),
+    ]

+ 29 - 0
app/migrations/0018_auto_20190916_1416.py

@@ -0,0 +1,29 @@
+# Generated by Django 2.1.3 on 2019-09-16 06:16
+
+import app.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0017_gameitem_gameimage'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameTitleUrl',
+            field=models.TextField(default='', verbose_name='游戏英文名字'),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameImage',
+            field=models.ImageField(default='', upload_to=app.models.getGameImageUrl, verbose_name='图片'),
+        ),
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameUrl',
+            field=models.TextField(default=models.TextField(default='', verbose_name='游戏英文名字'), verbose_name='游戏地址'),
+        ),
+    ]

+ 19 - 0
app/migrations/0019_auto_20190916_1525.py

@@ -0,0 +1,19 @@
+# Generated by Django 2.1.3 on 2019-09-16 07:25
+
+import app.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0018_auto_20190916_1416'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='gameitem',
+            name='gameImage',
+            field=models.ImageField(blank=True, default='', upload_to=app.models.getGameImageUrl, verbose_name='图片'),
+        ),
+    ]

+ 19 - 0
app/migrations/0020_gameitem_gamesrc.py

@@ -0,0 +1,19 @@
+# Generated by Django 2.1.3 on 2019-09-19 10:09
+
+import app.models
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('app', '0019_auto_20190916_1525'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gameitem',
+            name='gameSrc',
+            field=models.FileField(blank=True, default='', null=True, upload_to=app.models.make_video_filepath, verbose_name='游戏文件'),
+        ),
+    ]

+ 0 - 0
app/migrations/__init__.py


+ 179 - 0
app/models.py

@@ -0,0 +1,179 @@
+import os
+import threading
+from functools import partial
+
+from django.db import models
+import django.utils.timezone as timezone
+
+# Create your models here.
+from gameHall.settings import MEDIA_ROOT
+import zipfile
+
+
+def CheckFileUploadFinished(FilePath, filename):
+    WholeFilePath = os.path.join(MEDIA_ROOT, FilePath, filename)
+    print("路径是多少", WholeFilePath)
+    if (os.path.isfile(WholeFilePath)):
+        # SourcePath = str(WholeFilePath)
+        # Ext = jwkj_get_filePath_fileName_fileExt(SourcePath)[2]
+        # FinalOutputPath = SourcePath.replace(Ext, '.mp4')
+        #
+        # Convet(SourcePath, FinalOutputPath)
+        # print(FilePath)
+        # aVideoModel = VideoModel.objects.get(VideoAddress=FilePath)
+        # Ext = jwkj_get_filePath_fileName_fileExt(str(aVideoModel.VideoAddress))[2]
+        # aVideoModel.VideoAddress = str(aVideoModel.VideoAddress).replace(Ext, '.mp4')
+        # aVideoModel.VideoState = '可播放'
+        # aVideoModel.save()
+        myzip = zipfile.ZipFile(WholeFilePath)
+        mystr = os.path.join(MEDIA_ROOT, FilePath)
+        # mystr = myzip.filename.split(".")
+        # 按.字符进行分割,把c:\Python.zip分割成c:\Python和zip
+        myzip.extractall(mystr)
+        myzip.close()
+        # print("压缩包里有", myzip.namelist())
+        print("现在有")
+    else:
+        global timer
+        timer = threading.Timer(1.0, CheckFileUploadFinished, [FilePath, filename])
+        timer.start()
+        print("现在没有")
+
+
+def make_video_filepath(instance, filename):
+    # new_filename = "%s.%s" % (User.objects.make_random_password(10), filename.split('.')[-1])
+    # new_field_name = field_name.replace('/','')
+    WholeFilePath = instance.gameTitleUrl
+    # Ext = jwkj_get_filePath_fileName_fileExt(new_filename)[2]
+    # Suffix_Mp4 = '.mp4'
+    path = os.path.join(MEDIA_ROOT, WholeFilePath + '\\' + filename)
+    if (os.path.exists(path)):
+        os.remove(path)
+    timer = threading.Timer(1.0, CheckFileUploadFinished,
+                            [WholeFilePath, filename])
+    timer.start()
+    # if Ext.find(Suffix_Mp4) < 0:
+    #     timer = threading.Timer(1.0, CheckFileUploadFinished, [WholeFilePath])
+    #     timer.start()
+
+    return '%s/%s' % (WholeFilePath, filename)
+
+
+class GameItemType(models.Model):
+    id = models.AutoField('游戏类型', primary_key=True)
+    type = models.IntegerField('游戏类型', unique=True, default=0)
+    typeTitle = models.CharField('游戏类型', max_length=255)
+
+    def __str__(self):
+        return self.typeTitle
+
+    class Meta:
+        verbose_name = '游戏类型'
+        verbose_name_plural = verbose_name
+
+
+def getGameImageUrl(instance, filename):
+    # ext = filename.split('.')[-1]
+    # filename = '{}.{}'.format(uuid.uuid4().hex[:10], ext)
+    # return the whole path to the file
+    # 判断文件是否存在
+    print("现在是有这个文件吗", MEDIA_ROOT)
+    if (os.path.exists(MEDIA_ROOT + '\\' + instance.gameTitleUrl + '\\' + "icon.png")):
+        print("现在是有这个文件吗")
+        os.remove(MEDIA_ROOT + '\\' + instance.gameTitleUrl + '\\' + "icon.png")
+    else:
+        print("没有吗")
+    return '%s/%s' % (instance.gameTitleUrl, "icon.png")
+    # return os.path.join(instance.gameTitleUrl, "icon.png")
+
+
+class GameItem(models.Model):
+    id = models.AutoField(primary_key=True)
+    # gameType = models.IntegerField(default=0)
+    gameType = models.ManyToManyField(GameItemType)
+    gameTitle = models.CharField('游戏名字', max_length=255)
+    gameTitleUrl = models.TextField('游戏英文名字', default="")
+    gamePrice = models.FloatField('价钱', default=0.01)
+    gameImageUrl = models.TextField('游戏图片', default="")
+    gameUrl = models.TextField('游戏地址', default=gameTitleUrl)
+    gameInfo = models.TextField('游戏简介', default="")
+    gameImage = models.ImageField(
+        blank=True,
+        upload_to=getGameImageUrl,
+        verbose_name=u"图片",
+        default=""
+    )
+    gameSrc = models.FileField('游戏文件', blank=True, null=True,
+                               upload_to=make_video_filepath,
+                               default='')
+
+    def Avatar(self):
+        # return '<img src="%s" width="50px" height="50px"/>' % (
+        #         "https://www.yuyekeji.cn/games/" + self.gameImageUrl)
+        return '<img src="%s" width="50px" height="50px"/>' % (
+                "http://127.0.0.1:10086/" + self.gameTitleUrl+"/icon.png")
+
+    Avatar.short_description = '游戏图标'
+    Avatar.allow_tags = True
+
+    def gamePath(self):
+        # return '<a href="%s">点击</a>' % ("https://www.yuyekeji.cn/games/" + self.gameUrl)
+        return '<a href="%s">点击</a>' % ("http://127.0.0.1:10086/" + self.gameTitleUrl)
+
+    gamePath.short_description = '游戏地址'
+    gamePath.allow_tags = True
+
+    def s(self):
+        return "GameItem"
+
+    def __str__(self):
+        return self.gameTitle
+
+    class Meta:
+        verbose_name = '游戏条目'
+        verbose_name_plural = verbose_name
+        # 有排序
+        ordering = ['id']
+
+
+class User(models.Model):
+    # 名字 手机号 密码 登陆时间 注册时间
+    id = models.AutoField('用户id', primary_key=True)
+    # 名字
+    userName = models.CharField('名字', max_length=255)
+    # 账号
+    userId = models.CharField('账号', unique=True, max_length=255)
+    # 手机号
+    userPhone = models.IntegerField('手机号')
+    # 密码
+    userPassWord = models.CharField('密码', max_length=255)
+    # 微信账号
+    userWXId = models.CharField('微信账号', max_length=255)
+    # 注册时间
+    userRegisterDate = models.DateTimeField('注册时间', default=timezone.now)
+    # 登陆时间
+    userLoginDate = models.DateTimeField('登陆时间', auto_now=True)
+    # 头像
+    userHead = models.CharField('头像', default="", max_length=255)
+
+    def __str__(self):
+        return self.userId
+
+    class Meta:
+        verbose_name = '用户'
+        verbose_name_plural = verbose_name
+
+
+# 玩过的游戏的历史记录
+class gameHistory(models.Model):
+    gameId = models.ForeignKey(GameItem, on_delete=models.CASCADE)
+    userId = models.CharField(max_length=255)
+    create_time = models.DateTimeField(default=timezone.now, verbose_name='创建时间')
+
+    def __str__(self):
+        return self.userId
+
+    class Meta:
+        verbose_name = '玩过的游戏的历史记录'
+        verbose_name_plural = verbose_name
+        ordering = ('-create_time',)

+ 42 - 0
app/pa.py

@@ -0,0 +1,42 @@
+# coding: UTF-8
+import os
+import requests
+from bs4 import BeautifulSoup
+
+from app.models import GameItemType, GameItem
+
+
+def main(path):
+    url = "http://192.168.1.52:9999/games/" + path
+    r = requests.get(url)
+    r.encoding = r.apparent_encoding
+    s = r.text
+    soup = BeautifulSoup(s, "html.parser")
+    s = soup.prettify()
+    print(soup.title.string + "----" + path)
+
+    gameitem = GameItem.objects.create(gameTitle=soup.title.string
+                                       , gameImageUrl=path + "/icon.png"
+                                       , gameUrl=path
+                                       )
+    gameType = GameItemType.objects.get(id=1)
+    gameType.save()
+    # gameitem.gameTitle = soup.title.string
+    # gameitem.gameImageUrl = path + "/icon.png"
+    # gameitem.gameUrl = path
+
+    gameitem.gameType.add(gameType)
+
+
+def file_name(file_dir):
+    for root, dirs, files in os.walk(file_dir):
+        # print(root)  # 当前目录路径
+        # print(dirs)  # 当前路径下所有子目录
+        # print(files)  # 当前路径下所有非目录子文件
+        return dirs
+
+
+# dirname = file_name("F:\http\H5game\games")
+# for iterating_var in dirname:
+#     main(iterating_var)
+# print(dirname)

+ 29 - 0
app/serializer.py

@@ -0,0 +1,29 @@
+from rest_framework import serializers
+
+from app.models import GameItem, GameItemType, gameHistory, User
+
+
+class GameItemSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = GameItem
+        fields = "__all__"
+        depth = 1
+
+
+class GameHistorySerializer(serializers.ModelSerializer):
+    class Meta:
+        model = gameHistory
+        fields = "__all__"
+        depth = 1
+class UserSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = User
+        fields = "__all__"
+        depth = 1
+
+
+class gameItemTypeSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = GameItemType
+        fields = "__all__"
+        depth = 1

+ 3 - 0
app/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 16 - 0
app/urls.py

@@ -0,0 +1,16 @@
+from django.conf.urls import url
+from django.urls import path
+from django.views.static import serve
+
+
+from . import views
+
+urlpatterns = [
+
+    path('', views.index, name='index'),
+    url(r'^getDataForList$', views.getDataForList.as_view(), name='getDataForList'),
+    url(r'^getGameItemType', views.getGameItemType.as_view(), name='getGameItemType'),
+    url(r'^createHistory', views.createHistory.as_view(), name='createHistory'),
+    url(r'^getHistory', views.getHistory.as_view(), name='getHistory'),
+    url(r'^getUser', views.getUser.as_view(), name='getUser'),
+]

+ 180 - 0
app/views.py

@@ -0,0 +1,180 @@
+import os
+
+import requests
+from bs4 import BeautifulSoup
+from django.shortcuts import render
+
+# Create your views here.
+from django.http import HttpResponse
+from rest_framework import status
+from rest_framework.response import Response
+from rest_framework.views import APIView
+
+from app.models import GameItem, GameItemType, User, gameHistory
+from app.pa import file_name, main
+from app.serializer import GameItemSerializer, gameItemTypeSerializer, GameHistorySerializer, \
+    UserSerializer
+import logging
+
+from rest_framework import permissions
+
+from gameHall.MyPageNumberPagination import MyPageNumberPagination
+
+
+def index(request):
+    # dirname = file_name("F:\http\H5game\games")
+    # for iterating_var in dirname:
+    #     main(iterating_var)
+    # print(dirname)
+    return HttpResponse("Hello, world ! This is a django site.")
+
+
+# 使用APIView
+class getDataForList(APIView):
+    def get(self, request):
+        # gameItem = GameItem.objects.all()
+        # print("走到这里了么")
+        # serializer = GameItemSerializer(gameItem, many=True)
+        # return Response(serializer.data)
+        # gameItem = GameItem.objects.all()
+        print("我现在要获取什么类型的", request.query_params["type"])
+        gameItemType = GameItemType.objects.get(type=request.query_params["type"])
+        print("结果集合", gameItemType.gameitem_set.all())
+        gameItem = gameItemType.gameitem_set.all()
+        # gameItem = GameItem.objects.get(id=30)
+        page = MyPageNumberPagination()
+        page_roles = page.paginate_queryset(queryset=gameItem, request=request, view=self)
+        serializer = GameItemSerializer(page_roles, many=True)
+        # print("走到这里了么post", serializer)
+        # return Response(gameItemType)  # 只返回数据
+
+        return page.get_paginated_response(serializer.data)  # 返回前后夜url
+
+    def post(self, request):
+        # serializer = GameItemSerializer(data=request.data)
+        # if serializer.is_valid():
+        #     serializer.save()
+        #     return Response(serializer.data, status=status.HTTP_201_CREATED)
+        # else:
+        #     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
+        gameItem = GameItem.objects.all()
+        page = MyPageNumberPagination()
+        page_roles = page.paginate_queryset(queryset=gameItem, request=request, view=self)
+        serializer = GameItemSerializer(page_roles, many=True)
+        # return Response(roles_ser.data)  # 只返回数据
+        print("走到这里了么post", request.data)
+        return page.get_paginated_response(serializer.data)  # 返回前后夜url
+
+        # return Response(serializer.data)
+
+
+class getGameItemType(APIView):
+    def get(self, request):
+        # gameItem = GameItem.objects.all()
+        # print("走到这里了么")
+        # serializer = GameItemSerializer(gameItem, many=True)
+        # return Response(serializer.data)
+        # gameItem = GameItem.objects.all()
+        gameItemTypes = GameItemType.objects.all()
+
+        # 分页
+        # page = MyPageNumberPagination()
+        # page_roles = page.paginate_queryset(queryset=gameItem, request=request, view=self)
+        # serializer = GameItemSerializer(gameItemTypes, many=True)
+        # return page.get_paginated_response(serializer.data)  # 返回前后夜url
+
+        # 正常数组
+        serializer = gameItemTypeSerializer(gameItemTypes, many=True)
+        return Response(serializer.data)  # 只返回数据
+
+    def post(self, request):
+        # serializer = GameItemSerializer(data=request.data)
+        # if serializer.is_valid():
+        #     serializer.save()
+        #     return Response(serializer.data, status=status.HTTP_201_CREATED)
+        # else:
+        #     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
+        gameItem = GameItem.objects.all()
+        page = MyPageNumberPagination()
+        page_roles = page.paginate_queryset(queryset=gameItem, request=request, view=self)
+        serializer = GameItemSerializer(page_roles, many=True)
+        # return Response(roles_ser.data)  # 只返回数据
+        print("走到这里了么post", request.data)
+        return page.get_paginated_response(serializer.data)  # 返回前后夜url
+
+        # return Response(serializer.data)
+
+
+# 添加历史记录
+class createHistory(APIView):
+    def get(self, request):
+        gameId = request.query_params["id"]
+        userId = request.query_params["userId"]
+
+        game = GameItem.objects.get(id=gameId)
+
+        history = gameHistory.objects.create(
+            userId=userId,
+            gameId=game,
+        )
+        # print("我现在要获取什么类型的", request.query_params["id"])
+        return Response("添加成功")
+
+
+# 获取历史记录
+class getHistory(APIView):
+    def get(self, request):
+        userId = request.query_params["userId"]
+        history = gameHistory.objects.all().filter(userId=userId)
+        serializer = GameHistorySerializer(history, many=True)
+        # print("获取", history)
+
+        return Response(serializer.data)
+
+
+# 创建用户
+class createUser(APIView):
+    def get(self, request):
+        # gameItem = GameItem.objects.all()
+        # print("走到这里了么")
+        # serializer = GameItemSerializer(gameItem, many=True)
+        # return Response(serializer.data)
+        # gameItem = GameItem.objects.all()
+        # user = User.objects.create(
+        #     userId="admin1",
+        #     userName="admin1",
+        #     userPhone=154645,
+        #     userPassWord="admin1",
+        #     userWXId="admin1"
+        # )
+
+        # 名字
+        # userName = models.CharField('名字', max_length=255)
+        # # 账号
+        # userId = models.CharField('账号', max_length=255)
+        # # 手机号
+        # userPhone = models.IntegerField('手机号', max_length=11)
+        # # 密码
+        # userPassWord = models.CharField('密码', max_length=255)
+        # # 微信账号
+        # userWXId = models.CharField('微信账号', max_length=255)
+
+        # print("我现在要获取什么类型的", request.query_params["type"])
+        # 分页
+        # page = MyPageNumberPagination()
+        # page_roles = page.paginate_queryset(queryset=gameItem, request=request, view=self)
+        # serializer = GameItemSerializer(gameItemTypes, many=True)
+        # return page.get_paginated_response(serializer.data)  # 返回前后夜url
+
+        # 正常数组
+        # serializer = gameItemTypeSerializer(gameItemTypes, many=True)
+        return Response("")  # 只返回数据
+# 获取用户
+class getUser(APIView):
+    def get(self, request):
+        userId = request.query_params["userId"]
+        user = User.objects.get(userId=userId)
+        serializer = UserSerializer(user)
+        # print("获取", serializer)
+
+        return Response(serializer.data)

二进制
db.sqlite3


+ 0 - 0
extra_apps/__init__.py


+ 14 - 0
extra_apps/xadmin/.tx/config

@@ -0,0 +1,14 @@
+[main]
+host = https://www.transifex.com
+
+[xadmin-core.django]
+file_filter = locale/<lang>/LC_MESSAGES/django.po
+source_file = locale/en/LC_MESSAGES/django.po
+source_lang = en
+type = PO
+
+[xadmin-core.djangojs]
+file_filter = locale/<lang>/LC_MESSAGES/djangojs.po
+source_file = locale/en/LC_MESSAGES/djangojs.po
+source_lang = en
+type = PO

+ 70 - 0
extra_apps/xadmin/__init__.py

@@ -0,0 +1,70 @@
+
+VERSION = (0,6,0)
+
+from xadmin.sites import AdminSite, site
+
+class Settings(object):
+    pass
+
+
+def autodiscover():
+    """
+    Auto-discover INSTALLED_APPS admin.py modules and fail silently when
+    not present. This forces an import on them to register any admin bits they
+    may want.
+    """
+
+    from importlib import import_module
+    from django.conf import settings
+    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', {
+        "textinput": "textinput textInput form-control",
+        "fileinput": "fileinput fileUpload form-control",
+        "passwordinput": "textinput textInput form-control",
+    })
+
+    from xadmin.views import register_builtin_views
+    register_builtin_views(site)
+
+    # load xadmin settings from XADMIN_CONF module
+    try:
+        xadmin_conf = getattr(settings, 'XADMIN_CONF', 'xadmin_conf.py')
+        conf_mod = import_module(xadmin_conf)
+    except Exception:
+        conf_mod = None
+
+    if conf_mod:
+        for key in dir(conf_mod):
+            setting = getattr(conf_mod, key)
+            try:
+                if issubclass(setting, Settings):
+                    site.register_settings(setting.__name__, setting)
+            except Exception:
+                pass
+
+    from xadmin.plugins import register_builtin_plugins
+    register_builtin_plugins(site)
+
+    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_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
+            # could raise NotRegistered and AlreadyRegistered exceptions
+            # (see #8245).
+            site.restore_registry(before_import_registry)
+
+            # Decide whether to bubble up this error. If the app just
+            # doesn't have an admin module, we can ignore the error
+            # attempting to import it, otherwise we want it to bubble up.
+            if module_has_submodule(mod, 'adminx'):
+                raise
+
+default_app_config = 'xadmin.apps.XAdminConfig'

+ 32 - 0
extra_apps/xadmin/adminx.py

@@ -0,0 +1,32 @@
+from __future__ import absolute_import
+import xadmin
+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('%s_%s_change' % (instance.content_type.app_label, instance.content_type.model), 
+                instance.object_id)
+            return "<a href='%s'>%s</a>" % (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)

+ 15 - 0
extra_apps/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)

+ 573 - 0
extra_apps/xadmin/filters.py

@@ -0,0 +1,573 @@
+from __future__ import absolute_import
+from django.db import models
+from django.core.exceptions import ImproperlyConfigured
+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, 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,
+                   reverse_field_path, get_limit_choices_to_from_path, prepare_lookup_value)
+
+
+class BaseFilter(object):
+    title = None
+    template = 'xadmin/filters/list.html'
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        pass
+
+    def __init__(self, request, params, model, admin_view):
+        self.used_params = {}
+        self.request = request
+        self.params = params
+        self.model = model
+        self.admin_view = admin_view
+
+        if self.title is None:
+            raise ImproperlyConfigured(
+                "The filter '%s' does not specify "
+                "a 'title'." % self.__class__.__name__)
+
+    def query_string(self, new_params=None, remove=None):
+        return self.admin_view.get_query_string(new_params, remove)
+
+    def form_params(self):
+        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):
+        """
+        Returns True if some choices would be output for this filter.
+        """
+        raise NotImplementedError
+
+    @property
+    def is_used(self):
+        return len(self.used_params) > 0
+
+    def do_filte(self, queryset):
+        """
+        Returns the filtered queryset.
+        """
+        raise NotImplementedError
+
+    def get_context(self):
+        return {'title': self.title, 'spec': self, 'form_params': self.form_params()}
+
+    def __str__(self):
+        tpl = get_template(self.template)
+        return mark_safe(tpl.render(context=self.get_context()))
+
+
+class FieldFilterManager(object):
+    _field_list_filters = []
+    _take_priority_index = 0
+
+    def register(self, list_filter_class, take_priority=False):
+        if take_priority:
+            # This is to allow overriding the default filters for certain types
+            # of fields with some custom filters. The first found in the list
+            # is used in priority.
+            self._field_list_filters.insert(
+                self._take_priority_index, list_filter_class)
+            self._take_priority_index += 1
+        else:
+            self._field_list_filters.append(list_filter_class)
+        return list_filter_class
+
+    def create(self, field, request, params, model, admin_view, field_path):
+        for list_filter_class in self._field_list_filters:
+            if not list_filter_class.test(field, request, params, model, admin_view, field_path):
+                continue
+            return list_filter_class(field, request, params,
+                                     model, admin_view, field_path=field_path)
+
+manager = FieldFilterManager()
+
+
+class FieldFilter(BaseFilter):
+
+    lookup_formats = {}
+
+    def __init__(self, field, request, params, model, admin_view, field_path):
+        self.field = field
+        self.field_path = field_path
+        self.title = getattr(field, 'verbose_name', field_path)
+        self.context_params = {}
+
+        super(FieldFilter, self).__init__(request, params, model, admin_view)
+
+        for name, format in self.lookup_formats.items():
+            p = format % field_path
+            self.context_params["%s_name" % name] = FILTER_PREFIX + p
+            if p in params:
+                value = prepare_lookup_value(p, params.pop(p))
+                self.used_params[p] = value
+                self.context_params["%s_val" % name] = value
+            else:
+                self.context_params["%s_val" % name] = ''
+
+        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)
+        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):
+        return True
+
+    def do_filte(self, queryset):
+        return queryset.filter(**self.used_params)
+
+
+class ListFieldFilter(FieldFilter):
+    template = 'xadmin/filters/list.html'
+
+    def get_context(self):
+        context = super(ListFieldFilter, self).get_context()
+        context['choices'] = list(self.choices())
+        return context
+
+
+@manager.register
+class BooleanFieldListFilter(ListFieldFilter):
+    lookup_formats = {'exact': '%s__exact', 'isnull': '%s__isnull'}
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return isinstance(field, (models.BooleanField, models.NullBooleanField))
+
+    def choices(self):
+        for lookup, title in (
+                ('', _('All')),
+                ('1', _('Yes')),
+                ('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,
+            }
+        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'),
+            }
+
+
+@manager.register
+class ChoicesFieldListFilter(ListFieldFilter):
+    lookup_formats = {'exact': '%s__exact'}
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return bool(field.choices)
+
+    def choices(self):
+        yield {
+            'selected': self.lookup_exact_val is '',
+            'query_string': self.query_string({}, [self.lookup_exact_name]),
+            'display': _('All')
+        }
+        for lookup, title in self.field.flatchoices:
+            yield {
+                'selected': smart_text(lookup) == self.lookup_exact_val,
+                'query_string': self.query_string({self.lookup_exact_name: lookup}),
+                'display': title,
+            }
+
+
+@manager.register
+class TextFieldListFilter(FieldFilter):
+    template = 'xadmin/filters/char.html'
+    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)
+        )
+
+
+@manager.register
+class NumberFieldListFilter(FieldFilter):
+    template = 'xadmin/filters/number.html'
+    lookup_formats = {'equal': '%s__exact', 'lt': '%s__lt', 'gt': '%s__gt',
+                      'ne': '%s__ne', 'lte': '%s__lte', 'gte': '%s__gte',
+                      }
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return isinstance(field, (models.DecimalField, models.FloatField, models.IntegerField))
+
+    def do_filte(self, queryset):
+        params = self.used_params.copy()
+        ne_key = '%s__ne' % self.field_path
+        if ne_key in params:
+            queryset = queryset.exclude(
+                **{self.field_path: params.pop(ne_key)})
+        return queryset.filter(**params)
+
+
+@manager.register
+class DateFieldListFilter(ListFieldFilter):
+    template = 'xadmin/filters/date.html'
+    lookup_formats = {'since': '%s__gte', 'until': '%s__lt',
+                      'year': '%s__year', 'month': '%s__month', 'day': '%s__day',
+                      'isnull': '%s__isnull'}
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return isinstance(field, models.DateField)
+
+    def __init__(self, field, request, params, model, admin_view, field_path):
+        self.field_generic = '%s__' % field_path
+        self.date_params = dict([(FILTER_PREFIX + k, v) for k, v in params.items()
+                                 if k.startswith(self.field_generic)])
+
+        super(DateFieldListFilter, self).__init__(
+            field, request, params, model, admin_view, field_path)
+
+        now = timezone.now()
+        # When time zone support is enabled, convert "now" to the user's time
+        # zone so Django's definition of "Today" matches what the user expects.
+        if now.tzinfo is not None:
+            current_tz = timezone.get_current_timezone()
+            now = now.astimezone(current_tz)
+            if hasattr(current_tz, 'normalize'):
+                # available for pytz time zones
+                now = current_tz.normalize(now)
+
+        if isinstance(field, models.DateTimeField):
+            today = now.replace(hour=0, minute=0, second=0, microsecond=0)
+        else:       # field is a models.DateField
+            today = now.date()
+        tomorrow = today + datetime.timedelta(days=1)
+
+        self.links = (
+            (_('Any date'), {}),
+            (_('Has date'), {
+                self.lookup_isnull_name: False
+            }),
+            (_('Has no date'), {
+                self.lookup_isnull_name: 'True'
+            }),
+            (_('Today'), {
+                self.lookup_since_name: str(today),
+                self.lookup_until_name: str(tomorrow),
+            }),
+            (_('Past 7 days'), {
+                self.lookup_since_name: str(today - datetime.timedelta(days=7)),
+                self.lookup_until_name: str(tomorrow),
+            }),
+            (_('This month'), {
+                self.lookup_since_name: str(today.replace(day=1)),
+                self.lookup_until_name: str(tomorrow),
+            }),
+            (_('This year'), {
+                self.lookup_since_name: str(today.replace(month=1, day=1)),
+                self.lookup_until_name: str(tomorrow),
+            }),
+        )
+
+    def get_context(self):
+        context = super(DateFieldListFilter, self).get_context()
+        context['choice_selected'] = bool(self.lookup_year_val) or bool(self.lookup_month_val) \
+            or bool(self.lookup_day_val)
+        return context
+
+    def choices(self):
+        for title, param_dict in self.links:
+            yield {
+                'selected': self.date_params == param_dict,
+                'query_string': self.query_string(
+                    param_dict, [FILTER_PREFIX + self.field_generic]),
+                'display': title,
+            }
+
+
+@manager.register
+class RelatedFieldSearchFilter(FieldFilter):
+    template = 'xadmin/filters/fk_search.html'
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        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) in ('fk-ajax', 'fk-select')
+
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        other_model = get_model_from_relation(field)
+        if hasattr(field, 'remote_field'):
+            rel_name = field.remote_field.get_related_field().name
+        else:
+            rel_name = other_model._meta.pk.name
+
+        self.lookup_formats = {'in': '%%s__%s__in' % rel_name, 'exact': '%%s__%s__exact' % rel_name}
+        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.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.remote_field.limit_choices_to:
+            for i in list(field.remote_field.limit_choices_to):
+                self.choices += "&_p_%s=%s" % (i, field.remote_field.limit_choices_to[i])
+            self.choices = format_html(self.choices)
+
+    def label_for_value(self, other_model, rel_name, value):
+        try:
+            obj = other_model._default_manager.get(**{rel_name: value})
+            return '%s' % escape(Truncator(obj).words(14, truncate='...'))
+        except (ValueError, other_model.DoesNotExist):
+            return ""
+
+    def get_context(self):
+        context = super(RelatedFieldSearchFilter, self).get_context()
+        context['search_url'] = self.search_url
+        context['label'] = self.label
+        context['choices'] = self.choices
+        context['relfield_style'] = self.relfield_style
+        return context
+
+
+@manager.register
+class RelatedFieldListFilter(ListFieldFilter):
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return is_related_field2(field)
+
+    def __init__(self, field, request, params, model, model_admin, field_path):
+        other_model = get_model_from_relation(field)
+        if hasattr(field, 'remote_field'):
+            rel_name = field.remote_field.get_related_field().name
+        else:
+            rel_name = other_model._meta.pk.name
+
+        self.lookup_formats = {'in': '%%s__%s__in' % rel_name, 'exact': '%%s__%s__exact' %
+                               rel_name, 'isnull': '%s__isnull'}
+        self.lookup_choices = field.get_choices(include_blank=False)
+        super(RelatedFieldListFilter, self).__init__(
+            field, request, params, model, model_admin, field_path)
+
+        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
+
+    def has_output(self):
+        if (is_related_field(self.field)
+                and self.field.field.null or hasattr(self.field, 'remote_field')
+                and self.field.null):
+            extra = 1
+        else:
+            extra = 0
+        return len(self.lookup_choices) + extra > 1
+
+    def expected_parameters(self):
+        return [self.lookup_kwarg, self.lookup_kwarg_isnull]
+
+    def choices(self):
+        yield {
+            'selected': self.lookup_exact_val == '' and not self.lookup_isnull_val,
+            'query_string': self.query_string({},
+                                              [self.lookup_exact_name, self.lookup_isnull_name]),
+            'display': _('All'),
+        }
+        for pk_val, val in self.lookup_choices:
+            yield {
+                '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 (is_related_field(self.field)
+                and self.field.field.null or hasattr(self.field, 'remote_field')
+                and self.field.null):
+            yield {
+                'selected': bool(self.lookup_isnull_val),
+                'query_string': self.query_string({
+                    self.lookup_isnull_name: 'True',
+                }, [self.lookup_exact_name]),
+                'display': EMPTY_CHANGELIST_VALUE,
+            }
+
+
+@manager.register
+class MultiSelectFieldListFilter(ListFieldFilter):
+    """ Delegates the filter to the default filter and ors the results of each
+
+    Lists the distinct values of each field as a checkbox
+    Uses the default spec for each 
+
+    """
+    template = 'xadmin/filters/checklist.html'
+    lookup_formats = {'in': '%s__in'}
+    cache_config = {'enabled': False, 'key': 'quickfilter_%s', 'timeout': 3600, 'cache': 'default'}
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return True
+
+    def get_cached_choices(self):
+        if not self.cache_config['enabled']:
+            return None
+        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 = 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):
+        super(MultiSelectFieldListFilter, self).__init__(field, request, params, model, model_admin, field_path)
+
+        # Check for it in the cachce
+        if cache_config is not None and type(cache_config) == dict:
+            self.cache_config.update(cache_config)
+
+        if self.cache_config['enabled']:
+            self.field_path = field_path
+            choices = self.get_cached_choices()
+            if choices:
+                self.lookup_choices = choices
+                return
+
+        # Else rebuild it
+        queryset = self.admin_view.queryset().exclude(**{"%s__isnull" % field_path: True}).values_list(field_path, flat=True).distinct()
+        #queryset = self.admin_view.queryset().distinct(field_path).exclude(**{"%s__isnull"%field_path:True})
+
+        if field_order_by is not None:
+            # Do a subquery to order the distinct set
+            queryset = self.admin_view.queryset().filter(id__in=queryset).order_by(field_order_by)
+
+        if field_limit is not None and type(field_limit) == int and queryset.count() > field_limit:
+            queryset = queryset[:field_limit]
+
+        self.lookup_choices = [str(it) for it in queryset.values_list(field_path, flat=True) if str(it).strip() != ""]
+        if sort_key is not None:
+            self.lookup_choices = sorted(self.lookup_choices, key=sort_key)
+
+        if self.cache_config['enabled']:
+            self.set_cached_choices(self.lookup_choices)
+
+    def choices(self):
+        self.lookup_in_val = (type(self.lookup_in_val) in (tuple, list)) and self.lookup_in_val or list(self.lookup_in_val)
+        yield {
+            'selected': len(self.lookup_in_val) == 0,
+            'query_string': self.query_string({}, [self.lookup_in_name]),
+            'display': _('All'),
+        }
+        for val in self.lookup_choices:
+            yield {
+                '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,
+            }
+
+
+@manager.register
+class AllValuesFieldListFilter(ListFieldFilter):
+    lookup_formats = {'exact': '%s__exact', 'isnull': '%s__isnull'}
+
+    @classmethod
+    def test(cls, field, request, params, model, admin_view, field_path):
+        return True
+
+    def __init__(self, field, request, params, model, admin_view, field_path):
+        parent_model, reverse_path = reverse_field_path(model, field_path)
+        queryset = parent_model._default_manager.all()
+        # optional feature: limit choices base on existing relationships
+        # queryset = queryset.complex_filter(
+        #    {'%s__isnull' % reverse_path: False})
+        limit_choices_to = get_limit_choices_to_from_path(model, field_path)
+        queryset = queryset.filter(limit_choices_to)
+
+        self.lookup_choices = (queryset
+                               .distinct()
+                               .order_by(field.name)
+                               .values_list(field.name, flat=True))
+        super(AllValuesFieldListFilter, self).__init__(
+            field, request, params, model, admin_view, field_path)
+
+    def choices(self):
+        yield {
+            'selected': (self.lookup_exact_val is '' and self.lookup_isnull_val is ''),
+            'query_string': self.query_string({}, [self.lookup_exact_name, self.lookup_isnull_name]),
+            'display': _('All'),
+        }
+        include_none = False
+        for val in self.lookup_choices:
+            if val is None:
+                include_none = True
+                continue
+            val = smart_text(val)
+            yield {
+                'selected': self.lookup_exact_val == val,
+                'query_string': self.query_string({self.lookup_exact_name: val},
+                                                  [self.lookup_isnull_name]),
+                'display': val,
+            }
+        if include_none:
+            yield {
+                'selected': bool(self.lookup_isnull_val),
+                'query_string': self.query_string({self.lookup_isnull_name: 'True'},
+                                                  [self.lookup_exact_name]),
+                'display': EMPTY_CHANGELIST_VALUE,
+            }

+ 47 - 0
extra_apps/xadmin/forms.py

@@ -0,0 +1,47 @@
+from django import forms
+
+from django.contrib.auth import authenticate
+from django.contrib.auth.forms import AuthenticationForm
+
+from django.utils.translation import ugettext_lazy, ugettext as _
+
+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.")
+
+
+class AdminAuthenticationForm(AuthenticationForm):
+    """
+    A custom authentication form used in the admin app.
+
+    """
+    this_is_the_login_form = forms.BooleanField(
+        widget=forms.HiddenInput, initial=1,
+        error_messages={'required': ugettext_lazy("Please log in again, because your session has expired.")})
+
+    def clean(self):
+        username = self.cleaned_data.get('username')
+        password = self.cleaned_data.get('password')
+        message = ERROR_MESSAGE
+
+        if username and password:
+            self.user_cache = authenticate(
+                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)
+                    except (User.DoesNotExist, User.MultipleObjectsReturned):
+                        # Nothing to do here, moving along.
+                        pass
+                    else:
+                        if user.check_password(password):
+                            message = _("Your e-mail address is not your username."
+                                        " Try '%s' instead.") % user.username
+                raise forms.ValidationError(message)
+            elif not self.user_cache.is_active or not self.user_cache.is_staff:
+                raise forms.ValidationError(message)
+        return self.cleaned_data

+ 113 - 0
extra_apps/xadmin/layout.py

@@ -0,0 +1,113 @@
+from crispy_forms.helper import FormHelper
+from crispy_forms.layout import *
+from crispy_forms.bootstrap import *
+from crispy_forms.utils import render_field, flatatt, TEMPLATE_PACK
+
+from crispy_forms import layout
+from crispy_forms import bootstrap
+
+import math
+
+
+class Fieldset(layout.Fieldset):
+    template = "xadmin/layout/fieldset.html"
+
+    def __init__(self, legend, *fields, **kwargs):
+        self.description = kwargs.pop('description', None)
+        self.collapsed = kwargs.pop('collapsed', None)
+        super(Fieldset, self).__init__(legend, *fields, **kwargs)
+
+
+class Row(layout.Div):
+
+    def __init__(self, *fields, **kwargs):
+        css_class = 'form-inline form-group'
+        new_fields = [self.convert_field(f, len(fields)) for f in fields]
+        super(Row, self).__init__(css_class=css_class, *new_fields, **kwargs)
+
+    def convert_field(self, f, counts):
+        col_class = "col-sm-%d" % int(math.ceil(12 / counts))
+        if not (isinstance(f, Field) or issubclass(f.__class__, Field)):
+            f = layout.Field(f)
+        if f.wrapper_class:
+            f.wrapper_class += " %s" % col_class
+        else:
+            f.wrapper_class = col_class
+        return f
+
+
+class Col(layout.Column):
+
+    def __init__(self, id, *fields, **kwargs):
+        css_class = ['column', 'form-column', id, 'col col-sm-%d' %
+                     kwargs.get('span', 6)]
+        if kwargs.get('horizontal'):
+            css_class.append('form-horizontal')
+        super(Col, self).__init__(css_class=' '.join(css_class), *
+                                  fields, **kwargs)
+
+
+class Main(layout.Column):
+    css_class = "column form-column main col col-sm-9 form-horizontal"
+
+
+class Side(layout.Column):
+    css_class = "column form-column sidebar col col-sm-3"
+
+
+class Container(layout.Div):
+    css_class = "form-container row clearfix"
+
+
+# Override bootstrap3
+class InputGroup(layout.Field):
+
+    template = "xadmin/layout/input_group.html"
+
+    def __init__(self, field, *args, **kwargs):
+        self.field = field
+        self.inputs = list(args)
+        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=TEMPLATE_PACK, **kwargs):
+        classes = form.fields[self.field].widget.attrs.get('class', '')
+        extra_context = {
+            'inputs': self.inputs, 
+            'input_size': self.input_size,
+            'classes': classes.replace('form-control', '')
+        }
+        if hasattr(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, extra_context=extra_context, **kwargs)
+
+
+class PrependedText(InputGroup):
+
+    def __init__(self, field, text, **kwargs):
+        super(PrependedText, self).__init__(field, text, '@@', **kwargs)
+
+
+class AppendedText(InputGroup):
+
+    def __init__(self, field, text, **kwargs):
+        super(AppendedText, self).__init__(field, '@@', text, **kwargs)
+
+
+class PrependedAppendedText(InputGroup):
+
+    def __init__(self, field, prepended_text=None, appended_text=None, *args, **kwargs):
+        super(PrependedAppendedText, self).__init__(
+            field, prepended_text, '@@', appended_text, **kwargs)

二进制
extra_apps/xadmin/locale/de_DE/LC_MESSAGES/django.mo


+ 1454 - 0
extra_apps/xadmin/locale/de_DE/LC_MESSAGES/django.po

@@ -0,0 +1,1454 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# p3n15h34d <f237443@rmqkr.net>, 2013
+# Sebastian Morkisch <semox78@googlemail.com>, 2013
+# Azd325 <tim.kleinschmidt@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \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 <semox78@googlemail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Ja"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "Nein"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Beliebiges Datum"
+
+#: filters.py:268
+msgid "Has date"
+msgstr "Hat ein Datum"
+
+#: filters.py:271
+msgid "Has no date"
+msgstr "Hat kein Datum"
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Heute"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "Letzten 7 Tage"
+
+#: filters.py:282
+msgid "This month"
+msgstr "Diesen Monat"
+
+#: 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."
+
+#: forms.py:21
+msgid "Please log in again, because your session has expired."
+msgstr "Ihre Sitzung ist abgelaufen - bitte melden Sie sich erneut an."
+
+#: forms.py:41
+#, python-format
+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:48
+msgid "Title"
+msgstr "Titel"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr "Benutzer"
+
+#: models.py:50
+msgid "Url Name"
+msgstr "URL Name"
+
+#: models.py:52
+msgid "Query String"
+msgstr "Abfrage String"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr "Wird geteilt"
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Lesezeichen"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr "Einstellungsschlüssel"
+
+#: models.py:90
+msgid "Settings Content"
+msgstr "Einstellungsinhalt"
+
+#: models.py:102
+msgid "User Setting"
+msgstr "Benutzereinstellung"
+
+#: models.py:103
+msgid "User Settings"
+msgstr "Benutzereinstelllungen"
+
+#: models.py:108
+msgid "Page"
+msgstr "Seite"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Widget Typ"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Widget Parameter"
+
+#: models.py:137
+msgid "User Widget"
+msgstr "Benutzer Widget"
+
+#: models.py:138
+msgid "User Widgets"
+msgstr "Benutzer Widgets"
+
+#: 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"
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Kann nicht gelöscht werden %(name)s"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Sind Sie sicher?"
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 von %(cnt)s ausgewählt"
+
+#: 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"
+msgstr "Min"
+
+#: plugins/aggregation.py:14
+msgid "Max"
+msgstr "Max"
+
+#: plugins/aggregation.py:14
+msgid "Avg"
+msgstr "Durchschnitt"
+
+#: plugins/aggregation.py:14
+msgid "Sum"
+msgstr "Summe"
+
+#: plugins/aggregation.py:14
+msgid "Count"
+msgstr "Anzahl"
+
+#: plugins/auth.py:21
+#, fuzzy, python-format
+msgid "Can add %s"
+msgstr "Kann %s betrachten"
+
+#: plugins/auth.py:22
+#, fuzzy, python-format
+msgid "Can change %s"
+msgstr "Ändern %s"
+
+#: plugins/auth.py:23
+#, fuzzy, python-format
+msgid "Can edit %s"
+msgstr "Kann %s betrachten"
+
+#: plugins/auth.py:24
+#, fuzzy, python-format
+msgid "Can delete %s"
+msgstr "Kann nicht gelöscht werden %(name)s"
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr "Kann %s betrachten"
+
+#: plugins/auth.py:87
+msgid "Personal info"
+msgstr "Persönliche Informationen"
+
+#: plugins/auth.py:91
+msgid "Permissions"
+msgstr "Berechtigungen"
+
+#: plugins/auth.py:94
+msgid "Important dates"
+msgstr "Wichtige Termine"
+
+#: plugins/auth.py:99
+msgid "Status"
+msgstr "Status"
+
+#: plugins/auth.py:111
+#, fuzzy
+msgid "Permission Name"
+msgstr "Berechtigungen"
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr "Passwort ändern"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Passwort ändern: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Passwort erfolgreich geändert."
+
+#: 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"
+msgstr "Passwort ändern"
+
+#: plugins/batch.py:44
+msgid "Change this field"
+msgstr "Änderung des Feldes"
+
+#: plugins/batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "Anpassung aller gewählten %(verbose_name_plural)s"
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr "Es wurden %(count)d %(items)s erfolgreich geändert."
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr "Als Lesezeichen abspeichern"
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr "Einfaches Diagramm der Modelle anzeigen."
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr "%s Diagramme"
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+#, fuzzy
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "Entferne"
+msgstr[1] "Entferne"
+
+#: plugins/comments.py:73
+#, fuzzy
+msgid "Remove selected comments"
+msgstr "Gelöschte %(name)s wiederherstellen"
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr "Einzelheiten von %s"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "Eingabe %s"
+
+#: 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."
+
+#: plugins/export.py:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Seite"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr "<b>Fehlerhaftes Filtern:</b> %s"
+
+#: plugins/images.py:29
+msgid "Previous"
+msgstr "Vorherige"
+
+#: plugins/images.py:29
+msgid "Next"
+msgstr "Nächste"
+
+#: plugins/images.py:29
+msgid "Slideshow"
+msgstr "Slideshow"
+
+#: plugins/images.py:29
+msgid "Download"
+msgstr "Download"
+
+#: plugins/images.py:50
+msgid "Change:"
+msgstr "Änderung:"
+
+#: plugins/layout.py:16
+msgid "Table"
+msgstr "Tabelle"
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr "Thumbnails"
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr "Haben Sie Ihr Passwort oder den Benutzernamen vergessen?"
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr "Erstelle %s neu"
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Abhängige Objekte"
+
+#: 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"
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr "Standard Bootstrap Thema"
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr "Bootstrap2"
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr "Bootstrap 2.x Thema"
+
+#: 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:106
+msgid "Initial version."
+msgstr "Erste Version."
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr "Version ändern."
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr "Version zurückfallen."
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr "Version wiederherstellen."
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "Gelöschte %(verbose_name)s."
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr "Änderungen: %s"
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "Es müssen zwei Versionen ausgewählt sein."
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Bitte wählen Sie zwei unterschiedliche Versionen aus."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr "Aktuell: %s"
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr "Auf %s zurückfallen"
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr "Stelle %s wieder her"
+
+#: plugins/xversion.py:477
+#, python-format
+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: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."
+
+#: 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
+#: 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:473
+msgid "Home"
+msgstr "Startseite"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr "Serverfehler"
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr "Serverfehler (500)"
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+msgstr "Server Fehler <em>(500)</em>"
+
+#: 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/auth/password_reset/complete.html:11
+#: templates/xadmin/auth/password_reset/done.html:11
+msgid "Password reset successful"
+msgstr "Passwort erfolgreich zurückgesetzt"
+
+#: templates/xadmin/auth/password_reset/complete.html:14
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Ihr Passwort wurde gesetzt. Sie können fortfahren und sich einloggen."
+
+#: templates/xadmin/auth/password_reset/complete.html:15
+msgid "Log in"
+msgstr "Einloggen"
+
+#: templates/xadmin/auth/password_reset/confirm.html: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."
+
+#: templates/xadmin/auth/password_reset/confirm.html:19
+msgid "Change my password"
+msgstr "Passwort ändern"
+
+#: templates/xadmin/auth/password_reset/confirm.html:24
+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."
+
+#: 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."
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Bitte gehen Sie auf folgende Seite und erstellen ein neues Passwort."
+
+#: templates/xadmin/auth/password_reset/email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "Ihr Benutzername, falls Sie ihn vergessen sollten:"
+
+#: templates/xadmin/auth/password_reset/email.html:10
+msgid "Thanks for using our site!"
+msgstr "Danke, dass Sie uns besucht haben!"
+
+#: templates/xadmin/auth/password_reset/email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "Das %(site_name)s Team"
+
+#: templates/xadmin/auth/password_reset/form.html: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."
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr "E-Mail Adresse:"
+
+#: templates/xadmin/auth/password_reset/form.html:33
+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."
+
+#: templates/xadmin/auth/user/add_form.html:8
+msgid "Enter a username and password."
+msgstr "Bitte geben Sie Benutzernamen und Passwort ein."
+
+#: 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] "Bitte korrigieren Sie den folgenden Fehler."
+msgstr[1] "Bitte korrigieren Sie die folgenden Fehler."
+
+#: templates/xadmin/auth/user/change_password.html:38
+msgid "Enter your new password."
+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 <strong>%(username)s</strong>."
+msgstr ""
+"Vergeben Sie ein neues Passwort für den Benutzer <strong>%(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: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 "Suchen"
+
+#: templates/xadmin/blocks/comm.top.topnav.html:23
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "Zurück"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "Nächstes"
+
+#: 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 "Speichern"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "Bereinige Lesezeichen"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "Keine Lesezeichen"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "Neues Lesezeichen"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "Lesezeichen hinzufügen"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "Lesezeichenname"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "Warte"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "Speichere Lesezeichen"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "Filter"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+msgstr "Bereinige Filter"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
+msgid "Click here to select the objects across all pages"
+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 %(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"
+msgstr "Auswahl abwählen"
+
+#: templates/xadmin/blocks/model_list.results_top.charts.html:4
+msgid "Charts"
+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: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: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:42
+msgid "Export all data."
+msgstr "Komplette Daten exportieren."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+msgid "Close"
+msgstr "Schließen"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.layouts.html:4
+msgid "Layout"
+msgstr "Layout"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:8
+msgid "Clean Refresh"
+msgstr "Säubern"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
+#, python-format
+msgid "Every %(t)s seconds"
+msgstr "Alle %(t)s Sekunden"
+
+#: 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"
+
+#: templates/xadmin/filters/char.html:13
+msgid "Enter"
+msgstr "Eingabe"
+
+#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
+msgid "Choice Date"
+msgstr "Auswahldatum"
+
+#: templates/xadmin/filters/date.html:18
+msgid "YY"
+msgstr "YY"
+
+#: templates/xadmin/filters/date.html:19
+msgid "year"
+msgstr "Jahr"
+
+#: templates/xadmin/filters/date.html:22
+msgid "MM"
+msgstr "MM"
+
+#: templates/xadmin/filters/date.html:23
+msgid "month"
+msgstr "Monat"
+
+#: templates/xadmin/filters/date.html:26
+msgid "DD"
+msgstr "DD"
+
+#: templates/xadmin/filters/date.html:27
+msgid "day"
+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:24
+#: templates/xadmin/filters/number.html:37
+msgid "Apply"
+msgstr "Anwenden"
+
+#: templates/xadmin/filters/date.html:34
+msgid "Date Range"
+msgstr "Datumsintervall"
+
+#: templates/xadmin/filters/date.html:41
+msgid "Select Date"
+msgstr "Datum wählen"
+
+#: templates/xadmin/filters/date.html:42
+msgid "From"
+msgstr "Von"
+
+#: templates/xadmin/filters/date.html:44
+msgid "To"
+msgstr "Bis"
+
+#: 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"
+
+#: templates/xadmin/filters/number.html:17
+#: templates/xadmin/filters/number.html:25
+#: templates/xadmin/filters/number.html:33
+msgid "Enter Number"
+msgstr "Zahl eingeben"
+
+#: templates/xadmin/filters/rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "Mittels %(filter_title)s"
+
+#: templates/xadmin/forms/transfer.html:4
+msgid "Available"
+msgstr "Verfügbar"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Click to choose all at once."
+msgstr "Klicken um alles auf einmal auszuwählen."
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Choose all"
+msgstr "Alles auswählen"
+
+#: templates/xadmin/forms/transfer.html:16
+msgid "Choose"
+msgstr "Wähle"
+
+#: templates/xadmin/forms/transfer.html:19
+#: templates/xadmin/widgets/base.html:40
+msgid "Remove"
+msgstr "Entferne"
+
+#: templates/xadmin/forms/transfer.html:23
+msgid "Chosen"
+msgstr "Gewählt"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "Klicken um alles Ausgewählte sofort zu löschen."
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Remove all"
+msgstr "Alles entfernen"
+
+#: templates/xadmin/includes/pagination.html:9
+msgid "Show all"
+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:31
+msgid "Saving.."
+msgstr "Speichern..."
+
+#: templates/xadmin/includes/submit_line.html:17
+msgid "Save as new"
+msgstr "Als neu abspeichern"
+
+#: templates/xadmin/includes/submit_line.html:18
+msgid "Save and add another"
+msgstr "Speichern und neu hinzufügen"
+
+#: templates/xadmin/includes/submit_line.html:19
+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:93
+msgid "Delete"
+msgstr "Löschen"
+
+#: 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 "Mehrere Objekte ändern"
+
+#: 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] "Anpassung von %(objects_name)s"
+msgstr[1] "Anpassung aller %(counter)s %(objects_name)s"
+
+#: templates/xadmin/views/batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "Mehrere andern"
+
+#: templates/xadmin/views/dashboard.html:15
+#: templates/xadmin/views/dashboard.html:22
+#: templates/xadmin/views/dashboard.html:23
+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."
+msgstr ""
+
+#: templates/xadmin/views/logged_out.html:16
+msgid "Logout Success"
+msgstr "Logout erfolgreich"
+
+#: templates/xadmin/views/logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Danke, dass Sie ein paar nette Minuten hier verbracht haben."
+
+#: templates/xadmin/views/logged_out.html:19
+msgid "Close Window"
+msgstr "Fenster schließen"
+
+#: templates/xadmin/views/logged_out.html:20
+msgid "Log in again"
+msgstr "Wieder einloggen"
+
+#: templates/xadmin/views/login.html:39 views/website.py:38
+msgid "Please Login"
+msgstr "Bitte loggen Sie sich ein"
+
+#: templates/xadmin/views/login.html:52
+msgid "Username"
+msgstr "Benutzername"
+
+#: templates/xadmin/views/login.html:64
+msgid "Password"
+msgstr "Passwort"
+
+#: templates/xadmin/views/login.html:75
+msgid "log in"
+msgstr "einloggen"
+
+#: templates/xadmin/views/model_dashboard.html:26
+#: templates/xadmin/views/model_detail.html:25
+msgid "Edit"
+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:"
+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:"
+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:"
+msgstr ""
+
+#: templates/xadmin/views/model_delete_confirm.html:34
+#: templates/xadmin/views/model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "Ja, na klar!"
+
+#: templates/xadmin/views/model_delete_confirm.html:35
+#: templates/xadmin/views/model_delete_selected_confirm.html:50
+msgid "Cancel"
+msgstr "Abbruch"
+
+#: templates/xadmin/views/model_delete_selected_confirm.html:10
+msgid "Delete multiple objects"
+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:"
+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:"
+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:"
+msgstr ""
+
+#: templates/xadmin/views/model_history.html:26
+msgid "Diff"
+msgstr "Delta"
+
+#: templates/xadmin/views/model_history.html:27
+#: templates/xadmin/views/recover_list.html:25
+msgid "Date/time"
+msgstr "Datum/Uhrzeit"
+
+#: templates/xadmin/views/model_history.html:28
+msgid "User"
+msgstr "Benutzer"
+
+#: templates/xadmin/views/model_history.html:29
+msgid "Comment"
+msgstr "Kommentar"
+
+#: 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 hinzufügen"
+
+#: templates/xadmin/views/model_list.html:39
+#, fuzzy
+msgid "Columns"
+msgstr "Spalten"
+
+#: templates/xadmin/views/model_list.html:42
+msgid "Restore Selected"
+msgstr "Gewähltes wiederherstellen"
+
+#: templates/xadmin/views/model_list.html:147
+#: templates/xadmin/widgets/list.html:33
+msgid "Empty list"
+msgstr "Leere Liste"
+
+#: 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 "Es gibt keine gelöschten Objekte wiederherzustellen."
+
+#: templates/xadmin/views/revision_diff.html:12
+#: templates/xadmin/views/revision_diff.html:17
+#, python-format
+msgid "Diff %(verbose_name)s"
+msgstr "Delta zwischen %(verbose_name)s"
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr "Feld"
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr "Version A"
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr "Version 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 ""
+
+#: 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 "Diese Überarbeitung umkehren."
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Success"
+msgstr "Erfolg"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Add success, click <a id='change-link'>edit</a> to edit."
+msgstr ""
+
+#: templates/xadmin/widgets/addform.html:17
+msgid "Quick Add"
+msgstr "Schnelles Hinzufügen"
+
+#: templates/xadmin/widgets/base.html:31
+msgid "Widget Options"
+msgstr "Widget Optionen"
+
+#: templates/xadmin/widgets/base.html:42
+msgid "Save changes"
+msgstr "Änderungen speichern"
+
+#: views/base.py:315
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr "Widget ID"
+
+#: views/dashboard.py:187
+msgid "Widget Title"
+msgstr "Widget Titel"
+
+#: views/dashboard.py:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr "Html Inhalt"
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr "Zielmodell"
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+"Schnellauswahlbutton Widget, zum schnellen Öffnen einer beliebigen Seite."
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr "Schnellauswahl Buttons"
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr "Beliebige Objektliste Widget."
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr "Fügen Sie ein beliebiges Modell Objekt Widget hinzu."
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr "Armaturentafel"
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr "%s Armaturentafel"
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr "Andere Felder"
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "%s Einzelheiten"
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr "Sie können es trotzdem nochmals bearbeiten."
+
+#: 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:471
+#, python-format
+msgid "Change %s"
+msgstr "Ändern %s"
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, fuzzy, python-format
+msgid "The %s was changed successfully."
+msgstr "Passwort erfolgreich geändert."
+
+#: views/list.py:199
+msgid "Database error"
+msgstr "Datenbankfehler"
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr "%s Liste"
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr "Aufsteigend sortieren"
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr "Absteigend sortieren"
+
+#: 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"

二进制
extra_apps/xadmin/locale/de_DE/LC_MESSAGES/djangojs.mo


+ 72 - 0
extra_apps/xadmin/locale/de_DE/LC_MESSAGES/djangojs.po

@@ -0,0 +1,72 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# Azd325 <tim.kleinschmidt@gmail.com>, 2013
+# Azd325 <tim.kleinschmidt@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: Azd325 <tim.kleinschmidt@gmail.com>\n"
+"Language-Team: German (Germany) (http://www.transifex.com/projects/p/xadmin/language/de_DE/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de_DE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s von %(cnt)s markiert"
+msgstr[1] "%(sel)s von %(cnt)s markiert"
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr "Neues Element"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "So Mo Di Mi Do Fr Sa So"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+msgid "Su Mo Tu We Th Fr Sa Su"
+msgstr "So Mo Di Mi Do Fr Sa So"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:35
+msgid ""
+"January February March April May June July August September October November"
+" December"
+msgstr "Januar Februar März April Mai Juni Juli August September Oktober November Dezember"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "Heute"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr "%a %d %b %Y %T %Z"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "vorm nachm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "vorm nachm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

二进制
extra_apps/xadmin/locale/en/LC_MESSAGES/django.mo


+ 1411 - 0
extra_apps/xadmin/locale/en/LC_MESSAGES/django.po

@@ -0,0 +1,1411 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \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 <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=1;\n"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr ""
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr ""
+
+#: filters.py:175
+msgid "Unknown"
+msgstr ""
+
+#: filters.py:267
+msgid "Any date"
+msgstr ""
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr ""
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr ""
+
+#: filters.py:282
+msgid "This month"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr ""
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr ""
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr ""
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr ""
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr ""
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr ""
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr ""
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+#: 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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr ""
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+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"
+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
+#, python-format
+msgid "Can add %s"
+msgstr ""
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr ""
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr ""
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: 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
+msgid "Permission Name"
+msgstr ""
+
+#: plugins/auth.py:167
+#, fuzzy
+msgid "Change Password"
+msgstr "Changed Password"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr ""
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:73
+msgid "Remove selected comments"
+msgstr ""
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr ""
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr ""
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr ""
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr ""
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr ""
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr ""
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr ""
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""

二进制
extra_apps/xadmin/locale/en/LC_MESSAGES/djangojs.mo


+ 69 - 0
extra_apps/xadmin/locale/en/LC_MESSAGES/djangojs.po

@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/es_MX/LC_MESSAGES/django.mo


+ 1556 - 0
extra_apps/xadmin/locale/es_MX/LC_MESSAGES/django.po

@@ -0,0 +1,1556 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# byroncorrales <byroncorrales@gmail.com>, 2013
+# charlieweb <eduesp82@gmail.com>, 2013
+# sacrac <crocha09.09@gmail.com>, 2013
+# netoxico <me@netoxico.com>, 2013
+# abelthf <abel.huanca@upeu.pe>, 2013
+# laoska <lbgm2011@gmail.com>, 2013
+# VerurteiltKind <mini.guero@hotmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-05-12 18:45+0000\n"
+"Last-Translator: sacrac <crocha09.09@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Sí"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "No"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Cualquier fecha"
+
+#: filters.py:268
+#, fuzzy
+msgid "Has date"
+msgstr "Cualquier fecha"
+
+#: filters.py:271
+#, fuzzy
+msgid "Has no date"
+msgstr "Cualquier fecha"
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Hoy"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "Pasados ​​7 días"
+
+#: filters.py:282
+msgid "This month"
+msgstr "Este mes"
+
+#: 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."
+
+#: forms.py:21
+msgid "Please log in again, because your session has expired."
+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."
+
+#: models.py:48
+msgid "Title"
+msgstr "Titulo"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr "Nombre de Url"
+
+#: models.py:52
+msgid "Query String"
+msgstr "Cadena de consulta"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr "Es compartido"
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Marcador"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Marcadores"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr "Configuración llave"
+
+#: models.py:90
+msgid "Settings Content"
+msgstr "Configuración de contenidos"
+
+#: models.py:102
+msgid "User Setting"
+msgstr "Configuración del usuario"
+
+#: models.py:103
+msgid "User Settings"
+msgstr "Configuraciones de los usuarios"
+
+#: models.py:108
+msgid "Page"
+msgstr "Página"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Tipo de Widget"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Parametros del Widget"
+
+#: models.py:137
+msgid "User Widget"
+msgstr "Widget del Usuario"
+
+#: models.py:138
+msgid "User Widgets"
+msgstr "Widgets del Usuario"
+
+#: 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"
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "No se puede eliminar %(name)s"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Esta seguro?"
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 de %(cnt)s seleccionado"
+
+#: 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"
+msgstr "Minimo"
+
+#: plugins/aggregation.py:14
+msgid "Max"
+msgstr "Maximo"
+
+#: plugins/aggregation.py:14
+msgid "Avg"
+msgstr "Promedio"
+
+#: plugins/aggregation.py:14
+msgid "Sum"
+msgstr "Suma"
+
+#: plugins/aggregation.py:14
+msgid "Count"
+msgstr "Conteo"
+
+#: plugins/auth.py:21
+#, fuzzy, python-format
+msgid "Can add %s"
+msgstr "Añadir %s"
+
+#: plugins/auth.py:22
+#, fuzzy, python-format
+msgid "Can change %s"
+msgstr "Cambiar %s"
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, fuzzy, python-format
+msgid "Can delete %s"
+msgstr "No se puede eliminar %(name)s"
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: plugins/auth.py:87
+msgid "Personal info"
+msgstr "Información personal"
+
+#: plugins/auth.py:91
+msgid "Permissions"
+msgstr "Permisos"
+
+#: plugins/auth.py:94
+msgid "Important dates"
+msgstr "Fechas importantes"
+
+#: plugins/auth.py:99
+msgid "Status"
+msgstr "Estados"
+
+#: plugins/auth.py:111
+#, fuzzy
+msgid "Permission Name"
+msgstr "Permisos"
+
+#: plugins/auth.py:167
+#, fuzzy
+msgid "Change Password"
+msgstr "Cambiar Contraseña"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Cambiar contraseña: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Contraseña cambiada correctamente"
+
+#: 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"
+msgstr "Cambiar contraseña"
+
+#: plugins/batch.py:44
+#, fuzzy
+msgid "Change this field"
+msgstr "Historial de cambios: %s"
+
+#: plugins/batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "Cambio de grupo seleccionado %(verbose_name_plural)s"
+
+#: plugins/batch.py:89
+#, fuzzy, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr "Correctamente eliminado %(count)d %(items)s."
+
+#: plugins/batch.py:138
+#, fuzzy, python-format
+msgid "Batch change %s"
+msgstr "Cambiar %s"
+
+#: plugins/bookmark.py:173
+#, fuzzy
+msgid "bookmark"
+msgstr "Marcador"
+
+#: 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."
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr "Mostrar simple grafos para los modelos"
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr "%s Graficos"
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+#, fuzzy
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "Eliminar"
+msgstr[1] "Eliminar"
+
+#: plugins/comments.py:73
+#, fuzzy
+msgid "Remove selected comments"
+msgstr "Recuperar borrado %(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] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr "Detalles de %s"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "Entre %s"
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Hoja"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: plugins/images.py:29
+msgid "Previous"
+msgstr "Previo"
+
+#: plugins/images.py:29
+msgid "Next"
+msgstr "Próximo "
+
+#: plugins/images.py:29
+msgid "Slideshow"
+msgstr "presentación"
+
+#: plugins/images.py:29
+msgid "Download"
+msgstr "Descargar"
+
+#: plugins/images.py:50
+msgid "Change:"
+msgstr "Cambiar:"
+
+#: plugins/layout.py:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr "¿Olvidó su contraseña o nombre de usuario?"
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Objetos relacionados"
+
+#: 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"
+msgstr "Tema por defecto"
+
+#: plugins/themes.py:48
+#, fuzzy
+msgid "Default bootstrap theme"
+msgstr "Tema bootstrap por defecto"
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+#, fuzzy
+msgid "Bootstrap 2.x theme"
+msgstr "Tema bootstrap por defecto"
+
+#: 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:106
+msgid "Initial version."
+msgstr "Versión inicial."
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr "Cambiar la versión."
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr "Revertir la versión."
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr "Recuperar versión"
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "Borrado %(verbose_name)s."
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr "Recuperar"
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr "Historial de cambios: %s"
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "Debe seleccionar dos versiones."
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Por favor seleccione dos versiones diferente."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr "Actual: %s"
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr "Revertir %s"
+
+#: 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."
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr "Recuperar %s"
+
+#: 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."
+
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
+msgid "Page not found"
+msgstr "Pagina no encontrada"
+
+#: templates/xadmin/404.html:10
+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/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
+#: 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:473
+msgid "Home"
+msgstr "Inicio"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr "Error en el servidor"
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr "Error en el servidor (500)"
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+msgstr "Error en el servidor <em>(500)</em>"
+
+#: 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/auth/password_reset/complete.html:11
+#: templates/xadmin/auth/password_reset/done.html:11
+msgid "Password reset successful"
+msgstr "Restablecimiento de contraseña con éxito"
+
+#: templates/xadmin/auth/password_reset/complete.html:14
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Se ha establecido su contraseña. Usted puede acceder ahora mismo."
+
+#: templates/xadmin/auth/password_reset/complete.html:15
+msgid "Log in"
+msgstr "Entrar"
+
+#: templates/xadmin/auth/password_reset/confirm.html: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."
+
+#: templates/xadmin/auth/password_reset/confirm.html:19
+msgid "Change my password"
+msgstr "Cambiar mi contraseña"
+
+#: templates/xadmin/auth/password_reset/confirm.html:24
+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."
+
+#: 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."
+
+#: 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."
+
+#: templates/xadmin/auth/password_reset/email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Por favor ir a la siguiente pagina y selecciona una nueva contraseña"
+
+#: templates/xadmin/auth/password_reset/email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "Tu usuario, en caso de que lo hayas olvidado"
+
+#: templates/xadmin/auth/password_reset/email.html:10
+msgid "Thanks for using our site!"
+msgstr "Gracias por usar nuestro sitio web!"
+
+#: templates/xadmin/auth/password_reset/email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "El equipo de %(site_name)s"
+
+#: templates/xadmin/auth/password_reset/form.html:13
+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."
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr "Dirección de correo:"
+
+#: templates/xadmin/auth/password_reset/form.html:33
+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."
+
+#: templates/xadmin/auth/user/add_form.html:8
+msgid "Enter a username and password."
+msgstr "Ingresa nombre de usuario y contraseña"
+
+#: 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] "Por favor corrija el error abajo."
+msgstr[1] "Por favor corrija los  errores abajo."
+
+#: templates/xadmin/auth/user/change_password.html:38
+msgid "Enter your new password."
+msgstr "Ingresa una nueva contraseña"
+
+#: templates/xadmin/auth/user/change_password.html:40
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+"Introduzca una nueva contraseña para el usuario <strong>%(username)s</strong>"
+
+#: 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: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 "Buscar"
+
+#: templates/xadmin/blocks/comm.top.topnav.html:23
+msgid "Add"
+msgstr "Agregar"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "Paso previo"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "Próximo paso"
+
+#: 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 "Guardar"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "Limpiar marcadores"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "No hay marcadores"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "Nuevo marcador"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "Guardar actual pagino como Marcador"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "Ingrese titulo de marcador"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "Espera un momento"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "Guardar marcador"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "Filtros"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+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"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
+#, python-format
+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"
+msgstr "Limpiar seleccion"
+
+#: templates/xadmin/blocks/model_list.results_top.charts.html:4
+msgid "Charts"
+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: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: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:42
+msgid "Export all data."
+msgstr "Exportar todos los datos."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+msgid "Close"
+msgstr "Cerrar"
+
+#: 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 "Limpiar Refrescar"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
+#, fuzzy, python-format
+msgid "Every %(t)s seconds"
+msgstr "Por %(t)s segundos"
+
+#: 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"
+
+#: templates/xadmin/filters/char.html:13
+msgid "Enter"
+msgstr "Introducir"
+
+#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
+msgid "Choice Date"
+msgstr "Elija Fecha"
+
+#: templates/xadmin/filters/date.html:18
+msgid "YY"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:19
+msgid "year"
+msgstr "año"
+
+#: templates/xadmin/filters/date.html:22
+msgid "MM"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:23
+msgid "month"
+msgstr "Mes"
+
+#: templates/xadmin/filters/date.html:26
+msgid "DD"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:27
+msgid "day"
+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:24
+#: templates/xadmin/filters/number.html:37
+msgid "Apply"
+msgstr "Aplicar"
+
+#: templates/xadmin/filters/date.html:34
+msgid "Date Range"
+msgstr "Rangos de fechas"
+
+#: templates/xadmin/filters/date.html:41
+msgid "Select Date"
+msgstr "Seleccionar Fecha"
+
+#: templates/xadmin/filters/date.html:42
+msgid "From"
+msgstr "De"
+
+#: templates/xadmin/filters/date.html:44
+msgid "To"
+msgstr "Para"
+
+#: 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"
+
+#: templates/xadmin/filters/number.html:17
+#: templates/xadmin/filters/number.html:25
+#: templates/xadmin/filters/number.html:33
+msgid "Enter Number"
+msgstr "Ingrese el numero"
+
+#: templates/xadmin/filters/rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "Por %(filter_title)s"
+
+#: templates/xadmin/forms/transfer.html:4
+msgid "Available"
+msgstr "Disponible"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Click to choose all at once."
+msgstr "Click para elegir todos"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Choose all"
+msgstr "Seleccionar todos"
+
+#: templates/xadmin/forms/transfer.html:16
+msgid "Choose"
+msgstr "Elegir"
+
+#: templates/xadmin/forms/transfer.html:19
+#: templates/xadmin/widgets/base.html:40
+msgid "Remove"
+msgstr "Eliminar"
+
+#: templates/xadmin/forms/transfer.html:23
+msgid "Chosen"
+msgstr "Preferido"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "Click para remover todos los preferidos"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Remove all"
+msgstr "Remover todos"
+
+#: templates/xadmin/includes/pagination.html:9
+msgid "Show all"
+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:31
+msgid "Saving.."
+msgstr ""
+
+#: templates/xadmin/includes/submit_line.html:17
+msgid "Save as new"
+msgstr "Guardar como nuevo"
+
+#: templates/xadmin/includes/submit_line.html:18
+msgid "Save and add another"
+msgstr "Guardar y añadir otro"
+
+#: templates/xadmin/includes/submit_line.html:19
+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:93
+msgid "Delete"
+msgstr "Borrar"
+
+#: 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 "Cambiar multiples objetos"
+
+#: templates/xadmin/views/batch_change_form.html:16
+#, fuzzy, python-format
+msgid "Change one %(objects_name)s"
+msgid_plural "Batch change %(counter)s %(objects_name)s"
+msgstr[0] "Cambiar multiples objetos"
+msgstr[1] "Cambiar multiples objetos"
+
+#: templates/xadmin/views/batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "Cambios multiples"
+
+#: templates/xadmin/views/dashboard.html:15
+#: templates/xadmin/views/dashboard.html:22
+#: templates/xadmin/views/dashboard.html:23
+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"
+
+#: templates/xadmin/views/logged_out.html:16
+msgid "Logout Success"
+msgstr "Salio con éxito "
+
+#: templates/xadmin/views/logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Gracias por pasar tiempo de calidad con el sitio web hoy."
+
+#: templates/xadmin/views/logged_out.html:19
+msgid "Close Window"
+msgstr "Cerrar ventana"
+
+#: templates/xadmin/views/logged_out.html:20
+msgid "Log in again"
+msgstr "Entrar nuevamente"
+
+#: templates/xadmin/views/login.html:39 views/website.py:38
+msgid "Please Login"
+msgstr "Por favor, inicia sesión"
+
+#: templates/xadmin/views/login.html:52
+#, fuzzy
+msgid "Username"
+msgstr "Usuario:"
+
+#: templates/xadmin/views/login.html:64
+#, fuzzy
+msgid "Password"
+msgstr "Contraseña:"
+
+#: templates/xadmin/views/login.html:75
+msgid "log in"
+msgstr "Iniciar sesión"
+
+#: templates/xadmin/views/model_dashboard.html:26
+#: templates/xadmin/views/model_detail.html:25
+msgid "Edit"
+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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_delete_confirm.html:34
+#: templates/xadmin/views/model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "Si, estoy seguro"
+
+#: templates/xadmin/views/model_delete_confirm.html:35
+#: templates/xadmin/views/model_delete_selected_confirm.html:50
+#, fuzzy
+msgid "Cancel"
+msgstr "Cancelar ordenación"
+
+#: templates/xadmin/views/model_delete_selected_confirm.html:10
+msgid "Delete multiple objects"
+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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_history.html:26
+msgid "Diff"
+msgstr "Differencia"
+
+#: templates/xadmin/views/model_history.html:27
+#: templates/xadmin/views/recover_list.html:25
+msgid "Date/time"
+msgstr "Fecha/hora"
+
+#: templates/xadmin/views/model_history.html:28
+msgid "User"
+msgstr "Usuario"
+
+#: templates/xadmin/views/model_history.html:29
+msgid "Comment"
+msgstr "Comentario"
+
+#: templates/xadmin/views/model_history.html:54
+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.|"
+
+#: templates/xadmin/views/model_list.html:29
+#, python-format
+msgid "Add %(name)s"
+msgstr "Agregar %(name)s"
+
+#: templates/xadmin/views/model_list.html:39
+#, fuzzy
+msgid "Columns"
+msgstr "Seleccionar columns."
+
+#: templates/xadmin/views/model_list.html:42
+msgid "Restore Selected"
+msgstr "Restaurar seleccionados."
+
+#: templates/xadmin/views/model_list.html:147
+#: templates/xadmin/widgets/list.html:33
+msgid "Empty list"
+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."
+
+#: 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."
+
+#: templates/xadmin/views/recover_list.html:39
+msgid "There are no deleted objects to recover."
+msgstr "No hay objetos eliminados para recuperar."
+
+#: templates/xadmin/views/revision_diff.html:12
+#: templates/xadmin/views/revision_diff.html:17
+#, python-format
+msgid "Diff %(verbose_name)s"
+msgstr "Diferentes %(verbose_name)s"
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr "Campo"
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr "Versión A"
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr "Versión B"
+
+#: templates/xadmin/views/revision_diff.html:39
+msgid "Revert to"
+msgstr "Revertir a"
+
+#: templates/xadmin/views/revision_diff.html:40
+#: templates/xadmin/views/revision_diff.html:41
+msgid "Revert"
+msgstr "Revertir"
+
+#: templates/xadmin/views/revision_form.html:16
+#, python-format
+msgid "Revert %(verbose_name)s"
+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."
+
+#: templates/xadmin/views/revision_form.html:27
+msgid "Revert this revision"
+msgstr "Revertir esta revisión"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Success"
+msgstr "Éxito"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Add success, click <a id='change-link'>edit</a> to edit."
+msgstr ""
+"Agregado exitosa mente, presiona  <a id='change-link'>edit</a> para editar."
+
+#: templates/xadmin/widgets/addform.html:17
+msgid "Quick Add"
+msgstr "Agregar rápidamente."
+
+#: templates/xadmin/widgets/base.html:31
+msgid "Widget Options"
+msgstr "Opciones del Widget"
+
+#: templates/xadmin/widgets/base.html:42
+msgid "Save changes"
+msgstr "Guardar cambios"
+
+#: views/base.py:315
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr "ID del Widget"
+
+#: views/dashboard.py:187
+msgid "Widget Title"
+msgstr "Titulo del Widget"
+
+#: 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."
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr "Contenido HTML"
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr "Modelo objeto"
+
+#: 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:371
+msgid "Quick Buttons"
+msgstr "Botones rapidos"
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr "Cualquier objeto listado en el widget"
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr "Añadir cualquier modelo de objeto al Widget."
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr "Panel de control"
+
+#: views/dashboard.py:633
+#, fuzzy, python-format
+msgid "%s Dashboard"
+msgstr "Panel de control"
+
+#: 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:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr "Otros campos"
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "%s Detalles"
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr "Puedes editarlo de nuevo abajo."
+
+#: 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:471
+#, python-format
+msgid "Change %s"
+msgstr "Cambiar %s"
+
+#: 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:165
+#, fuzzy, python-format
+msgid "The %s was changed successfully."
+msgstr "El %(name)s \"%(obj)s\" fue editado exitosa mente."
+
+#: views/list.py:199
+msgid "Database error"
+msgstr "Error de base de datos"
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr "%s Lista"
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr "Ordenar ascendente mente."
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr "Ordenar descendente mente"
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr "Cancelar ordenación"
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr "Dashboard principal."
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Ahora"
+
+#~ msgid "Add Other %s"
+#~ msgstr "Añadir otro %s"
+
+#~ msgid "Recover deleted"
+#~ msgstr "Recuperar borrado"
+
+#~ msgid "Documentation"
+#~ msgstr "Documentación"
+
+#~ msgid "Password change"
+#~ msgstr "Cambiar contraseña"
+
+#~ msgid "Password change successful"
+#~ msgstr "Contraseña cambio con exito "
+
+#~ 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 "Old password"
+#~ msgstr "Vieja contraseña"
+
+#~ msgid "New password"
+#~ msgstr "Nueva contraseña"
+
+#~ msgid "Password (again)"
+#~ msgstr "Contraseña (nuevamente)"
+
+#~ msgid "Password reset complete"
+#~ msgstr "restablecimiento de contraseña completo"
+
+#~ msgid "Password reset confirmation"
+#~ msgstr "Confirmación de restablecimiento de contraseña"
+
+#~ msgid "New password:"
+#~ msgstr "Nueva contraseña:"
+
+#~ msgid "Confirm password:"
+#~ msgstr "Confirmar contraseña:"
+
+#~ msgid "Search By"
+#~ msgstr "Buscar por"
+
+#~ msgid "None"
+#~ msgstr "Ninguno"
+
+#~ msgid "Cacnel"
+#~ msgstr "Cancelar"

二进制
extra_apps/xadmin/locale/es_MX/LC_MESSAGES/djangojs.mo


+ 76 - 0
extra_apps/xadmin/locale/es_MX/LC_MESSAGES/djangojs.po

@@ -0,0 +1,76 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# byroncorrales <byroncorrales@gmail.com>, 2013
+# byroncorrales <byroncorrales@gmail.com>, 2013
+# sacrac <crocha09.09@gmail.com>, 2013
+# netoxico <me@netoxico.com>, 2013
+# netoxico <me@netoxico.com>, 2013
+# sacrac <crocha09.09@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sacrac <crocha09.09@gmail.com>\n"
+"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/xadmin/language/es_MX/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es_MX\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s de %(cnt)s seleccionado."
+msgstr[1] "%(sel)s de %(cnt)s seleccionado "
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr "Nuevo elemento"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "Domingo Lunes Martes Miércoles Jueves Viernes Sábado Domingo"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "Dom Lun Mar Mié Jue Vie Sáb Dom"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+msgid "Su Mo Tu We Th Fr Sa Su"
+msgstr "Do Lu Ma Mi Ju Vi Sá Do"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:35
+msgid ""
+"January February March April May June July August September October November"
+" December"
+msgstr "Enero Febrero Marzo Abril Mayo Junio ​​Julio Agosto Septiembre Octubre Noviembre Diciembre"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "Ene Feb Mar Abr May Jun Jul Ago Sep Oct Nov Dic"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "Hoy"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr "%a %d %b %Y %T %Z"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "AM PM"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "am pm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

二进制
extra_apps/xadmin/locale/eu/LC_MESSAGES/django.mo


+ 1475 - 0
extra_apps/xadmin/locale/eu/LC_MESSAGES/django.po

@@ -0,0 +1,1475 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# unaizalakain <unai@gisa-elkartea.org>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Bai"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "Ez"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Ezezaguna"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Edozein data"
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Gaur"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "Duela 7 egun"
+
+#: filters.py:282
+msgid "This month"
+msgstr "Hilabete hau"
+
+#: 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."
+
+#: forms.py:21
+msgid "Please log in again, because your session has expired."
+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'."
+
+#: models.py:48
+msgid "Title"
+msgstr "Izenburua"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr "Url Izena"
+
+#: models.py:52
+msgid "Query String"
+msgstr "Kontsulta Katea"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr "Partekatua da."
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Laster-marketara gehitu"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Laster-markak"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr "Ezarpenen Gakoa"
+
+#: models.py:90
+msgid "Settings Content"
+msgstr "Ezarpenen Edukia"
+
+#: models.py:102
+msgid "User Setting"
+msgstr "Erabiltzaile Ezarpenak"
+
+#: models.py:103
+msgid "User Settings"
+msgstr "Erabiltzaile Ezarpenak"
+
+#: models.py:108
+msgid "Page"
+msgstr "Orrialdea"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Widget Mota"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Widget Parametroak"
+
+#: models.py:137
+msgid "User Widget"
+msgstr "Erabiltzaile Widgeta"
+
+#: models.py:138
+msgid "User Widgets"
+msgstr "Erabiltzaile Widgetak"
+
+#: models.py:142
+#, fuzzy
+#| msgid "Date/time"
+msgid "action time"
+msgstr "Data/ordua"
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Ezin izan da %(name)s ezabatu"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Ziur al zaude?"
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "%(cnt)stik 0 aukeratuak"
+
+#: 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"
+msgstr "Min"
+
+#: plugins/aggregation.py:14
+msgid "Max"
+msgstr "Max"
+
+#: plugins/aggregation.py:14
+msgid "Avg"
+msgstr "Btz-bst"
+
+#: plugins/aggregation.py:14
+msgid "Sum"
+msgstr "Batura"
+
+#: plugins/aggregation.py:14
+msgid "Count"
+msgstr "Kontaketa"
+
+#: plugins/auth.py:21
+#, fuzzy, python-format
+msgid "Can add %s"
+msgstr "%s gehitu"
+
+#: plugins/auth.py:22
+#, fuzzy, python-format
+msgid "Can change %s"
+msgstr "Aldaketa %s"
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, fuzzy, python-format
+msgid "Can delete %s"
+msgstr "Ezin izan da %(name)s ezabatu"
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: plugins/auth.py:87
+msgid "Personal info"
+msgstr "Info pertsonala"
+
+#: plugins/auth.py:91
+msgid "Permissions"
+msgstr "Baimenak"
+
+#: plugins/auth.py:94
+msgid "Important dates"
+msgstr "Data garrantzitsuak"
+
+#: plugins/auth.py:99
+msgid "Status"
+msgstr "Egoera"
+
+#: plugins/auth.py:111
+#, fuzzy
+msgid "Permission Name"
+msgstr "Baimenak"
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr "Pasahitza Aldatu"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Pasahitza aldatu: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Pasahitza arrakastaz aldatua."
+
+#: 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"
+msgstr "Pasahitza aldatu"
+
+#: plugins/batch.py:44
+msgid "Change this field"
+msgstr ""
+
+#: plugins/batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "Sorta moduko Aldaketa aukeratua %(verbose_name_plural)s"
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: 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."
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr "Erabili modeluen diagrama sinplea."
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr "%s Diagrama"
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+#, fuzzy
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "Ezabatu"
+msgstr[1] "Ezabatu"
+
+#: plugins/comments.py:73
+#, fuzzy
+msgid "Remove selected comments"
+msgstr "Ezabatutako %(name)sa berreskuratu"
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr "%sren xehetasunak"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "Sartu %s"
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Xafla"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: plugins/images.py:29
+msgid "Previous"
+msgstr "Aurrekoa"
+
+#: plugins/images.py:29
+msgid "Next"
+msgstr "Hurrengoa"
+
+#: plugins/images.py:29
+msgid "Slideshow"
+msgstr "Aurkezpena"
+
+#: plugins/images.py:29
+msgid "Download"
+msgstr "Deskargatu"
+
+#: plugins/images.py:50
+msgid "Change:"
+msgstr "Aldatu:"
+
+#: plugins/layout.py:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr "Zure pasahitza edo erabiltzailea ahaztu duzu?"
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Erlazionatutako Objetuak"
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr "Hasierako bertsioa."
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr "Bertsioa aldatu."
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr "Aurreko bertsiora itzuli."
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr "Bertsioa berreskuratu."
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "%(verbose_name)s ezabatua."
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr "Berreskuratu"
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr "Historiala aldatu: %s"
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "Bi bertsio aukeratu behar dira."
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Mesedez aukeratu bi bertsio ezberdin."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr "Unekoa: %s"
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr "%s aurreko bertsiora itzuli"
+
+#: 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."
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr "%s berreskuratu"
+
+#: 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."
+
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
+msgid "Page not found"
+msgstr "Orria ez da aurkitu"
+
+#: templates/xadmin/404.html:10
+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/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
+#: 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:473
+msgid "Home"
+msgstr "Hasiera"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr "Zerbitzariaren errorea"
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr "Zerbitzariaren errorea (500)"
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/auth/password_reset/complete.html:11
+#: templates/xadmin/auth/password_reset/done.html:11
+msgid "Password reset successful"
+msgstr "Pasahitzaren berrezartze arrakastatsua"
+
+#: templates/xadmin/auth/password_reset/complete.html:14
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Zure pasahitza ezarria izan da. Orain saioa hasi dezakezu."
+
+#: templates/xadmin/auth/password_reset/complete.html:15
+msgid "Log in"
+msgstr "Sarioa hasi"
+
+#: templates/xadmin/auth/password_reset/confirm.html:12
+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."
+
+#: templates/xadmin/auth/password_reset/confirm.html:19
+msgid "Change my password"
+msgstr "Nire pasahitza aldatu"
+
+#: templates/xadmin/auth/password_reset/confirm.html:24
+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."
+
+#: 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."
+
+#: 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."
+
+#: templates/xadmin/auth/password_reset/email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Mesedez, joan ondorengo orrira eta pasahitz berri bat aukeratu:"
+
+#: templates/xadmin/auth/password_reset/email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "Zure erabiltzailea, ahaztu baduzu:"
+
+#: templates/xadmin/auth/password_reset/email.html:10
+msgid "Thanks for using our site!"
+msgstr "Eskerrik asko gunea erabiltzaileagatik!"
+
+#: templates/xadmin/auth/password_reset/email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)sko taldea"
+
+#: templates/xadmin/auth/password_reset/form.html:13
+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."
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr "Eposta helbidea:"
+
+#: templates/xadmin/auth/password_reset/form.html:33
+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."
+
+#: templates/xadmin/auth/user/add_form.html:8
+msgid "Enter a username and password."
+msgstr "Erabiltzaile eta pasahitz bat sartu."
+
+#: 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] "Beheko errorea zuzendu mesedez."
+msgstr[1] "Beheko erroreak zuzendu mesedez."
+
+#: templates/xadmin/auth/user/change_password.html:38
+msgid "Enter your new password."
+msgstr "Zure pasahitz berria sartu."
+
+#: templates/xadmin/auth/user/change_password.html:40
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr ""
+"<strong>%(username)s</strong> 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: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 "Bilatu"
+
+#: templates/xadmin/blocks/comm.top.topnav.html:23
+msgid "Add"
+msgstr "Gehitu"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "Aurr pausua"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "Ondo pausua"
+
+#: 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 "Gorde"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "Laster-markak Garbitu"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "Ez dago Laster-markarik"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "Laster-marka Berria"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "Uneko orria Laster-marka bezala gorde"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "Laster-markaren izenburua idatzi"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "Itxoiten"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "Laster-marka gorde"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "Filtroak"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+msgstr "Filtroak garbitu"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
+msgid "Click here to select the objects across all pages"
+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 %(model_name)s"
+msgstr "Aukeratu %(total_count)s %(model_name)sak"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:20
+msgid "Clear selection"
+msgstr "Aukeraketa garbitu"
+
+#: templates/xadmin/blocks/model_list.results_top.charts.html:4
+msgid "Charts"
+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: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: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:42
+msgid "Export all data."
+msgstr "Data guztiak esportatu."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+msgid "Close"
+msgstr "Itxi"
+
+#: 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 "Garbitu Freskatzea"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
+#, python-format
+msgid "Every %(t)s seconds"
+msgstr ""
+
+#: 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"
+
+#: templates/xadmin/filters/char.html:13
+msgid "Enter"
+msgstr "Sartu"
+
+#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
+msgid "Choice Date"
+msgstr "Aukeraketa Data"
+
+#: templates/xadmin/filters/date.html:18
+msgid "YY"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:19
+msgid "year"
+msgstr "urtea"
+
+#: templates/xadmin/filters/date.html:22
+msgid "MM"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:23
+msgid "month"
+msgstr "hilabetea"
+
+#: templates/xadmin/filters/date.html:26
+msgid "DD"
+msgstr ""
+
+#: templates/xadmin/filters/date.html:27
+msgid "day"
+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:24
+#: templates/xadmin/filters/number.html:37
+msgid "Apply"
+msgstr "Aplikatu"
+
+#: templates/xadmin/filters/date.html:34
+msgid "Date Range"
+msgstr "Data Tartea"
+
+#: templates/xadmin/filters/date.html:41
+msgid "Select Date"
+msgstr "Data Aukeratu"
+
+#: templates/xadmin/filters/date.html:42
+msgid "From"
+msgstr "Nork"
+
+#: templates/xadmin/filters/date.html:44
+msgid "To"
+msgstr "Nori"
+
+#: 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"
+
+#: templates/xadmin/filters/number.html:17
+#: templates/xadmin/filters/number.html:25
+#: templates/xadmin/filters/number.html:33
+msgid "Enter Number"
+msgstr "Zenbakia Sartu"
+
+#: templates/xadmin/filters/rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr "%(filter_title)sgatik"
+
+#: templates/xadmin/forms/transfer.html:4
+msgid "Available"
+msgstr "Eskuragarri"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Click to choose all at once."
+msgstr "Klikatu guztia aukeratzeko."
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Choose all"
+msgstr "Guztia aukeratu"
+
+#: templates/xadmin/forms/transfer.html:16
+msgid "Choose"
+msgstr "Aukeratu"
+
+#: templates/xadmin/forms/transfer.html:19
+#: templates/xadmin/widgets/base.html:40
+msgid "Remove"
+msgstr "Ezabatu"
+
+#: templates/xadmin/forms/transfer.html:23
+msgid "Chosen"
+msgstr "Aukeratua"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "Klikatu aukeraketa guztia ezabatzeko"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Remove all"
+msgstr "Guztia ezabatu"
+
+#: templates/xadmin/includes/pagination.html:9
+msgid "Show all"
+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:31
+msgid "Saving.."
+msgstr ""
+
+#: templates/xadmin/includes/submit_line.html:17
+msgid "Save as new"
+msgstr "Berri bezala gorde"
+
+#: templates/xadmin/includes/submit_line.html:18
+msgid "Save and add another"
+msgstr "Gorde eta beste bat gehitu"
+
+#: templates/xadmin/includes/submit_line.html:19
+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:93
+msgid "Delete"
+msgstr "Ezabatu"
+
+#: 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 "Objetu anitz aldatu"
+
+#: 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] ""
+msgstr[1] ""
+
+#: templates/xadmin/views/batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "Bizpahiru Aldatu"
+
+#: templates/xadmin/views/dashboard.html:15
+#: templates/xadmin/views/dashboard.html:22
+#: templates/xadmin/views/dashboard.html:23
+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."
+
+#: templates/xadmin/views/logged_out.html:16
+msgid "Logout Success"
+msgstr "Saioa Arrakastaz Amaitua"
+
+#: templates/xadmin/views/logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Eskerrikasko Web gunean zure denbora sartzeagatik."
+
+#: templates/xadmin/views/logged_out.html:19
+msgid "Close Window"
+msgstr "Lehioa Itxi"
+
+#: templates/xadmin/views/logged_out.html:20
+msgid "Log in again"
+msgstr "Saioa hasi berriro"
+
+#: templates/xadmin/views/login.html:39 views/website.py:38
+msgid "Please Login"
+msgstr "Hasi Saioa mesedez"
+
+#: 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 "hasi saioa"
+
+#: templates/xadmin/views/model_dashboard.html:26
+#: templates/xadmin/views/model_detail.html:25
+msgid "Edit"
+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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_delete_confirm.html:34
+#: templates/xadmin/views/model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "Bai, ziur nago"
+
+#: 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 "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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_history.html:26
+msgid "Diff"
+msgstr "Diferentzia"
+
+#: templates/xadmin/views/model_history.html:27
+#: templates/xadmin/views/recover_list.html:25
+msgid "Date/time"
+msgstr "Data/ordua"
+
+#: templates/xadmin/views/model_history.html:28
+msgid "User"
+msgstr "Erabiltzailea"
+
+#: templates/xadmin/views/model_history.html:29
+msgid "Comment"
+msgstr "Iruzkina"
+
+#: templates/xadmin/views/model_history.html:54
+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."
+
+#: templates/xadmin/views/model_list.html:29
+#, python-format
+msgid "Add %(name)s"
+msgstr "%(name)s gehitu"
+
+#: templates/xadmin/views/model_list.html:39
+msgid "Columns"
+msgstr ""
+
+#: templates/xadmin/views/model_list.html:42
+msgid "Restore Selected"
+msgstr "Aukeratutakoa berrezarri"
+
+#: templates/xadmin/views/model_list.html:147
+#: templates/xadmin/widgets/list.html:33
+msgid "Empty list"
+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."
+
+#: 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."
+
+#: templates/xadmin/views/recover_list.html:39
+msgid "There are no deleted objects to recover."
+msgstr "Ez dago berreskuratu daitekeen ezabatutako objeturik."
+
+#: 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 ezberdintasunak"
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr "Eremua"
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr "A  bertsioa"
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr "B bertsioa"
+
+#: templates/xadmin/views/revision_diff.html:39
+msgid "Revert to"
+msgstr "Hona itzularazi"
+
+#: templates/xadmin/views/revision_diff.html:40
+#: templates/xadmin/views/revision_diff.html:41
+msgid "Revert"
+msgstr "Itzularazi"
+
+#: templates/xadmin/views/revision_form.html:16
+#, python-format
+msgid "Revert %(verbose_name)s"
+msgstr "%(verbose_name)s itzularazi"
+
+#: templates/xadmin/views/revision_form.html:21
+msgid "Press the revert button below to revert to this version of the object."
+msgstr "Beheko itzularatze botoia sakatu objetua bertsio hontara itzultzeko."
+
+#: templates/xadmin/views/revision_form.html:27
+msgid "Revert this revision"
+msgstr "Bertsio hau itzularazi"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Success"
+msgstr "Arrakasta"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Add success, click <a id='change-link'>edit</a> to edit."
+msgstr ""
+"Gehitze arrakastatsua, klikatu <a id='change-link'>editatu</a> editatzeko."
+
+#: templates/xadmin/widgets/addform.html:17
+msgid "Quick Add"
+msgstr "Gehitze Azkarra"
+
+#: templates/xadmin/widgets/base.html:31
+msgid "Widget Options"
+msgstr "Widget Aukerak"
+
+#: templates/xadmin/widgets/base.html:42
+msgid "Save changes"
+msgstr "Aldaketak gorde"
+
+#: views/base.py:315
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr "Widget IDa"
+
+#: views/dashboard.py:187
+msgid "Widget Title"
+msgstr "Widget Izenburua"
+
+#: 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:255
+msgid "Html Content"
+msgstr "Html Edukia"
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr "Helburu den Modelua"
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr "Botoi azkarra Widgeta, edozein orri azkar ireki."
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr "Botoi Azkarrak"
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr "Edozein Objetu zerrenda Widgeta."
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr "Edozein objetu gehitu Widgeta."
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr "Arbela"
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: 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:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr "Beste Eremuak"
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "%s Xehetasunak"
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr "Behean editatu dezakezu berriro."
+
+#: 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:471
+#, python-format
+msgid "Change %s"
+msgstr "Aldaketa %s"
+
+#: 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:165
+#, fuzzy, python-format
+msgid "The %s was changed successfully."
+msgstr "\"%(obj)s\" %(name)sa arrakastaz gehitua izan da."
+
+#: views/list.py:199
+msgid "Database error"
+msgstr "Datubase errorea"
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr "%s Zerrenda"
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr "GOR Ordenatu"
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr "BEH Ordenatu"
+
+#: 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"

二进制
extra_apps/xadmin/locale/eu/LC_MESSAGES/djangojs.mo


+ 71 - 0
extra_apps/xadmin/locale/eu/LC_MESSAGES/djangojs.po

@@ -0,0 +1,71 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# unaizalakain <unai@gisa-elkartea.org>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: unaizalakain <unai@gisa-elkartea.org>\n"
+"Language-Team: Basque (http://www.transifex.com/projects/p/xadmin/language/eu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(cnt)stik %(sel)s aukeratua"
+msgstr[1] "%(cnt)stik %(sel)s aukeratuak"
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr "Elementu Berria"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "Igandea Astelehena Asteartea Asteazkena Osteguna Ostirala Larunbata Igandea"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "Iga Atl Atr Atz Otg Otr Lar Iga"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+msgid "Su Mo Tu We Th Fr Sa Su"
+msgstr "Ig At Ar Az Og Or La Ig"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:35
+msgid ""
+"January February March April May June July August September October November"
+" December"
+msgstr "Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila Urria Azaroa Abendua"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "Urt Ots Mar Api Mai Eka Uzt Abu Ira Urr Aza Abe"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "Gaur"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr "%a %d %b %Y %T %Z"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "AM PM"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "am pm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

二进制
extra_apps/xadmin/locale/id_ID/LC_MESSAGES/django.mo


+ 1403 - 0
extra_apps/xadmin/locale/id_ID/LC_MESSAGES/django.po

@@ -0,0 +1,1403 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr ""
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr ""
+
+#: filters.py:175
+msgid "Unknown"
+msgstr ""
+
+#: filters.py:267
+msgid "Any date"
+msgstr ""
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr ""
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr ""
+
+#: filters.py:282
+msgid "This month"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr ""
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr ""
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr ""
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr ""
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr ""
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr ""
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr ""
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+#: 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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr ""
+
+#: plugins/actions.py:158
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+
+#: plugins/actions.py:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+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"
+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
+#, python-format
+msgid "Can add %s"
+msgstr ""
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr ""
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr ""
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: 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
+msgid "Permission Name"
+msgstr ""
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr ""
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr ""
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: 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 ""
+
+#: 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:578
+#, python-format
+msgid "Details of %s"
+msgstr ""
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr ""
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr ""
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr ""
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr ""
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr ""
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr ""
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""

二进制
extra_apps/xadmin/locale/id_ID/LC_MESSAGES/djangojs.mo


+ 69 - 0
extra_apps/xadmin/locale/id_ID/LC_MESSAGES/djangojs.po

@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\n"
+"Language-Team: Indonesian (Indonesia) (http://www.transifex.com/projects/p/xadmin/language/id_ID/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: id_ID\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/ja/LC_MESSAGES/django.mo


+ 1403 - 0
extra_apps/xadmin/locale/ja/LC_MESSAGES/django.po

@@ -0,0 +1,1403 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr ""
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr ""
+
+#: filters.py:175
+msgid "Unknown"
+msgstr ""
+
+#: filters.py:267
+msgid "Any date"
+msgstr ""
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr ""
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr ""
+
+#: filters.py:282
+msgid "This month"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr ""
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr ""
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr ""
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr ""
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr ""
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr ""
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr ""
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+#: 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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr ""
+
+#: plugins/actions.py:158
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+
+#: plugins/actions.py:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+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"
+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
+#, python-format
+msgid "Can add %s"
+msgstr ""
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr ""
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr ""
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: 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
+msgid "Permission Name"
+msgstr ""
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr ""
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr ""
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: 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 ""
+
+#: 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:578
+#, python-format
+msgid "Details of %s"
+msgstr ""
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr ""
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr ""
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr ""
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr ""
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr ""
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr ""
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""

二进制
extra_apps/xadmin/locale/ja/LC_MESSAGES/djangojs.mo


+ 69 - 0
extra_apps/xadmin/locale/ja/LC_MESSAGES/djangojs.po

@@ -0,0 +1,69 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/xadmin/language/ja/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/lt/LC_MESSAGES/django.mo


+ 1418 - 0
extra_apps/xadmin/locale/lt/LC_MESSAGES/django.po

@@ -0,0 +1,1418 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr ""
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr ""
+
+#: filters.py:175
+msgid "Unknown"
+msgstr ""
+
+#: filters.py:267
+msgid "Any date"
+msgstr ""
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr ""
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr ""
+
+#: filters.py:282
+msgid "This month"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr ""
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr ""
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr ""
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr ""
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr ""
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr ""
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr ""
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+#: 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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr ""
+
+#: plugins/actions.py:158
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/actions.py:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+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"
+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
+#, python-format
+msgid "Can add %s"
+msgstr ""
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr ""
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr ""
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: 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
+msgid "Permission Name"
+msgstr ""
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr ""
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr ""
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:73
+msgid "Remove selected comments"
+msgstr ""
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr ""
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr ""
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr ""
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr ""
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr ""
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr ""
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr ""
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""

二进制
extra_apps/xadmin/locale/lt/LC_MESSAGES/djangojs.mo


+ 71 - 0
extra_apps/xadmin/locale/lt/LC_MESSAGES/djangojs.po

@@ -0,0 +1,71 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\n"
+"Language-Team: Lithuanian (http://www.transifex.com/projects/p/xadmin/language/lt/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lt\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"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/django.mo


+ 1410 - 0
extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/django.po

@@ -0,0 +1,1410 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr ""
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr ""
+
+#: filters.py:175
+msgid "Unknown"
+msgstr ""
+
+#: filters.py:267
+msgid "Any date"
+msgstr ""
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr ""
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr ""
+
+#: filters.py:282
+msgid "This month"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr ""
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr ""
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr ""
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr ""
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr ""
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr ""
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr ""
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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
+msgid "change message"
+msgstr ""
+
+#: models.py:164
+msgid "log entry"
+msgstr ""
+
+#: 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
+#, python-format
+msgid "Deleted \"%(object)s.\""
+msgstr ""
+
+#: plugins/actions.py:57
+#, python-format
+msgid "Delete selected %(verbose_name_plural)s"
+msgstr ""
+
+#: 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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr ""
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr ""
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+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"
+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
+#, python-format
+msgid "Can add %s"
+msgstr ""
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr ""
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr ""
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr ""
+
+#: 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
+msgid "Permission Name"
+msgstr ""
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr ""
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr ""
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr ""
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:73
+msgid "Remove selected comments"
+msgstr ""
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr ""
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr ""
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr ""
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr ""
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr ""
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr ""
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr ""
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr ""
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr ""

二进制
extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/djangojs.mo


+ 70 - 0
extra_apps/xadmin/locale/nl_NL/LC_MESSAGES/djangojs.po

@@ -0,0 +1,70 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\n"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/xadmin/language/nl_NL/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl_NL\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/pl/LC_MESSAGES/django.mo


+ 1481 - 0
extra_apps/xadmin/locale/pl/LC_MESSAGES/django.po

@@ -0,0 +1,1481 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: django-xadmin\n"
+"Report-Msgid-Bugs-To: \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 <mszpadzik@gmail.com>\n"
+"Language-Team: Polish translators <mszpadzik@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Tak"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "Nie"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Nieznany"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Dowolna data"
+
+#: filters.py:268
+msgid "Has date"
+msgstr "Ma datę"
+
+#: filters.py:271
+msgid "Has no date"
+msgstr "Nie ma daty"
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Dzisiaj"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "Ostatnie 7 dni"
+
+#: filters.py:282
+msgid "This month"
+msgstr "Ten miesiąc"
+
+#: filters.py:286
+msgid "This year"
+msgstr "Ten rok"
+
+#: forms.py:10
+msgid ""
+"Please enter the correct username and password for a staff account. Note "
+"that both fields are case-sensitive."
+msgstr ""
+"Proszę wpisz prawidłową nazwę użytkownika i hasło do konta. Pamiętaj, że oba "
+"pola są wrażliwe na wielkość znaków."
+
+#: forms.py:21
+msgid "Please log in again, because your session has expired."
+msgstr "Proszę, zaloguj się ponownie, ponieważ Twoja sesja wygasła."
+
+#: forms.py:41
+#, python-format
+msgid "Your e-mail address is not your username. Try '%s' instead."
+msgstr ""
+"Twój adres e-mail nie jest Twoją nazwą użytkownika. Zamiast tego spróbuj "
+"'%s'."
+
+#: models.py:48
+msgid "Title"
+msgstr "Tytuł"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr "użytkownik"
+
+#: models.py:50
+msgid "Url Name"
+msgstr "Nazwa Url"
+
+#: models.py:52
+msgid "Query String"
+msgstr "Tekst wyszukiwania"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr "Jest współdzielony"
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Zakładka"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Zakładki"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr "Klucz ustawień"
+
+#: models.py:90
+msgid "Settings Content"
+msgstr "Treść ustawień"
+
+#: models.py:102
+msgid "User Setting"
+msgstr "Ustawienie użytkownika"
+
+#: models.py:103
+msgid "User Settings"
+msgstr "Ustawienia użytkownika"
+
+#: models.py:108
+msgid "Page"
+msgstr "Strona"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Typ Widgetu"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Parametry Widgetu"
+
+#: models.py:137
+msgid "User Widget"
+msgstr "Widget użytkownika"
+
+#: models.py:138
+msgid "User Widgets"
+msgstr "Widgety użytkownika"
+
+#: 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 ""
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Nie można usunąć %(name)s"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Jesteś pewny ?"
+
+#: plugins/actions.py:158
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "%(total_count)s zaznaczony"
+msgstr[1] "%(total_count)s zaznaczone"
+msgstr[2] "%(total_count)s zaznaczonych"
+
+#: plugins/actions.py:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 z %(cnt)s zaznaczonych"
+
+#: 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 ""
+"Elementy muszą być zaznaczone, by wykonać akcję na nich. Żaden element nie "
+"został zmienony."
+
+#: plugins/aggregation.py:14
+msgid "Min"
+msgstr "Min"
+
+#: plugins/aggregation.py:14
+msgid "Max"
+msgstr "Max"
+
+#: plugins/aggregation.py:14
+msgid "Avg"
+msgstr "Śred"
+
+#: plugins/aggregation.py:14
+msgid "Sum"
+msgstr "Sum"
+
+#: plugins/aggregation.py:14
+msgid "Count"
+msgstr "Liczba"
+
+#: plugins/auth.py:21
+#, python-format
+msgid "Can add %s"
+msgstr "Może dodawać %s"
+
+#: plugins/auth.py:22
+#, python-format
+msgid "Can change %s"
+msgstr "Może zmieniać %s"
+
+#: plugins/auth.py:23
+#, python-format
+msgid "Can edit %s"
+msgstr "Może edytować %s"
+
+#: plugins/auth.py:24
+#, python-format
+msgid "Can delete %s"
+msgstr "Może usuwać %s"
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr "Może oglądać %s"
+
+#: plugins/auth.py:87
+msgid "Personal info"
+msgstr "Informacje osobiste"
+
+#: plugins/auth.py:91
+msgid "Permissions"
+msgstr "Uprawnienia"
+
+#: plugins/auth.py:94
+msgid "Important dates"
+msgstr "Ważne daty"
+
+#: plugins/auth.py:99
+msgid "Status"
+msgstr "Status"
+
+#: plugins/auth.py:111
+msgid "Permission Name"
+msgstr "Nazwa uprawnienia"
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr "Zmień hasło"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Zmień hasło: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Zmiana hasła zakończona powodzieniem"
+
+#: 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"
+msgstr "Zmień hasło"
+
+#: plugins/batch.py:44
+msgid "Change this field"
+msgstr "Zmień to pole"
+
+#: plugins/batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "Zmiana grupowa wybrana %(verbose_name_plural)s"
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr "Z powodzeniem zmieniono %(count)d %(items)s."
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr "Zmiana grupowa %s"
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr "zakładka"
+
+#: 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:25
+msgid "Show models simple chart."
+msgstr "Pokaż prosty wykres dla modelu."
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr "%s Wykresy"
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr "Metadane"
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] "oflagowany"
+msgstr[1] "oflagowane"
+msgstr[2] "oflagowanych"
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr "Oflaguj zaznaczony komentarz"
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] "zatwierdzony"
+msgstr[1] "zatwierdzone"
+msgstr[2] "zatwierdzonych"
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr "Zatwierdź zaznaczony komentarz"
+
+#: plugins/comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "usunięty"
+msgstr[1] "usunięte"
+msgstr[2] "usuniętych"
+
+#: plugins/comments.py:73
+msgid "Remove selected comments"
+msgstr "Usuń zaznaczone komentarze"
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+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:578
+#, python-format
+msgid "Details of %s"
+msgstr "Szczegóły %s"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "Wejdz w %s"
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Arkusz"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr "<b>Błąd filtracji:</b> %s"
+
+#: plugins/images.py:29
+msgid "Previous"
+msgstr "Poprzedni"
+
+#: plugins/images.py:29
+msgid "Next"
+msgstr "Następny"
+
+#: plugins/images.py:29
+msgid "Slideshow"
+msgstr "Pokaz slajdów"
+
+#: plugins/images.py:29
+msgid "Download"
+msgstr "Ściągnij"
+
+#: plugins/images.py:50
+msgid "Change:"
+msgstr "Zmień:"
+
+#: plugins/layout.py:16
+msgid "Table"
+msgstr "Tabela"
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr "Miniaturki"
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr "Zapomniałeś swojego hasła lub loginu ?"
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr "Utwórz nowy %s"
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Powiązane obiekty"
+
+#: plugins/relfield.py:29 plugins/topnav.py:38
+#, python-format
+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"
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr "Domyślny temat bootstrapa"
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr "Bootstrap2"
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr "Tematy Bootstrap 2.x"
+
+#: 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:106
+msgid "Initial version."
+msgstr "Wersja startowa."
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr "Zmień wersję."
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr "Przywróć wersję."
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr "Odzyskaj wersję."
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "Usunięte %(verbose_name)s."
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr "Odzyskaj"
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr "Zmień historię: %s"
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "Musisz wybrać dwie wersje."
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Proszę, wybierz dwie różne wersje."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr "Obecny: %s"
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr "Przywróć %s"
+
+#: 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\" został przywrócony z powodzeniem. Możesz edytować go "
+"ponownie poniżej."
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr "Odzyskaj %s"
+
+#: 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\" został z powodzeniem odzyskany. Możesz edytować go "
+"ponownie poniżej."
+
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
+msgid "Page not found"
+msgstr "Strona nie została odnaleziona"
+
+#: templates/xadmin/404.html:10
+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/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
+#: 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:473
+msgid "Home"
+msgstr "Home"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr "Błąd serwera"
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr "Błąd serwera (500)"
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+msgstr "Błąd Serwera <em>(500)</em>"
+
+#: 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 ""
+"Wystąpił błąd. Został zaraportowany do administratorów strony przez e-mail i "
+"wkrótce powienien zostać naprawiony. Dziękujemy za wyrozumiałość i "
+"cierpliwość."
+
+#: templates/xadmin/auth/password_reset/complete.html:11
+#: templates/xadmin/auth/password_reset/done.html:11
+msgid "Password reset successful"
+msgstr "Reset hasła zakończony powodzeniem"
+
+#: templates/xadmin/auth/password_reset/complete.html:14
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr ""
+"Twoje hasło zostało ustawione. Możesz teraz przejść dalej i zalogować się."
+
+#: templates/xadmin/auth/password_reset/complete.html:15
+msgid "Log in"
+msgstr "Zaloguj się"
+
+#: templates/xadmin/auth/password_reset/confirm.html:12
+msgid "Enter new password"
+msgstr "Wpisz nowe hasło"
+
+#: 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 ""
+"Proszę wpisać Twoje nowe hasło dwukrotnie, aby zweryfikować, czy wpisałeś je "
+"poprawnie."
+
+#: templates/xadmin/auth/password_reset/confirm.html:19
+msgid "Change my password"
+msgstr "Zmień moje hasło"
+
+#: templates/xadmin/auth/password_reset/confirm.html:24
+msgid "Password reset unsuccessful"
+msgstr "Resetowanie hasło zakończone niepowodzeniem"
+
+#: 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 ""
+"Twój link do resetowania hasła jest niepoprawny, prawdopodobnie został już "
+"użyty. Proszę, zażądaj nowego linku (wykonaj raz jeszcze reset hasł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 ""
+"Wysłaliśmy Ci e-mailem instrukcję ustawienia Twojego hasła na adres, który "
+"podałeś. Powinieneś go wkrótce otrzymać."
+
+#: 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 ""
+"Otrzymałeś tego e-maila, ponieważ zarządałeś zresetowania hasła do twojego "
+"konta na maszynie %(site_name)s."
+
+#: templates/xadmin/auth/password_reset/email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Przejdź proszę do podanej strony i wybierz nowe hasło: "
+
+#: templates/xadmin/auth/password_reset/email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "Twoja nazwa użytkownika, gdybyś ją zapomniał: "
+
+#: templates/xadmin/auth/password_reset/email.html:10
+msgid "Thanks for using our site!"
+msgstr "Dziękujemy za skorzystanie z naszej strony !"
+
+#: templates/xadmin/auth/password_reset/email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "%(site_name)s team"
+
+#: templates/xadmin/auth/password_reset/form.html:13
+msgid "Password reset"
+msgstr "Reset hasł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 ""
+"Zapomiałeś swoje hasło ? Wpisz Twój adres e-mail poniżej, a my prześlemy Ci "
+"maila z instrukcjami, jak ustawić nowe."
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr "Adres e-mail:"
+
+#: templates/xadmin/auth/password_reset/form.html:33
+msgid "Reset my password"
+msgstr "Zresetuj moje hasło"
+
+#: 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 ""
+"Po pierwsze, wpisz nazwę użytkownika i hasło. Potem bedziesz mógł edytować "
+"pozostałe opcje użytkownika."
+
+#: templates/xadmin/auth/user/add_form.html:8
+msgid "Enter a username and password."
+msgstr "Wpisz nazwę użytkownika i hasło."
+
+#: 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] "Proszę napraw poniższy błąd."
+msgstr[1] "Proszę napraw poniższe błędy."
+msgstr[2] "Proszę napraw poniższe błędy."
+
+#: templates/xadmin/auth/user/change_password.html:38
+msgid "Enter your new password."
+msgstr "Wpisz Twoje nowe hasło."
+
+#: templates/xadmin/auth/user/change_password.html:40
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Wpisz nowe hasło dla użytkownika <strong>%(username)s</strong>."
+
+#: 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: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 "Szukaj"
+
+#: templates/xadmin/blocks/comm.top.topnav.html:23
+msgid "Add"
+msgstr "Dodaj"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "Poprzedni krok"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "Następny krok"
+
+#: 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 "Zapisz"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "Wyczyść zakłądki"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "Brak zakładek"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "Nowa zakładka"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "Zapisz obecną stronę jako zakładkę"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "Wprowadź tytuł zakładki"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "Oczekuje"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "Zapisz zakładkę"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "Filtry"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+msgstr "Wyczyść filtry"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
+msgid "Click here to select the objects across all pages"
+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 %(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"
+msgstr "Wyczyść wybór"
+
+#: templates/xadmin/blocks/model_list.results_top.charts.html:4
+msgid "Charts"
+msgstr "Wykresy"
+
+#: 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
+msgid "Export"
+msgstr "Eksportuj"
+
+#: 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 "Eksportuj wraz z nagłówkiem tabeli."
+
+#: 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 "Exportuj do formatu."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:42
+msgid "Export all data."
+msgstr "Eksportuj wszystkie dane."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+msgid "Close"
+msgstr "Zamknij"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.layouts.html:4
+msgid "Layout"
+msgstr "Układ graficzny"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:8
+msgid "Clean Refresh"
+msgstr "Wyczyść odświeżanie"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
+#, python-format
+msgid "Every %(t)s seconds"
+msgstr "Co każde %(t)s sekund"
+
+#: 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"
+
+#: templates/xadmin/filters/char.html:13
+msgid "Enter"
+msgstr "Wejdź"
+
+#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
+msgid "Choice Date"
+msgstr "Data wyboru"
+
+#: templates/xadmin/filters/date.html:18
+msgid "YY"
+msgstr "YY"
+
+#: templates/xadmin/filters/date.html:19
+msgid "year"
+msgstr "rok"
+
+#: templates/xadmin/filters/date.html:22
+msgid "MM"
+msgstr "MM"
+
+#: templates/xadmin/filters/date.html:23
+msgid "month"
+msgstr "miesiąc"
+
+#: templates/xadmin/filters/date.html:26
+msgid "DD"
+msgstr "DD"
+
+#: templates/xadmin/filters/date.html:27
+msgid "day"
+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:24
+#: templates/xadmin/filters/number.html:37
+msgid "Apply"
+msgstr "Zatwierdź"
+
+#: templates/xadmin/filters/date.html:34
+msgid "Date Range"
+msgstr "Zakres dat"
+
+#: templates/xadmin/filters/date.html:41
+msgid "Select Date"
+msgstr "Wybierz datę"
+
+#: templates/xadmin/filters/date.html:42
+msgid "From"
+msgstr "Od"
+
+#: templates/xadmin/filters/date.html:44
+msgid "To"
+msgstr "Do"
+
+#: 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ść"
+
+#: templates/xadmin/filters/number.html:17
+#: templates/xadmin/filters/number.html:25
+#: templates/xadmin/filters/number.html:33
+msgid "Enter Number"
+msgstr "Wpisz numer"
+
+#: templates/xadmin/filters/rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " po %(filter_title)s"
+
+#: templates/xadmin/forms/transfer.html:4
+msgid "Available"
+msgstr "Dostępny"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Click to choose all at once."
+msgstr "Kliknij by wybrać wszystkie za jednym razem."
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Choose all"
+msgstr "Wybierz wszystkie"
+
+#: templates/xadmin/forms/transfer.html:16
+msgid "Choose"
+msgstr "Wybierz"
+
+#: templates/xadmin/forms/transfer.html:19
+#: templates/xadmin/widgets/base.html:40
+msgid "Remove"
+msgstr "Usuń"
+
+#: templates/xadmin/forms/transfer.html:23
+msgid "Chosen"
+msgstr "Wybrane"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "Kliknij, by usunąć za jednym razem wszystkie wybrane."
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Remove all"
+msgstr "Usuń wszystkie"
+
+#: templates/xadmin/includes/pagination.html:9
+msgid "Show all"
+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:31
+msgid "Saving.."
+msgstr "Zapisuję.."
+
+#: templates/xadmin/includes/submit_line.html:17
+msgid "Save as new"
+msgstr "Zapisz jako nowe"
+
+#: templates/xadmin/includes/submit_line.html:18
+msgid "Save and add another"
+msgstr "Zapisz i dodaj kolejne"
+
+#: templates/xadmin/includes/submit_line.html:19
+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:93
+msgid "Delete"
+msgstr "Usuń"
+
+#: 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 "Zmień wiele obiektów"
+
+#: 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] "Zmień %(objects_name)s"
+msgstr[1] "Grupowa zmiana %(counter)s %(objects_name)s"
+msgstr[2] "Grupowa zmiana %(counter)s %(objects_name)s"
+
+#: templates/xadmin/views/batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "Zmień wiele"
+
+#: templates/xadmin/views/dashboard.html:15
+#: templates/xadmin/views/dashboard.html:22
+#: templates/xadmin/views/dashboard.html:23
+msgid "Add Widget"
+msgstr "Dodaj 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 ""
+"Coś złego dzieje się z Twoją bazą danych. Upewnij się, że konieczne tabele w "
+"Twojej bazie danych zostały skreowane i mogą być czytane przez właściwych "
+"użytkowników."
+
+#: templates/xadmin/views/logged_out.html:16
+msgid "Logout Success"
+msgstr "Wylogowanie zakończone sukcesem"
+
+#: templates/xadmin/views/logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Dzięki za spędzenie dzisiaj cennego czasu na naszej stronie."
+
+#: templates/xadmin/views/logged_out.html:19
+msgid "Close Window"
+msgstr "Zamknij okno"
+
+#: templates/xadmin/views/logged_out.html:20
+msgid "Log in again"
+msgstr "Zaloguj się ponownie"
+
+#: templates/xadmin/views/login.html:39 views/website.py:38
+msgid "Please Login"
+msgstr "Proszę, zaloguj się"
+
+#: templates/xadmin/views/login.html:52
+msgid "Username"
+msgstr "Nazwa użytkownika"
+
+#: templates/xadmin/views/login.html:64
+msgid "Password"
+msgstr "Hasło"
+
+#: templates/xadmin/views/login.html:75
+msgid "log in"
+msgstr "zaloguj się"
+
+#: templates/xadmin/views/model_dashboard.html:26
+#: templates/xadmin/views/model_detail.html:25
+msgid "Edit"
+msgstr "Edytuj"
+
+#: 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 ""
+"Usunięcie %(verbose_name)s '%(escaped_object)s' spowoduje usunięcie "
+"powiązanych obiektów, ale Twoje konto nie ma uprawnień do usunięcia "
+"następujących typów obiektów:"
+
+#: 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 ""
+"Usunięcie %(verbose_name)s '%(escaped_object)s' będzie wymagać usunięcia "
+"następujących, chronionych obiektów powiązanych:"
+
+#: 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 ""
+"Czy jesteś pewien, że chcesz usunąć %(verbose_name)s \"%(escaped_object)s"
+"\" ? Wszystkie następujące powiązane obiekty zostaną usunięte:"
+
+#: templates/xadmin/views/model_delete_confirm.html:34
+#: templates/xadmin/views/model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "Tak, jestem pewny"
+
+#: templates/xadmin/views/model_delete_confirm.html:35
+#: templates/xadmin/views/model_delete_selected_confirm.html:50
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: templates/xadmin/views/model_delete_selected_confirm.html:10
+msgid "Delete multiple objects"
+msgstr "Usuń wiele obiektów"
+
+#: 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 ""
+"Usunięcie wybranego obiektów %(objects_name)s będzie skutkowało usunięciem "
+"powiązanych obiektów, ale Twoje konto nie posiada uprawnień do usunięcia "
+"następujących obiektów:"
+
+#: 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 ""
+"Usunięcie zaznaczonych obiektów %(objects_name)s będzie wymagało usunięcia "
+"następujących zabezpieczonych powiązanych obiektów:"
+
+#: 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 ""
+"Jesteś pewny, że chcesz usunąc zaznaczone obiekty %(objects_name)s ? "
+"Wszystkie następujące obiekty i ich powiązania zostaną usunięte:"
+
+#: templates/xadmin/views/model_history.html:26
+msgid "Diff"
+msgstr "Różnica"
+
+#: templates/xadmin/views/model_history.html:27
+#: templates/xadmin/views/recover_list.html:25
+msgid "Date/time"
+msgstr "Data/czas"
+
+#: templates/xadmin/views/model_history.html:28
+msgid "User"
+msgstr "Użytkownik"
+
+#: templates/xadmin/views/model_history.html:29
+msgid "Comment"
+msgstr "Komentarz"
+
+#: templates/xadmin/views/model_history.html:54
+msgid "Diff Select Versions"
+msgstr "Róznica w wybranych wersjach"
+
+#: 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 ""
+"Ten obiekt nie posiada historii zmian. Prawdopodobnie nie został on dodany "
+"przez panel administratora."
+
+#: templates/xadmin/views/model_list.html:29
+#, python-format
+msgid "Add %(name)s"
+msgstr "Dodaj %(name)s"
+
+#: templates/xadmin/views/model_list.html:39
+msgid "Columns"
+msgstr "Kolumny"
+
+#: templates/xadmin/views/model_list.html:42
+msgid "Restore Selected"
+msgstr "Odzyskaj wybrane"
+
+#: templates/xadmin/views/model_list.html:147
+#: templates/xadmin/widgets/list.html:33
+msgid "Empty list"
+msgstr "Pusta lista"
+
+#: templates/xadmin/views/recover_form.html:20
+msgid "Press the recover button below to recover this version of the object."
+msgstr "Naciśnij przycisk odzyskiwania poniżej, by odzyskać tę wersję obiektu."
+
+#: templates/xadmin/views/recover_list.html:19
+msgid ""
+"Choose a date from the list below to recover a deleted version of an object."
+msgstr ""
+"Wybierz datę z poniższej listy aby odzyskać usuniętą wersję danego obiektu."
+
+#: templates/xadmin/views/recover_list.html:39
+msgid "There are no deleted objects to recover."
+msgstr "Nie ma usuniętych obiektów, które można odzyskać."
+
+#: templates/xadmin/views/revision_diff.html:12
+#: templates/xadmin/views/revision_diff.html:17
+#, python-format
+msgid "Diff %(verbose_name)s"
+msgstr "Róznice %(verbose_name)s"
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr "Pole"
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr "Wersja A"
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr "Wersja B"
+
+#: templates/xadmin/views/revision_diff.html:39
+msgid "Revert to"
+msgstr "Przywróć do"
+
+#: templates/xadmin/views/revision_diff.html:40
+#: templates/xadmin/views/revision_diff.html:41
+msgid "Revert"
+msgstr "Przywróć"
+
+#: templates/xadmin/views/revision_form.html:16
+#, python-format
+msgid "Revert %(verbose_name)s"
+msgstr "Przywróć %(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 ""
+"Naciśnij przycisk przywracania poniżej, aby przywrócić obiekt do tej wersji."
+
+#: templates/xadmin/views/revision_form.html:27
+msgid "Revert this revision"
+msgstr "Przywróć tę rewizję"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Success"
+msgstr "Sukces"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Add success, click <a id='change-link'>edit</a> to edit."
+msgstr "Dodawanie udane, kliknij <a id='change-link'>edytuj</a> aby edytować."
+
+#: templates/xadmin/widgets/addform.html:17
+msgid "Quick Add"
+msgstr "Szybkie dodaj"
+
+#: templates/xadmin/widgets/base.html:31
+msgid "Widget Options"
+msgstr "Opcje widgetów"
+
+#: templates/xadmin/widgets/base.html:42
+msgid "Save changes"
+msgstr "Zapisz zmiany"
+
+#: views/base.py:315
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: views/base.py:316
+#, fuzzy
+#| msgid "my-company.inc 2013"
+msgid "my-company.inc"
+msgstr "moja-firma.inc 2013"
+
+#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr "ID widgetu"
+
+#: views/dashboard.py:187
+msgid "Widget Title"
+msgstr "Tytuł widgetu"
+
+#: 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:255
+msgid "Html Content"
+msgstr "Treść HTML"
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr "Model docelowy"
+
+#: 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:371
+msgid "Quick Buttons"
+msgstr "Szybkie przyciski"
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr "Dowolny widget listy obiektów."
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr "Dodaj dowolny widget modelu obiektu."
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr "Dashboard"
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr "%s Dashboard"
+
+#: 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:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr "Inne pola"
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "Szczegóły %s"
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr "Możesz edytować to powtórnie poniżej."
+
+#: 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:471
+#, python-format
+msgid "Change %s"
+msgstr "Zmień %s"
+
+#: 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:165
+#, python-format
+msgid "The %s was changed successfully."
+msgstr "%s został z sukcesem zmieniony."
+
+#: views/list.py:199
+msgid "Database error"
+msgstr "Błąd bazy danych"
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr "Lista %s"
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr "Sortuj ASC"
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr "Sortuj DESC"
+
+#: 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"

二进制
extra_apps/xadmin/locale/pl/LC_MESSAGES/djangojs.mo


+ 83 - 0
extra_apps/xadmin/locale/pl/LC_MESSAGES/djangojs.po

@@ -0,0 +1,83 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: django-xadmin\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-08-12 21:07+0200\n"
+"PO-Revision-Date: 2014-08-12 21:23+0100\n"
+"Last-Translator: Michał Szpadzik <mszpadzik@gmail.com>\n"
+"Language-Team: Polish translators <mszpadzik@gmail.com>\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"
+
+#: 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] "%(sel)s z %(cnt)s wybranych"
+msgstr[1] "%(sel)s z %(cnt)s wybranych"
+msgstr[2] "%(sel)s z %(cnt)s wybranych"
+
+#: static/xadmin/js/xadmin.plugin.quick-form.js:172
+msgid "Close"
+msgstr "Zamknij"
+
+#: static/xadmin/js/xadmin.plugin.quick-form.js:173
+msgid "Add"
+msgstr "Dodaj"
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr "Nowy obiekt"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "niedziela poniedziałek wtorek środa czwartek piątek sobota niedziela"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "niedz. pon. wt. śr. czw. pt. sob. niedz."
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+msgid "Su Mo Tu We Th Fr Sa Su"
+msgstr "niedz. pn. wt. śr. czw. pt. sob. niedz."
+
+#: static/xadmin/js/xadmin.widget.datetime.js:35
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr ""
+"styczeń luty marzec kwiecień maj czerwiec lipiec sierpień wrzesień "
+"październik "
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "sty. lut. marz. kwie. maj czerw. lip. sier. wrze. paź. list. grudz."
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "Dzisiaj"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr "%a %d %b %Y %T %Z"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "AM PM"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "am pm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

二进制
extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/django.mo


+ 1479 - 0
extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/django.po

@@ -0,0 +1,1479 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# korndorfer <codigo.aberto@dorfer.com.br>, 2013
+# Ellison Leão, 2013
+# Gladson Simplício Brito <gladsonbrito@gmail.com>, 2013
+# gladson <gladson@immensa.com.br>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-11-20 10:21+0000\n"
+"Last-Translator: gladson <gladson@immensa.com.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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Sim"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "Não"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Qualquer data"
+
+#: filters.py:268
+msgid "Has date"
+msgstr "Tem data"
+
+#: filters.py:271
+msgid "Has no date"
+msgstr "Não tem data"
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Hoje"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "Passados 7 dias"
+
+#: filters.py:282
+msgid "This month"
+msgstr "Este mês"
+
+#: 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."
+
+#: forms.py:21
+msgid "Please log in again, because your session has expired."
+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."
+
+#: models.py:48
+msgid "Title"
+msgstr "Título"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr "Usuário"
+
+#: models.py:50
+msgid "Url Name"
+msgstr "Nome da Url"
+
+#: models.py:52
+msgid "Query String"
+msgstr "String de Consulta"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr "É Compartilhada"
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Favorito"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Favoritos"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr "Configuração da chave"
+
+#: models.py:90
+msgid "Settings Content"
+msgstr "Configurações de conteúdo"
+
+#: models.py:102
+msgid "User Setting"
+msgstr "Configuração de usuário"
+
+#: models.py:103
+msgid "User Settings"
+msgstr "Configurações do Usuário"
+
+#: models.py:108
+msgid "Page"
+msgstr "Página"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Tipo de Widget"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Parâmetros do Widget"
+
+#: models.py:137
+msgid "User Widget"
+msgstr "Widget do Usuário"
+
+#: models.py:138
+msgid "User Widgets"
+msgstr "Widgets do Usuário"
+
+#: 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 ""
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Não é possível excluir %(name)s"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Você tem certeza?"
+
+#: 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:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "0 de %(cnt)s selecionados"
+
+#: 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"
+msgstr "Min"
+
+#: plugins/aggregation.py:14
+msgid "Max"
+msgstr "Max"
+
+#: plugins/aggregation.py:14
+msgid "Avg"
+msgstr "Médio"
+
+#: plugins/aggregation.py:14
+msgid "Sum"
+msgstr "Soma"
+
+#: plugins/aggregation.py:14
+msgid "Count"
+msgstr "Contar"
+
+#: plugins/auth.py:21
+#, fuzzy, python-format
+msgid "Can add %s"
+msgstr "Pode ver %s"
+
+#: plugins/auth.py:22
+#, fuzzy, python-format
+msgid "Can change %s"
+msgstr "Alterar %s"
+
+#: plugins/auth.py:23
+#, fuzzy, python-format
+msgid "Can edit %s"
+msgstr "Pode ver %s"
+
+#: plugins/auth.py:24
+#, fuzzy, python-format
+msgid "Can delete %s"
+msgstr "Não é possível excluir %(name)s"
+
+#: plugins/auth.py:25
+#, python-format
+msgid "Can view %s"
+msgstr "Pode ver %s"
+
+#: plugins/auth.py:87
+msgid "Personal info"
+msgstr "Informações pessoais"
+
+#: plugins/auth.py:91
+msgid "Permissions"
+msgstr "Permissões"
+
+#: plugins/auth.py:94
+msgid "Important dates"
+msgstr "Datas importantes"
+
+#: plugins/auth.py:99
+msgid "Status"
+msgstr "Status"
+
+#: plugins/auth.py:111
+#, fuzzy
+msgid "Permission Name"
+msgstr "Permissões"
+
+#: plugins/auth.py:167
+msgid "Change Password"
+msgstr "Alterar Senha"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Alterar senha: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Senha alterada com sucesso."
+
+#: 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"
+msgstr "Alterar a senha"
+
+#: plugins/batch.py:44
+msgid "Change this field"
+msgstr "Alterar este campo"
+
+#: plugins/batch.py:65
+#, python-format
+msgid "Batch Change selected %(verbose_name_plural)s"
+msgstr "Alterar lote selecionado %(verbose_name_plural)s"
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr "Alterado com sucesso %(count)d %(items)s."
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr "Lote alterado %s"
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr "Favorito"
+
+#: 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"
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr "Mostrar modelos gráfico simples."
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr "%s Gráficos"
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+#, fuzzy
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] "Remover"
+msgstr[1] "Remover"
+
+#: plugins/comments.py:73
+#, fuzzy
+msgid "Remove selected comments"
+msgstr "Recuperar deletado %(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] ""
+msgstr[1] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr "Detalhes de %s"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr "Entrar %s"
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Planilha"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr "<b>Filtrar erro:</b> %s"
+
+#: plugins/images.py:29
+msgid "Previous"
+msgstr "Anterior"
+
+#: plugins/images.py:29
+msgid "Next"
+msgstr "Próximo"
+
+#: plugins/images.py:29
+msgid "Slideshow"
+msgstr "Slideshow"
+
+#: plugins/images.py:29
+msgid "Download"
+msgstr "Baixar"
+
+#: plugins/images.py:50
+msgid "Change:"
+msgstr "Alterar:"
+
+#: plugins/layout.py:16
+msgid "Table"
+msgstr "Tabela"
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr "Miniaturas"
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr "Esqueceu seu nome de usuário ou senha?"
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr "Criar novo %s"
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Objetos Relacionados"
+
+#: 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"
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr "Tema padrão bootstrap"
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr "Bootstrap2"
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr "Tema Bootstrap 2.x"
+
+#: 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:106
+msgid "Initial version."
+msgstr "Versão inicial."
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr "Alterar versão."
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr "Reverter versão."
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr "Recuperar versão."
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr "Excluídos %(verbose_name)s."
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr "Recuperar"
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr "Alterar histórico: %s"
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "É necessário selecionar 2 versões"
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Por favor selecione duas versões diferentes."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr "Atual: %s"
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr "Revertido: %s"
+
+#: 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."
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr "Recuperar %s"
+
+#: 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."
+
+#: templates/xadmin/404.html:4 templates/xadmin/404.html:8
+msgid "Page not found"
+msgstr "Página não encontrada"
+
+#: templates/xadmin/404.html:10
+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/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
+#: 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:473
+msgid "Home"
+msgstr "Início"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr "Erro do servidor"
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr "Erro do servidor (500)"
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+msgstr "Erro do Servidor <em>(500)</em>"
+
+#: 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/auth/password_reset/complete.html:11
+#: templates/xadmin/auth/password_reset/done.html:11
+msgid "Password reset successful"
+msgstr "Redefinição de senha completada."
+
+#: templates/xadmin/auth/password_reset/complete.html:14
+msgid "Your password has been set.  You may go ahead and log in now."
+msgstr "Sua senha foi definida. Você pode seguir e entrar agora."
+
+#: templates/xadmin/auth/password_reset/complete.html:15
+msgid "Log in"
+msgstr "Entrar"
+
+#: templates/xadmin/auth/password_reset/confirm.html: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."
+
+#: templates/xadmin/auth/password_reset/confirm.html:19
+msgid "Change my password"
+msgstr "Alterar minha senha"
+
+#: templates/xadmin/auth/password_reset/confirm.html:24
+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."
+
+#: 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."
+
+#: 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."
+
+#: templates/xadmin/auth/password_reset/email.html:4
+msgid "Please go to the following page and choose a new password:"
+msgstr "Por favor, vá para a página seguinte e escolha uma nova senha:"
+
+#: templates/xadmin/auth/password_reset/email.html:8
+msgid "Your username, in case you've forgotten:"
+msgstr "Seu nome de usuário, para o caso de ter esquecido:"
+
+#: templates/xadmin/auth/password_reset/email.html:10
+msgid "Thanks for using our site!"
+msgstr "Obrigado por utilizar o nosso site!"
+
+#: templates/xadmin/auth/password_reset/email.html:12
+#, python-format
+msgid "The %(site_name)s team"
+msgstr "A equipe %(site_name)s"
+
+#: templates/xadmin/auth/password_reset/form.html:13
+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."
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr "Endereço de e-mail:"
+
+#: templates/xadmin/auth/password_reset/form.html:33
+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."
+
+#: templates/xadmin/auth/user/add_form.html:8
+msgid "Enter a username and password."
+msgstr "Forneça um nome de usuário e uma senha."
+
+#: 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] "Por favor corrija o erro abaixo."
+msgstr[1] "Por favor corrija os erros abaixo."
+
+#: templates/xadmin/auth/user/change_password.html:38
+msgid "Enter your new password."
+msgstr "Digite sua nova senha."
+
+#: templates/xadmin/auth/user/change_password.html:40
+#, python-format
+msgid "Enter a new password for the user <strong>%(username)s</strong>."
+msgstr "Digite uma nova senha para o usuário <strong>%(username)s</strong>."
+
+#: 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: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 "Pesquisar"
+
+#: templates/xadmin/blocks/comm.top.topnav.html:23
+msgid "Add"
+msgstr "Adicionar"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:9
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:26
+msgid "Prev step"
+msgstr "Passo anterior"
+
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:13
+#: templates/xadmin/blocks/model_form.submit_line.wizard.html:29
+msgid "Next step"
+msgstr "Próximo passo"
+
+#: 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 "Gravar"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:7
+msgid "Clean Bookmarks"
+msgstr "Limpar Favoritos"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:18
+msgid "No Bookmarks"
+msgstr "Sem Favoritos"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:22
+msgid "New Bookmark"
+msgstr "Novo Favorito"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:26
+msgid "Save current page as Bookmark"
+msgstr "Marcar a página atual como favorito"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:32
+msgid "Enter bookmark title"
+msgstr "Digite o título do favorito"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Waiting"
+msgstr "Aguardando"
+
+#: templates/xadmin/blocks/model_list.nav_menu.bookmarks.html:33
+msgid "Save Bookmark"
+msgstr "Marcar Favorito"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:4
+msgid "Filters"
+msgstr "Filtros"
+
+#: templates/xadmin/blocks/model_list.nav_menu.filters.html:8
+msgid "Clean Filters"
+msgstr "Limpar Filtros"
+
+#: templates/xadmin/blocks/model_list.results_bottom.actions.html:19
+msgid "Click here to select the objects across all pages"
+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 %(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"
+msgstr "Limpar Seleção"
+
+#: templates/xadmin/blocks/model_list.results_top.charts.html:4
+msgid "Charts"
+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: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: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:42
+msgid "Export all data."
+msgstr "Exportar todos os dados."
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+msgid "Close"
+msgstr "Fechar"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.layouts.html:4
+msgid "Layout"
+msgstr "Layout"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:8
+msgid "Clean Refresh"
+msgstr "Atualização Limpa"
+
+#: templates/xadmin/blocks/model_list.top_toolbar.refresh.html:14
+#, python-format
+msgid "Every %(t)s seconds"
+msgstr "A cada %(t)s segundos"
+
+#: 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"
+
+#: templates/xadmin/filters/char.html:13
+msgid "Enter"
+msgstr "Entrar"
+
+#: templates/xadmin/filters/date.html:10 templates/xadmin/filters/date.html:13
+msgid "Choice Date"
+msgstr "Data Escolhida"
+
+#: templates/xadmin/filters/date.html:18
+msgid "YY"
+msgstr "YY"
+
+#: templates/xadmin/filters/date.html:19
+msgid "year"
+msgstr "ano"
+
+#: templates/xadmin/filters/date.html:22
+msgid "MM"
+msgstr "MM"
+
+#: templates/xadmin/filters/date.html:23
+msgid "month"
+msgstr "mês"
+
+#: templates/xadmin/filters/date.html:26
+msgid "DD"
+msgstr "DD"
+
+#: templates/xadmin/filters/date.html:27
+msgid "day"
+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:24
+#: templates/xadmin/filters/number.html:37
+msgid "Apply"
+msgstr "Aplicar"
+
+#: templates/xadmin/filters/date.html:34
+msgid "Date Range"
+msgstr "Intervalo de Datas"
+
+#: templates/xadmin/filters/date.html:41
+msgid "Select Date"
+msgstr "Selecionar Data"
+
+#: templates/xadmin/filters/date.html:42
+msgid "From"
+msgstr "De"
+
+#: templates/xadmin/filters/date.html:44
+msgid "To"
+msgstr "Para"
+
+#: 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"
+
+#: templates/xadmin/filters/number.html:17
+#: templates/xadmin/filters/number.html:25
+#: templates/xadmin/filters/number.html:33
+msgid "Enter Number"
+msgstr "Digite o Número"
+
+#: templates/xadmin/filters/rel.html:3
+#, python-format
+msgid " By %(filter_title)s "
+msgstr " Por %(filter_title)s "
+
+#: templates/xadmin/forms/transfer.html:4
+msgid "Available"
+msgstr "Disponível"
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Click to choose all at once."
+msgstr "Clique para selecionar tudo de uma só vez."
+
+#: templates/xadmin/forms/transfer.html:12
+msgid "Choose all"
+msgstr "Escolher tudo"
+
+#: templates/xadmin/forms/transfer.html:16
+msgid "Choose"
+msgstr "Escolher"
+
+#: templates/xadmin/forms/transfer.html:19
+#: templates/xadmin/widgets/base.html:40
+msgid "Remove"
+msgstr "Remover"
+
+#: templates/xadmin/forms/transfer.html:23
+msgid "Chosen"
+msgstr "Escolhido"
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Click to remove all chosen at once."
+msgstr "Clique para remover todos os escolhidos de uma vez."
+
+#: templates/xadmin/forms/transfer.html:27
+msgid "Remove all"
+msgstr "Remover tudo"
+
+#: templates/xadmin/includes/pagination.html:9
+msgid "Show all"
+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:31
+msgid "Saving.."
+msgstr "Salvando..."
+
+#: templates/xadmin/includes/submit_line.html:17
+msgid "Save as new"
+msgstr "Gravar como novo"
+
+#: templates/xadmin/includes/submit_line.html:18
+msgid "Save and add another"
+msgstr "Gravar e adicionar outro"
+
+#: templates/xadmin/includes/submit_line.html:19
+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:93
+msgid "Delete"
+msgstr "Excluir"
+
+#: 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 "Alterar múltiplos objetos"
+
+#: 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] "Alterar um %(objects_name)s"
+msgstr[1] "Alterar lote %(counter)s %(objects_name)s"
+
+#: templates/xadmin/views/batch_change_form.html:38
+msgid "Change Multiple"
+msgstr "Alterar Múltiplos"
+
+#: templates/xadmin/views/dashboard.html:15
+#: templates/xadmin/views/dashboard.html:22
+#: templates/xadmin/views/dashboard.html:23
+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."
+
+#: templates/xadmin/views/logged_out.html:16
+msgid "Logout Success"
+msgstr "Saída com Sucesso"
+
+#: templates/xadmin/views/logged_out.html:17
+msgid "Thanks for spending some quality time with the Web site today."
+msgstr "Obrigado por gastar algum tempo de qualidade com o site hoje."
+
+#: templates/xadmin/views/logged_out.html:19
+msgid "Close Window"
+msgstr "Fechar Janela"
+
+#: templates/xadmin/views/logged_out.html:20
+msgid "Log in again"
+msgstr "Entrar novamente"
+
+#: templates/xadmin/views/login.html:39 views/website.py:38
+msgid "Please Login"
+msgstr "Por Favor Autentique-se"
+
+#: templates/xadmin/views/login.html:52
+msgid "Username"
+msgstr "Nome de Usuário"
+
+#: templates/xadmin/views/login.html:64
+msgid "Password"
+msgstr "Senha"
+
+#: templates/xadmin/views/login.html:75
+msgid "log in"
+msgstr "Entrar"
+
+#: templates/xadmin/views/model_dashboard.html:26
+#: templates/xadmin/views/model_detail.html:25
+msgid "Edit"
+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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_delete_confirm.html:34
+#: templates/xadmin/views/model_delete_selected_confirm.html:49
+msgid "Yes, I'm sure"
+msgstr "Sim, tenho certeza"
+
+#: templates/xadmin/views/model_delete_confirm.html:35
+#: templates/xadmin/views/model_delete_selected_confirm.html:50
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: templates/xadmin/views/model_delete_selected_confirm.html:10
+msgid "Delete multiple objects"
+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:"
+
+#: 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:"
+
+#: 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:"
+
+#: templates/xadmin/views/model_history.html:26
+msgid "Diff"
+msgstr "Comparar"
+
+#: templates/xadmin/views/model_history.html:27
+#: templates/xadmin/views/recover_list.html:25
+msgid "Date/time"
+msgstr "Data/Hora"
+
+#: templates/xadmin/views/model_history.html:28
+msgid "User"
+msgstr "Usuário"
+
+#: templates/xadmin/views/model_history.html:29
+msgid "Comment"
+msgstr "Comentário"
+
+#: templates/xadmin/views/model_history.html:54
+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."
+
+#: templates/xadmin/views/model_list.html:29
+#, python-format
+msgid "Add %(name)s"
+msgstr "Adicionar %(name)s"
+
+#: templates/xadmin/views/model_list.html:39
+#, fuzzy
+msgid "Columns"
+msgstr "Colunas"
+
+#: templates/xadmin/views/model_list.html:42
+msgid "Restore Selected"
+msgstr "Restaurar Selecionados"
+
+#: templates/xadmin/views/model_list.html:147
+#: templates/xadmin/widgets/list.html:33
+msgid "Empty list"
+msgstr "Limpar lista"
+
+#: templates/xadmin/views/recover_form.html:20
+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."
+
+#: templates/xadmin/views/recover_list.html:39
+msgid "There are no deleted objects to recover."
+msgstr "Não há objetos excluídos para recuperar."
+
+#: templates/xadmin/views/revision_diff.html:12
+#: templates/xadmin/views/revision_diff.html:17
+#, python-format
+msgid "Diff %(verbose_name)s"
+msgstr "Comparar %(verbose_name)s"
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr "Campo"
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr "Versão A"
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr "Versão B"
+
+#: templates/xadmin/views/revision_diff.html:39
+msgid "Revert to"
+msgstr "Reverter para"
+
+#: templates/xadmin/views/revision_diff.html:40
+#: templates/xadmin/views/revision_diff.html:41
+msgid "Revert"
+msgstr "Reverter"
+
+#: templates/xadmin/views/revision_form.html:16
+#, python-format
+msgid "Revert %(verbose_name)s"
+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."
+
+#: templates/xadmin/views/revision_form.html:27
+msgid "Revert this revision"
+msgstr "Reverter esta revisão"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Success"
+msgstr "Sucesso"
+
+#: templates/xadmin/widgets/addform.html:14
+msgid "Add success, click <a id='change-link'>edit</a> to edit."
+msgstr "Sucesso na adição, clique <a id='change-link'>editar</a> para editar."
+
+#: templates/xadmin/widgets/addform.html:17
+msgid "Quick Add"
+msgstr "Adição Rápida"
+
+#: templates/xadmin/widgets/base.html:31
+msgid "Widget Options"
+msgstr "Opções do Widget"
+
+#: templates/xadmin/widgets/base.html:42
+msgid "Save changes"
+msgstr "Gravar alterações"
+
+#: views/base.py:315
+msgid "Django Xadmin"
+msgstr "Django Xadmin"
+
+#: views/base.py:316
+msgid "my-company.inc"
+msgstr ""
+
+#: views/dashboard.py:186
+msgid "Widget ID"
+msgstr "ID do Widget"
+
+#: views/dashboard.py:187
+msgid "Widget Title"
+msgstr "Título do Widget"
+
+#: 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."
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr "Conteúdo HTML"
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr "Modelo Alvo"
+
+#: 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:371
+msgid "Quick Buttons"
+msgstr "Botões Rápidos"
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr "Widget de listagem de Qualquer Objeto"
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr "Widget de adição de qualquer objeto."
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr "Painel"
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr "%s Painel"
+
+#: 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:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr "Outros Campos"
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr "%s Detalhes"
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr "Você pode editar novamente abaixo."
+
+#: 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:471
+#, python-format
+msgid "Change %s"
+msgstr "Alterar %s"
+
+#: 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:165
+#, fuzzy, python-format
+msgid "The %s was changed successfully."
+msgstr "%(name)s \"%(obj)s\" alterado(a) com sucesso."
+
+#: views/list.py:199
+msgid "Database error"
+msgstr "Erro da base de dados"
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr "Lista %s"
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr "Classificação Ascendente"
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr "Classificação Descendente"
+
+#: 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"

二进制
extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/djangojs.mo


+ 71 - 0
extra_apps/xadmin/locale/pt_BR/LC_MESSAGES/djangojs.po

@@ -0,0 +1,71 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# korndorfer <codigo.aberto@dorfer.com.br>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: korndorfer <codigo.aberto@dorfer.com.br>\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/xadmin/language/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] "%(sel)s de %(cnt)s selecionado"
+msgstr[1] "%(sel)s de %(cnt)s selecionados"
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr "Novo Item"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "Domingo Segunda Terça Quarta Quinta Sexta Sábado Domingo"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "Dom Seg Ter Qua Qui Sex Sáb Dom"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+msgid "Su Mo Tu We Th Fr Sa Su"
+msgstr "Do Sg Te Qa Qi Sx Sa Do"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:35
+msgid ""
+"January February March April May June July August September October November"
+" December"
+msgstr "Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "Hoje"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr "%a %d %b %Y %T %Z"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "AM PM"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "am pm"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

二进制
extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/django.mo


+ 1438 - 0
extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/django.po

@@ -0,0 +1,1438 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Translators:
+# crazyzubr <hjcnbckfd@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-07-20 13:28+0800\n"
+"PO-Revision-Date: 2013-12-28 19:36+0000\n"
+"Last-Translator: crazyzubr <hjcnbckfd@gmail.com>\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"
+
+#: 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:160 plugins/export.py:165
+msgid "Yes"
+msgstr "Да"
+
+#: filters.py:161 plugins/export.py:165
+msgid "No"
+msgstr "Нет"
+
+#: filters.py:175
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: filters.py:267
+msgid "Any date"
+msgstr "Любая дата"
+
+#: filters.py:268
+msgid "Has date"
+msgstr ""
+
+#: filters.py:271
+msgid "Has no date"
+msgstr ""
+
+#: filters.py:274 widgets.py:30
+msgid "Today"
+msgstr "Сегодня"
+
+#: filters.py:278
+msgid "Past 7 days"
+msgstr "За последние 7 дней"
+
+#: filters.py:282
+msgid "This month"
+msgstr "В этом месяце"
+
+#: 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 ""
+"Пожалуйста, введите корректные имя пользователя и пароль для аккаунта. Оба "
+"поля могут быть чувствительны к регистру."
+
+#: 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 ""
+
+#: models.py:48
+msgid "Title"
+msgstr "Заголовок"
+
+#: models.py:49 models.py:88 models.py:107 models.py:149
+msgid "user"
+msgstr ""
+
+#: models.py:50
+msgid "Url Name"
+msgstr ""
+
+#: models.py:52
+msgid "Query String"
+msgstr "Строка запроса"
+
+#: models.py:53
+msgid "Is Shared"
+msgstr ""
+
+#: models.py:66 plugins/bookmark.py:50 plugins/bookmark.py:180
+msgid "Bookmark"
+msgstr "Закладка"
+
+#: models.py:67
+msgid "Bookmarks"
+msgstr "Закладки"
+
+#: models.py:89
+msgid "Settings Key"
+msgstr ""
+
+#: models.py:90
+msgid "Settings Content"
+msgstr ""
+
+#: models.py:102
+msgid "User Setting"
+msgstr ""
+
+#: models.py:103
+msgid "User Settings"
+msgstr ""
+
+#: models.py:108
+msgid "Page"
+msgstr "Страница"
+
+#: models.py:109 views/dashboard.py:82 views/dashboard.py:92
+msgid "Widget Type"
+msgstr "Тип виджета"
+
+#: models.py:110 views/dashboard.py:83
+msgid "Widget Params"
+msgstr "Параметры виджета"
+
+#: models.py:137
+msgid "User Widget"
+msgstr ""
+
+#: models.py:138
+msgid "User Widgets"
+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 ""
+
+#: 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: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:110 views/delete.py:70
+#, python-format
+msgid "Cannot delete %(name)s"
+msgstr "Не удается удалить %(name)s"
+
+#: plugins/actions.py:112 views/delete.py:73
+msgid "Are you sure?"
+msgstr "Вы уверены?"
+
+#: plugins/actions.py:158
+#, python-format
+msgid "%(total_count)s selected"
+msgid_plural "All %(total_count)s selected"
+msgstr[0] "Выбран %(total_count)s"
+msgstr[1] "Выбраны все %(total_count)s"
+msgstr[2] "Выбраны все %(total_count)s"
+
+#: plugins/actions.py:162
+#, python-format
+msgid "0 of %(cnt)s selected"
+msgstr "Выбрано 0 объектов из %(cnt)s "
+
+#: 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"
+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
+#, python-format
+msgid "Can edit %s"
+msgstr ""
+
+#: 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 ""
+
+#: 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:167
+msgid "Change Password"
+msgstr "Изменить пароль"
+
+#: plugins/auth.py:198
+#, python-format
+msgid "Change password: %s"
+msgstr "Изменить пароль: %s"
+
+#: plugins/auth.py:223 plugins/auth.py:255
+msgid "Password changed successfully."
+msgstr "Пароль успешно изменен"
+
+#: 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"
+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 ""
+
+#: plugins/batch.py:89
+#, python-format
+msgid "Successfully change %(count)d %(items)s."
+msgstr ""
+
+#: plugins/batch.py:138
+#, python-format
+msgid "Batch change %s"
+msgstr ""
+
+#: plugins/bookmark.py:173
+msgid "bookmark"
+msgstr ""
+
+#: plugins/bookmark.py:176
+msgid "Bookmark Widget, can show user's bookmark list data in widget."
+msgstr ""
+
+#: plugins/chart.py:25
+msgid "Show models simple chart."
+msgstr ""
+
+#: plugins/chart.py:51
+#, python-format
+msgid "%s Charts"
+msgstr ""
+
+#: plugins/comments.py:33
+msgid "Metadata"
+msgstr ""
+
+#: plugins/comments.py:60
+msgid "flagged"
+msgid_plural "flagged"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:61
+msgid "Flag selected comments"
+msgstr ""
+
+#: plugins/comments.py:66
+msgid "approved"
+msgid_plural "approved"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:67
+msgid "Approve selected comments"
+msgstr ""
+
+#: plugins/comments.py:72
+msgid "removed"
+msgid_plural "removed"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/comments.py:73
+msgid "Remove selected comments"
+msgstr ""
+
+#: plugins/comments.py:86
+#, python-format
+msgid "1 comment was successfully %(action)s."
+msgid_plural "%(count)s comments were successfully %(action)s."
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: plugins/details.py:52 views/list.py:578
+#, python-format
+msgid "Details of %s"
+msgstr "Детали %s"
+
+#: plugins/editable.py:46
+#, python-format
+msgid "Enter %s"
+msgstr ""
+
+#: 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:98 plugins/export.py:135
+msgid "Sheet"
+msgstr "Лист"
+
+#: plugins/filters.py:133 plugins/quickfilter.py:141
+#, python-format
+msgid "<b>Filtering error:</b> %s"
+msgstr ""
+
+#: 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:16
+msgid "Table"
+msgstr ""
+
+#: plugins/layout.py:22
+msgid "Thumbnails"
+msgstr ""
+
+#: plugins/passwords.py:64
+msgid "Forgotten your password or username?"
+msgstr ""
+
+#: plugins/quickform.py:79
+#, python-format
+msgid "Create New %s"
+msgstr ""
+
+#: plugins/relate.py:104
+msgid "Related Objects"
+msgstr "Связанные объекты"
+
+#: 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 ""
+
+#: plugins/themes.py:48
+msgid "Default bootstrap theme"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap2"
+msgstr ""
+
+#: plugins/themes.py:49
+msgid "Bootstrap 2.x theme"
+msgstr ""
+
+#: 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:106
+msgid "Initial version."
+msgstr ""
+
+#: plugins/xversion.py:108
+msgid "Change version."
+msgstr ""
+
+#: plugins/xversion.py:110
+msgid "Revert version."
+msgstr ""
+
+#: plugins/xversion.py:112
+msgid "Rercover version."
+msgstr ""
+
+#: plugins/xversion.py:114
+#, python-format
+msgid "Deleted %(verbose_name)s."
+msgstr ""
+
+#: plugins/xversion.py:127 templates/xadmin/views/recover_form.html:26
+msgid "Recover"
+msgstr ""
+
+#: 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: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:238
+#, python-format
+msgid "Change history: %s"
+msgstr ""
+
+#: plugins/xversion.py:288
+msgid "Must select two versions."
+msgstr "Необходимо выбрать две версии."
+
+#: plugins/xversion.py:296
+msgid "Please select two different versions."
+msgstr "Пожалуйста, выберите две различные версии."
+
+#: plugins/xversion.py:383 plugins/xversion.py:500
+#, python-format
+msgid "Current: %s"
+msgstr ""
+
+#: plugins/xversion.py:424
+#, python-format
+msgid "Revert %s"
+msgstr ""
+
+#: plugins/xversion.py:440
+#, python-format
+msgid ""
+"The %(model)s \"%(name)s\" was reverted successfully. You may edit it again "
+"below."
+msgstr ""
+
+#: plugins/xversion.py:461
+#, python-format
+msgid "Recover %s"
+msgstr ""
+
+#: plugins/xversion.py:477
+#, python-format
+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: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/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:473
+msgid "Home"
+msgstr "Главная"
+
+#: templates/xadmin/500.html:8
+msgid "Server error"
+msgstr ""
+
+#: templates/xadmin/500.html:12
+msgid "Server error (500)"
+msgstr ""
+
+#: templates/xadmin/500.html:15
+msgid "Server Error <em>(500)</em>"
+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/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 ""
+
+#: 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 ""
+
+#: templates/xadmin/auth/password_reset/form.html:25
+msgid "E-mail address:"
+msgstr ""
+
+#: 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] "Пожалуйста, исправьте ошибку ниже."
+msgstr[1] "Пожалуйста, исправьте ошибки ниже."
+msgstr[2] "Пожалуйста, исправьте ошибки ниже."
+
+#: 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 <strong>%(username)s</strong>."
+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: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/comm.top.topnav.html:23
+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 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 ""
+
+#: 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
+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
+msgid "Export all data."
+msgstr ""
+
+#: templates/xadmin/blocks/model_list.top_toolbar.exports.html:46
+#: templates/xadmin/widgets/base.html:41
+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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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/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/includes/submit_line.html:24
+#: templates/xadmin/views/model_detail.html:28 views/delete.py:93
+msgid "Delete"
+msgstr ""
+
+#: templates/xadmin/views/app_index.html:13
+#, python-format
+msgid "%(name)s"
+msgstr ""
+
+#: 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] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: templates/xadmin/views/revision_diff.html:25
+msgid "Field"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:26
+msgid "Version A"
+msgstr ""
+
+#: templates/xadmin/views/revision_diff.html:27
+msgid "Version B"
+msgstr ""
+
+#: 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 ""
+
+#: 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 <a id='change-link'>edit</a> 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:315
+msgid "Django Xadmin"
+msgstr ""
+
+#: 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:252
+msgid "Html Content Widget, can write any html content in widget."
+msgstr ""
+
+#: views/dashboard.py:255
+msgid "Html Content"
+msgstr ""
+
+#: views/dashboard.py:318
+msgid "Target Model"
+msgstr ""
+
+#: views/dashboard.py:369
+msgid "Quick button Widget, quickly open any page."
+msgstr ""
+
+#: views/dashboard.py:371
+msgid "Quick Buttons"
+msgstr ""
+
+#: views/dashboard.py:416
+msgid "Any Objects list Widget."
+msgstr ""
+
+#: views/dashboard.py:456
+msgid "Add any model object Widget."
+msgstr ""
+
+#: views/dashboard.py:492
+msgid "Dashboard"
+msgstr ""
+
+#: views/dashboard.py:633
+#, python-format
+msgid "%s Dashboard"
+msgstr ""
+
+#: views/delete.py:103
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was deleted successfully."
+msgstr ""
+
+#: views/detail.py:173 views/edit.py:211 views/form.py:72
+msgid "Other Fields"
+msgstr ""
+
+#: views/detail.py:235
+#, python-format
+msgid "%s Detail"
+msgstr ""
+
+#: 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:425 views/edit.py:520
+msgid "You may edit it again below."
+msgstr ""
+
+#: views/edit.py:429 views/edit.py:523
+#, python-format
+msgid "You may add another %s below."
+msgstr ""
+
+#: views/edit.py:471
+#, python-format
+msgid "Change %s"
+msgstr "Изменить %s"
+
+#: views/edit.py:516
+#, python-format
+msgid "The %(name)s \"%(obj)s\" was changed successfully."
+msgstr ""
+
+#: views/form.py:165
+#, fuzzy, python-format
+msgid "The %s was changed successfully."
+msgstr "Пароль успешно изменен"
+
+#: views/list.py:199
+msgid "Database error"
+msgstr ""
+
+#: views/list.py:373
+#, python-format
+msgid "%s List"
+msgstr ""
+
+#: views/list.py:499
+msgid "Sort ASC"
+msgstr ""
+
+#: views/list.py:500
+msgid "Sort DESC"
+msgstr ""
+
+#: views/list.py:504
+msgid "Cancel Sort"
+msgstr ""
+
+#: views/website.py:16
+msgid "Main Dashboard"
+msgstr ""
+
+#: widgets.py:48
+msgid "Now"
+msgstr "Сейчас"

二进制
extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/djangojs.mo


+ 71 - 0
extra_apps/xadmin/locale/ru_RU/LC_MESSAGES/djangojs.po

@@ -0,0 +1,71 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-04-30 23:11+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\n"
+"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/xadmin/language/ru_RU/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru_RU\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"
+
+#: static/xadmin/js/xadmin.plugin.actions.js:20
+msgid "%(sel)s of %(cnt)s selected"
+msgid_plural "%(sel)s of %(cnt)s selected"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: static/xadmin/js/xadmin.plugin.revision.js:25
+msgid "New Item"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr ""

二进制
extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/django.mo


+ 1528 - 0
extra_apps/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 <sshwsfc@gmail.com>, 2013
+# sshwsfc <sshwsfc@gmail.com>, 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 <sshwsfc@gmail.com>\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 "<b>Filtering error:</b> %s"
+msgstr "<b>过滤器错误:</b> %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 "<h1>Imported file has a wrong encoding: %s</h1>"
+msgstr "<h1>导入文件编码错误: %s</h1>"
+
+#: .\plugins\importexport.py:229
+#, python-format
+msgid "<h1>%s encountered while trying to read file: %s</h1>"
+msgstr "<h1>%s读取文件是发生错误: %s</h1>"
+
+#: .\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 <em>(500)</em>"
+msgstr "服务器错误 <em>(500)</em>"
+
+#: .\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 <strong>%(username)s</strong>."
+msgstr "为用户 <strong>%(username)s</strong> 输入一个新的密码。"
+
+#: .\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 <a id='change-link'>edit</a> to edit."
+msgstr "添加成功,点击  <a id='change-link'>编辑</a> 可以继续修改该数据。"
+
+#: .\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 "现在"

二进制
extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.mo


+ 87 - 0
extra_apps/xadmin/locale/zh_Hans/LC_MESSAGES/djangojs.po

@@ -0,0 +1,87 @@
+# 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 <sshwsfc@gmail.com>, 2013
+msgid ""
+msgstr ""
+"Project-Id-Version: xadmin-core\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-05-22 16:02+0800\n"
+"PO-Revision-Date: 2013-11-20 12:41+0000\n"
+"Last-Translator: sshwsfc <sshwsfc@gmail.com>\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"
+
+#: 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"
+msgstr "新项目"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:32
+msgid "Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday"
+msgstr "星期日 星期一 星期二 星期三 星期四 星期五 星期六"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:33
+msgid "Sun Mon Tue Wed Thu Fri Sat Sun"
+msgstr "日 一 二 三 四 五 六"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:34
+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"
+msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:36
+msgid "Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"
+msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一 十二"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:37
+msgid "Today"
+msgstr "今天"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:38
+msgid "%a %d %b %Y %T %Z"
+msgstr ""
+
+#: static/xadmin/js/xadmin.widget.datetime.js:39
+msgid "AM PM"
+msgstr "上午 下午"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:40
+msgid "am pm"
+msgstr "上午 下午"
+
+#: static/xadmin/js/xadmin.widget.datetime.js:43
+msgid "%T"
+msgstr "%T"

+ 62 - 0
extra_apps/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',
+            },
+        ),
+    ]

+ 39 - 0
extra_apps/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',
+            },
+        ),
+    ]

+ 20 - 0
extra_apps/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'),
+        ),
+    ]

+ 0 - 0
extra_apps/xadmin/migrations/__init__.py


+ 190 - 0
extra_apps/xadmin/models.py

@@ -0,0 +1,190 @@
+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 _, ugettext
+from django.urls.base import reverse
+from django.core.serializers.json import DjangoJSONEncoder
+from django.db.models.base import ModelBase
+from django.utils.encoding import python_2_unicode_compatible, smart_text
+
+from django.db.models.signals import post_migrate
+from django.contrib.auth.models import Permission
+
+import datetime
+import decimal
+from xadmin.util import quote
+
+AUTH_USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User')
+
+
+def add_view_permissions(sender, **kwargs):
+    """
+    This syncdb hooks takes care of adding a view permission too all our
+    content types.
+    """
+    # for each of our content types
+    for content_type in ContentType.objects.all():
+        # build our permission slug
+        codename = "view_%s" % content_type.model
+
+        # if it doesn't exist..
+        if not Permission.objects.filter(content_type=content_type, codename=codename):
+            # add it
+            Permission.objects.create(content_type=content_type,
+                                      codename=codename,
+                                      name="Can view %s" % content_type.name)
+            # print "Added view permission for %s" % content_type.name
+
+# check for all our view permissions after a syncdb
+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, on_delete=models.CASCADE, verbose_name=_(u"user"), blank=True, null=True)
+    url_name = models.CharField(_(u'Url Name'), max_length=64)
+    content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
+    query = models.CharField(_(u'Query String'), max_length=1000, blank=True)
+    is_share = models.BooleanField(_(u'Is Shared'), default=False)
+
+    @property
+    def url(self):
+        base_url = reverse(self.url_name)
+        if self.query:
+            base_url = base_url + '?' + self.query
+        return base_url
+
+    def __str__(self):
+        return self.title
+
+    class Meta:
+        verbose_name = _(u'Bookmark')
+        verbose_name_plural = _('Bookmarks')
+
+
+class JSONEncoder(DjangoJSONEncoder):
+
+    def default(self, o):
+        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.model_name)
+        else:
+            try:
+                return super(JSONEncoder, self).default(o)
+            except Exception:
+                return smart_text(o)
+
+
+@python_2_unicode_compatible
+class UserSettings(models.Model):
+    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=_(u"user"))
+    key = models.CharField(_('Settings Key'), max_length=256)
+    value = models.TextField(_('Settings Content'))
+
+    def json_value(self):
+        return json.loads(self.value)
+
+    def set_json(self, obj):
+        self.value = json.dumps(obj, cls=JSONEncoder, ensure_ascii=False)
+
+    def __str__(self):
+        return "%s %s" % (self.user, self.key)
+
+    class Meta:
+        verbose_name = _(u'User Setting')
+        verbose_name_plural = _('User Settings')
+
+
+@python_2_unicode_compatible
+class UserWidget(models.Model):
+    user = models.ForeignKey(AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=_(u"user"))
+    page_id = models.CharField(_(u"Page"), max_length=256)
+    widget_type = models.CharField(_(u"Widget Type"), max_length=50)
+    value = models.TextField(_(u"Widget Params"))
+
+    def get_value(self):
+        value = json.loads(self.value)
+        value['id'] = self.id
+        value['type'] = self.widget_type
+        return value
+
+    def set_value(self, obj):
+        self.value = json.dumps(obj, cls=JSONEncoder, ensure_ascii=False)
+
+    def save(self, *args, **kwargs):
+        created = self.pk is None
+        super(UserWidget, self).save(*args, **kwargs)
+        if created:
+            try:
+                portal_pos = UserSettings.objects.get(
+                    user=self.user, key="dashboard:%s:pos" % self.page_id)
+                portal_pos.value = "%s,%s" % (self.pk, portal_pos.value) if portal_pos.value else self.pk
+                portal_pos.save()
+            except Exception:
+                pass
+
+    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)

+ 41 - 0
extra_apps/xadmin/plugins/__init__.py

@@ -0,0 +1,41 @@
+
+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 importlib import import_module
+    from django.conf import settings
+
+    exclude_plugins = getattr(settings, 'XADMIN_EXCLUDE_PLUGINS', [])
+
+    [import_module('xadmin.plugins.%s' % plugin) for plugin in PLUGINS if plugin not in exclude_plugins]

+ 316 - 0
extra_apps/xadmin/plugins/actions.py

@@ -0,0 +1,316 @@
+from collections import OrderedDict
+from django import forms, VERSION as django_version
+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 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, model_ngettext
+from xadmin.views import BaseAdminPlugin, ListAdminView
+from xadmin.views.base import filter_hook, ModelAdminView
+
+from xadmin import views
+
+ACTION_CHECKBOX_NAME = '_selected_action'
+checkbox = forms.CheckboxInput({'class': 'action-select'}, lambda value: False)
+
+
+def action_checkbox(obj):
+    return checkbox.render(ACTION_CHECKBOX_NAME, force_text(obj.pk))
+
+
+action_checkbox.short_description = mark_safe(
+    '<input type="checkbox" id="action-toggle" />')
+action_checkbox.allow_tags = True
+action_checkbox.allow_export = False
+action_checkbox.is_column = False
+
+
+class BaseActionView(ModelAdminView):
+    action_name = None
+    description = None
+    icon = 'fa fa-tasks'
+
+    model_perm = 'change'
+
+    @classmethod
+    def has_perm(cls, list_view):
+        return list_view.get_model_perms()[cls.model_perm]
+
+    def init_action(self, list_view):
+        self.list_view = list_view
+        self.admin_site = list_view.admin_site
+
+    @filter_hook
+    def do_action(self, queryset):
+        pass
+
+    def __init__(self, request, *args, **kwargs):
+        super().__init__(request, *args, **kwargs)
+        if django_version > (2, 0):
+            for model in self.admin_site._registry:
+                if not hasattr(self.admin_site._registry[model], 'has_delete_permission'):
+                    setattr(self.admin_site._registry[model], 'has_delete_permission', self.has_delete_permission)
+
+
+class DeleteSelectedAction(BaseActionView):
+
+    action_name = "delete_selected"
+    description = _(u'Delete selected %(verbose_name_plural)s')
+
+    delete_confirmation_template = None
+    delete_selected_confirmation_template = None
+
+    delete_models_batch = True
+
+    model_perm = 'delete'
+    icon = 'fa fa-times'
+
+    @filter_hook
+    def delete_models(self, queryset):
+        n = queryset.count()
+        if n:
+            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')
+
+    @filter_hook
+    def do_action(self, queryset):
+        # Check that the user has delete permission for the actual model
+        if not self.has_delete_permission():
+            raise PermissionDenied
+
+        # Populate deletable_objects, a data structure of all related objects that
+        # will also be deleted.
+
+        if django_version > (2, 1):
+            deletable_objects, model_count, perms_needed, protected = get_deleted_objects(
+                queryset, self.opts, self.admin_site)
+        else:
+            using = router.db_for_write(self.model)
+            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.
+        # Do the deletion and return a None to display the change list view again.
+        if self.request.POST.get('post'):
+            if perms_needed:
+                raise PermissionDenied
+            self.delete_models(queryset)
+            # Return None to display the change list page again.
+            return None
+
+        if len(queryset) == 1:
+            objects_name = force_text(self.opts.verbose_name)
+        else:
+            objects_name = force_text(self.opts.verbose_name_plural)
+
+        if perms_needed or protected:
+            title = _("Cannot delete %(name)s") % {"name": objects_name}
+        else:
+            title = _("Are you sure?")
+
+        context = self.get_context()
+        context.update({
+            "title": title,
+            "objects_name": objects_name,
+            "deletable_objects": [deletable_objects],
+            'queryset': queryset,
+            "perms_lacking": perms_needed,
+            "protected": protected,
+            "opts": self.opts,
+            "app_label": self.app_label,
+            'action_checkbox_name': ACTION_CHECKBOX_NAME,
+        })
+
+        # 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)
+
+
+class ActionPlugin(BaseAdminPlugin):
+
+    # Actions
+    actions = []
+    actions_selection_counter = True
+    global_actions = [DeleteSelectedAction]
+
+    def init_request(self, *args, **kwargs):
+        self.actions = self.get_actions()
+        return bool(self.actions)
+
+    def get_list_display(self, list_display):
+        if self.actions:
+            list_display.insert(0, 'action_checkbox')
+            self.admin_view.action_checkbox = action_checkbox
+        return list_display
+
+    def get_list_display_links(self, list_display_links):
+        if self.actions:
+            if len(list_display_links) == 1 and list_display_links[0] == 'action_checkbox':
+                return list(self.admin_view.list_display[1:2])
+        return list_display_links
+
+    def get_context(self, context):
+        if self.actions and self.admin_view.result_count:
+            av = self.admin_view
+            selection_note_all = ungettext('%(total_count)s selected',
+                                           'All %(total_count)s selected', av.result_count)
+
+            new_context = {
+                'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(av.result_list)},
+                'selection_note_all': selection_note_all % {'total_count': av.result_count},
+                'action_choices': self.get_action_choices(),
+                'actions_selection_counter': self.actions_selection_counter,
+            }
+            context.update(new_context)
+        return context
+
+    def post_response(self, response, *args, **kwargs):
+        request = self.admin_view.request
+        av = self.admin_view
+
+        # Actions with no confirmation
+        if self.actions and 'action' in request.POST:
+            action = request.POST['action']
+
+            if action not in self.actions:
+                msg = _("Items must be selected in order to perform "
+                        "actions on them. No items have been changed.")
+                av.message_user(msg)
+            else:
+                ac, name, description, icon = self.actions[action]
+                select_across = request.POST.get('select_across', False) == '1'
+                selected = request.POST.getlist(ACTION_CHECKBOX_NAME)
+
+                if not selected and not select_across:
+                    # Reminder that something needs to be selected or nothing will happen
+                    msg = _("Items must be selected in order to perform "
+                            "actions on them. No items have been changed.")
+                    av.message_user(msg)
+                else:
+                    queryset = av.list_queryset._clone()
+                    if not select_across:
+                        # Perform the action only on the selected objects
+                        queryset = av.list_queryset.filter(pk__in=selected)
+                    response = self.response_action(ac, queryset)
+                    # Actions may return an HttpResponse, which will be used as the
+                    # response from the POST. If not, we'll be a good little HTTP
+                    # citizen and redirect back to the changelist page.
+                    if isinstance(response, HttpResponse):
+                        return response
+                    else:
+                        return HttpResponseRedirect(request.get_full_path())
+        return response
+
+    def response_action(self, ac, queryset):
+        if isinstance(ac, type) and issubclass(ac, BaseActionView):
+            action_view = self.get_model_view(ac, self.admin_view.model)
+            action_view.init_action(self.admin_view)
+            return action_view.do_action(queryset)
+        else:
+            return ac(self.admin_view, self.request, queryset)
+
+    def get_actions(self):
+        if self.actions is None:
+            return OrderedDict()
+
+        actions = [self.get_action(action) for action in self.global_actions]
+
+        for klass in self.admin_view.__class__.mro()[::-1]:
+            class_actions = getattr(klass, 'actions', [])
+            if not class_actions:
+                continue
+            actions.extend(
+                [self.get_action(action) for action in class_actions])
+
+        # 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 OrderedDict keyed by name.
+        actions = OrderedDict([
+            (name, (ac, name, desc, icon))
+            for ac, name, desc, icon in actions
+        ])
+
+        return actions
+
+    def get_action_choices(self):
+        """
+        Return a list of choices for use in a form object.  Each choice is a
+        tuple (name, description).
+        """
+        choices = []
+        for ac, name, description, icon in self.actions.values():
+            choice = (name, description % model_format_dict(self.opts), icon)
+            choices.append(choice)
+        return choices
+
+    def get_action(self, action):
+        if isinstance(action, type) and issubclass(action, BaseActionView):
+            if not action.has_perm(self.admin_view):
+                return None
+            return action, getattr(action, 'action_name'), getattr(action, 'description'), getattr(action, 'icon')
+
+        elif callable(action):
+            func = action
+            action = action.__name__
+
+        elif hasattr(self.admin_view.__class__, action):
+            func = getattr(self.admin_view.__class__, action)
+
+        else:
+            return None
+
+        if hasattr(func, 'short_description'):
+            description = func.short_description
+        else:
+            description = capfirst(action.replace('_', ' '))
+
+        return func, action, description, getattr(func, 'icon', 'tasks')
+
+    # View Methods
+    def result_header(self, item, field_name, row):
+        if item.attr and field_name == 'action_checkbox':
+            item.classes.append("action-checkbox-column")
+        return item
+
+    def result_item(self, item, obj, field_name, row):
+        if item.field is None and field_name == u'action_checkbox':
+            item.classes.append("action-checkbox")
+        return item
+
+    # Media
+    def get_media(self, media):
+        if self.actions and self.admin_view.result_count:
+            media = media + self.vendor('xadmin.plugin.actions.js', 'xadmin.plugins.css')
+        return 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=get_context_dict(context)))
+
+
+site.register_plugin(ActionPlugin, ListAdminView)

+ 68 - 0
extra_apps/xadmin/plugins/aggregation.py

@@ -0,0 +1,68 @@
+from django.db.models import FieldDoesNotExist, Avg, Max, Min, Count, Sum
+from django.utils.translation import ugettext as _
+from django.forms import Media
+
+from xadmin.sites import site
+from xadmin.views import BaseAdminPlugin, ListAdminView
+
+from xadmin.views.list import ResultRow, ResultItem
+from xadmin.util import display_for_field
+
+AGGREGATE_METHODS = {
+    'min': Min, 'max': Max, 'avg': Avg, 'sum': Sum, 'count': Count
+}
+AGGREGATE_TITLE = {
+    'min': _('Min'), 'max': _('Max'), 'avg': _('Avg'), 'sum': _('Sum'), 'count': _('Count')
+}
+
+
+class AggregationPlugin(BaseAdminPlugin):
+
+    aggregate_fields = {}
+
+    def init_request(self, *args, **kwargs):
+        return bool(self.aggregate_fields)
+
+    def _get_field_aggregate(self, field_name, obj, row):
+        item = ResultItem(field_name, row)
+        item.classes = ['aggregate', ]
+        if field_name not in self.aggregate_fields:
+            item.text = ""
+        else:
+            try:
+                f = self.opts.get_field(field_name)
+                agg_method = self.aggregate_fields[field_name]
+                key = '%s__%s' % (field_name, agg_method)
+                if key not in obj:
+                    item.text = ""
+                else:
+                    item.text = display_for_field(obj[key], f)
+                    item.wraps.append('%%s<span class="aggregate_title label label-info">%s</span>' % AGGREGATE_TITLE[agg_method])
+                    item.classes.append(agg_method)
+            except FieldDoesNotExist:
+                item.text = ""
+
+        return item
+
+    def _get_aggregate_row(self):
+        queryset = self.admin_view.list_queryset._clone()
+        obj = queryset.aggregate(*[AGGREGATE_METHODS[method](field_name) for field_name, method in
+                                   self.aggregate_fields.items() if method in AGGREGATE_METHODS])
+
+        row = ResultRow()
+        row['is_display_first'] = False
+        row.cells = [self._get_field_aggregate(field_name, obj, row) for field_name in self.admin_view.list_display]
+        row.css_class = 'info aggregate'
+        return row
+
+    def results(self, rows):
+        if rows:
+            rows.append(self._get_aggregate_row())
+        return rows
+
+    # Media
+    def get_media(self, media):
+        return media + Media(css={'screen': [self.static('xadmin/css/xadmin.plugin.aggregation.css'), ]})
+
+
+site.register_plugin(AggregationPlugin, ListAdminView)

+ 99 - 0
extra_apps/xadmin/plugins/ajax.py

@@ -0,0 +1,99 @@
+from collections import OrderedDict
+from django.forms.utils import ErrorDict
+from django.utils.html import escape
+from django.utils.encoding import force_text
+from xadmin.sites import site
+from xadmin.views import BaseAdminPlugin, ListAdminView, ModelFormAdminView, DetailAdminView
+
+
+NON_FIELD_ERRORS = '__all__'
+
+
+class BaseAjaxPlugin(BaseAdminPlugin):
+
+    def init_request(self, *args, **kwargs):
+        return bool(self.request.is_ajax() or self.request.GET.get('_ajax'))
+
+
+class AjaxListPlugin(BaseAjaxPlugin):
+    
+    def get_list_display(self,list_display):
+        list_fields = [field for field in self.request.GET.get('_fields',"").split(",") 
+                                if field.strip() != ""]
+        if list_fields:
+            return list_fields
+        return 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_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
+                         enumerate(filter(lambda c:c.field_name in base_fields, r.cells))])
+                   for r in av.results()]
+
+        return self.render_response({'headers': headers, 'objects': objects, 'total_count': av.result_count, 'has_more': av.has_more})
+
+
+class JsonErrorDict(ErrorDict):
+
+    def __init__(self, errors, form):
+        super(JsonErrorDict, self).__init__(errors)
+        self.form = form
+
+    def as_json(self):
+        if not self:
+            return u''
+        return [{'id': self.form[k].auto_id if k != NON_FIELD_ERRORS else NON_FIELD_ERRORS, 'name': k, 'errors': v} for k, v in self.items()]
+
+
+class AjaxFormPlugin(BaseAjaxPlugin):
+
+    def post_response(self, __):
+        new_obj = self.admin_view.new_obj
+        return self.render_response({
+            'result': 'success',
+            'obj_id': new_obj.pk,
+            'obj_repr': str(new_obj),
+            'change_url': self.admin_view.model_admin_url('change', new_obj.pk),
+            'detail_url': self.admin_view.model_admin_url('detail', new_obj.pk)
+        })
+
+    def get_response(self, __):
+        if self.request.method.lower() != 'post':
+            return __()
+
+        result = {}
+        form = self.admin_view.form_obj
+        if form.is_valid():
+            result['result'] = 'success'
+        else:
+            result['result'] = 'error'
+            result['errors'] = JsonErrorDict(form.errors, form).as_json()
+
+        return self.render_response(result)
+
+
+class AjaxDetailPlugin(BaseAjaxPlugin):
+
+    def get_response(self, __):
+        if self.request.GET.get('_format') == 'html':
+            self.admin_view.detail_template = 'xadmin/views/quick_detail.html'
+            return __()
+
+        form = self.admin_view.form_obj
+        layout = form.helper.layout
+
+        results = []
+
+        for p, f in layout.get_field_names():
+            result = self.admin_view.get_field_result(f)
+            results.append((result.label, result.val))
+
+        return self.render_response(OrderedDict(results))
+
+site.register_plugin(AjaxListPlugin, ListAdminView)
+site.register_plugin(AjaxFormPlugin, ModelFormAdminView)
+site.register_plugin(AjaxDetailPlugin, DetailAdminView)

+ 269 - 0
extra_apps/xadmin/plugins/auth.py

@@ -0,0 +1,269 @@
+# coding=utf-8
+from django import forms
+from django.contrib.auth.forms import (UserCreationForm, UserChangeForm,
+                                       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
+from xadmin.views import BaseAdminPlugin, ModelFormAdminView, ModelAdminView, CommAdminView, csrf_protect_m
+
+User = get_user_model()
+
+ACTION_NAME = {
+    'add': _('Can add %s'),
+    'change': _('Can change %s'),
+    'edit': _('Can edit %s'),
+    'delete': _('Can delete %s'),
+    'view': _('Can view %s'),
+}
+
+
+def get_permission_name(p):
+    action = p.codename.split('_')[0]
+    if action in ACTION_NAME:
+        return ACTION_NAME[action] % str(p.content_type)
+    else:
+        return p.name
+
+
+class PermissionModelMultipleChoiceField(ModelMultipleChoiceField):
+
+    def label_from_instance(self, p):
+        return get_permission_name(p)
+
+
+class GroupAdmin(object):
+    search_fields = ('name',)
+    ordering = ('name',)
+    style_fields = {'permissions': 'm2m_transfer'}
+    model_icon = 'fa fa-group'
+
+    def get_field_attrs(self, db_field, **kwargs):
+        attrs = super(GroupAdmin, self).get_field_attrs(db_field, **kwargs)
+        if db_field.name == 'permissions':
+            attrs['form_class'] = PermissionModelMultipleChoiceField
+        return attrs
+
+
+class UserAdmin(object):
+    change_user_password_template = None
+    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
+    list_filter = ('is_staff', 'is_superuser', 'is_active')
+    search_fields = ('username', 'first_name', 'last_name', 'email')
+    ordering = ('username',)
+    style_fields = {'user_permissions': 'm2m_transfer'}
+    model_icon = 'fa fa-user'
+    relfield_style = 'fk-ajax'
+
+    def get_field_attrs(self, db_field, **kwargs):
+        attrs = super(UserAdmin, self).get_field_attrs(db_field, **kwargs)
+        if db_field.name == 'user_permissions':
+            attrs['form_class'] = PermissionModelMultipleChoiceField
+        return attrs
+
+    def get_model_form(self, **kwargs):
+        if self.org_obj is None:
+            self.form = UserCreationForm
+        else:
+            self.form = UserChangeForm
+        return super(UserAdmin, self).get_model_form(**kwargs)
+
+    def get_form_layout(self):
+        if self.org_obj:
+            self.form_layout = (
+                Main(
+                    Fieldset('',
+                             'username', 'password',
+                             css_class='unsort no_title'
+                             ),
+                    Fieldset(_('Personal info'),
+                             Row('first_name', 'last_name'),
+                             'email'
+                             ),
+                    Fieldset(_('Permissions'),
+                             'groups', 'user_permissions'
+                             ),
+                    Fieldset(_('Important dates'),
+                             'last_login', 'date_joined'
+                             ),
+                ),
+                Side(
+                    Fieldset(_('Status'),
+                             'is_active', 'is_staff', 'is_superuser',
+                             ),
+                )
+            )
+        return super(UserAdmin, self).get_form_layout()
+
+
+class PermissionAdmin(object):
+
+    def show_name(self, p):
+        return get_permission_name(p)
+    show_name.short_description = _('Permission Name')
+    show_name.is_column = True
+
+    model_icon = 'fa fa-lock'
+    list_display = ('show_name', )
+
+site.register(Group, GroupAdmin)
+site.register(User, UserAdmin)
+site.register(Permission, PermissionAdmin)
+
+
+class UserFieldPlugin(BaseAdminPlugin):
+
+    user_fields = []
+
+    def get_field_attrs(self, __, db_field, **kwargs):
+        if self.user_fields and db_field.name in self.user_fields:
+            return {'widget': forms.HiddenInput}
+        return __()
+
+    def get_form_datas(self, datas):
+        if self.user_fields and 'data' in datas:
+            if hasattr(datas['data'],'_mutable') and not datas['data']._mutable:
+                datas['data'] = datas['data'].copy()
+            for f in self.user_fields:
+                datas['data'][f] = self.user.id
+        return datas
+
+site.register_plugin(UserFieldPlugin, ModelFormAdminView)
+
+
+class ModelPermissionPlugin(BaseAdminPlugin):
+
+    user_can_access_owned_objects_only = False
+    user_owned_objects_field = 'user'
+
+    def queryset(self, qs):
+        if self.user_can_access_owned_objects_only and \
+                not self.user.is_superuser:
+            filters = {self.user_owned_objects_field: self.user}
+            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)
+
+
+class AccountMenuPlugin(BaseAdminPlugin):
+
+    def block_top_account_menu(self, context, nodes):
+        return '<li><a href="%s"><i class="fa fa-key"></i> %s</a></li>' % (self.get_admin_url('account_password'), _('Change Password'))
+
+site.register_plugin(AccountMenuPlugin, CommAdminView)
+
+
+class ChangePasswordView(ModelAdminView):
+    model = User
+    change_password_form = AdminPasswordChangeForm
+    change_user_password_template = None
+
+    @csrf_protect_m
+    def get(self, request, object_id):
+        if not self.has_change_permission(request):
+            raise PermissionDenied
+        self.obj = self.get_object(unquote(object_id))
+        self.form = self.change_password_form(self.obj)
+
+        return self.get_response()
+
+    def get_media(self):
+        media = super(ChangePasswordView, self).get_media()
+        media = media + self.vendor('xadmin.form.css', 'xadmin.page.form.js') + self.form.media
+        return media
+
+    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(smart_text(self.obj)),
+            'form': self.form,
+            'has_delete_permission': False,
+            'has_change_permission': True,
+            'has_view_permission': True,
+            'original': self.obj,
+        })
+        return context
+
+    def get_response(self):
+        return TemplateResponse(self.request, [
+            self.change_user_password_template or
+            'xadmin/auth/user/change_password.html'
+        ], self.get_context())
+
+    @method_decorator(sensitive_post_parameters())
+    @csrf_protect_m
+    def post(self, request, object_id):
+        if not self.has_change_permission(request):
+            raise PermissionDenied
+        self.obj = self.get_object(unquote(object_id))
+        self.form = self.change_password_form(self.obj, request.POST)
+
+        if self.form.is_valid():
+            self.form.save()
+            self.message_user(_('Password changed successfully.'), 'success')
+            return HttpResponseRedirect(self.model_admin_url('change', self.obj.pk))
+        else:
+            return self.get_response()
+
+
+class ChangeAccountPasswordView(ChangePasswordView):
+    change_password_form = PasswordChangeForm
+
+    @csrf_protect_m
+    def get(self, request):
+        self.obj = self.user
+        self.form = self.change_password_form(self.obj)
+
+        return self.get_response()
+
+    def get_context(self):
+        context = super(ChangeAccountPasswordView, self).get_context()
+        context.update({
+            'title': _('Change password'),
+            'account_view': True,
+        })
+        return context
+
+    @method_decorator(sensitive_post_parameters())
+    @csrf_protect_m
+    def post(self, request):
+        self.obj = self.user
+        self.form = self.change_password_form(self.obj, request.POST)
+
+        if self.form.is_valid():
+            self.form.save()
+            self.message_user(_('Password changed successfully.'), 'success')
+            return HttpResponseRedirect(self.get_admin_url('index'))
+        else:
+            return self.get_response()
+
+
+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')

+ 156 - 0
extra_apps/xadmin/plugins/batch.py

@@ -0,0 +1,156 @@
+
+import copy
+from django import forms
+from django.db import models
+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_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
+from xadmin.plugins.actions import BaseActionView, ACTION_CHECKBOX_NAME
+from xadmin.util import model_ngettext, vendor
+from xadmin.views.base import filter_hook
+from xadmin.views.edit import ModelFormAdminView
+
+BATCH_CHECKBOX_NAME = '_batch_change_fields'
+
+
+class ChangeFieldWidgetWrapper(forms.Widget):
+
+    def __init__(self, widget):
+        self.needs_multipart_form = widget.needs_multipart_form
+        self.attrs = widget.attrs
+        self.widget = widget
+
+    def __deepcopy__(self, memo):
+        obj = copy.copy(self)
+        obj.widget = copy.deepcopy(self.widget, memo)
+        obj.attrs = self.widget.attrs
+        memo[id(self)] = obj
+        return obj
+
+    @property
+    def media(self):
+        media = self.widget.media + vendor('xadmin.plugin.batch.js')
+        return media
+
+    def render(self, name, value, attrs=None):
+        output = []
+        is_required = self.widget.is_required
+        output.append(u'<label class="btn btn-info btn-xs">'
+            '<input type="checkbox" class="batch-field-checkbox" name="%s" value="%s"%s/> %s</label>' %
+            (BATCH_CHECKBOX_NAME, name, (is_required and ' checked="checked"' or ''), _('Change this field')))
+        output.extend([('<div class="control-wrap" style="margin-top: 10px;%s" id="id_%s_wrap_container">' %
+            ((not is_required and 'display: none;' or ''), name)),
+            self.widget.render(name, value, attrs), '</div>'])
+        return mark_safe(u''.join(output))
+
+    def build_attrs(self, extra_attrs=None, **kwargs):
+        "Helper function for building an attribute dictionary."
+        self.attrs = self.widget.build_attrs(extra_attrs=None, **kwargs)
+        return self.attrs
+
+    def value_from_datadict(self, data, files, name):
+        return self.widget.value_from_datadict(data, files, name)
+
+    def id_for_label(self, id_):
+        return self.widget.id_for_label(id_)
+
+class BatchChangeAction(BaseActionView):
+
+    action_name = "change_selected"
+    description = ugettext_lazy(
+        u'Batch Change selected %(verbose_name_plural)s')
+
+    batch_change_form_template = None
+
+    model_perm = 'change'
+
+    batch_fields = []
+
+    def change_models(self, queryset, cleaned_data):
+        n = queryset.count()
+
+        data = {}
+        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
+            data[f] = cleaned_data[f.name]
+
+        if n:
+            for obj in queryset:
+                for f, v in data.items():
+                    f.save_form_data(obj, v)
+                obj.save()
+            self.message_user(_("Successfully change %(count)d %(items)s.") % {
+                "count": n, "items": model_ngettext(self.opts, n)
+            }, 'success')
+
+    def get_change_form(self, is_post, fields):
+        edit_view = self.get_model_view(ModelFormAdminView, self.model)
+
+        def formfield_for_dbfield(db_field, **kwargs):
+            formfield = edit_view.formfield_for_dbfield(db_field, required=is_post, **kwargs)
+            formfield.widget = ChangeFieldWidgetWrapper(formfield.widget)
+            return formfield
+
+        defaults = {
+            "form": edit_view.form,
+            "fields": fields,
+            "formfield_callback": formfield_for_dbfield,
+        }
+        return modelform_factory(self.model, **defaults)
+
+    def do_action(self, queryset):
+        if not self.has_change_permission():
+            raise PermissionDenied
+
+        change_fields = [f for f in self.request.POST.getlist(BATCH_CHECKBOX_NAME) if f in self.batch_fields]
+
+        if change_fields and self.request.POST.get('post'):
+            self.form_obj = self.get_change_form(True, change_fields)(
+                data=self.request.POST, files=self.request.FILES)
+            if self.form_obj.is_valid():
+                self.change_models(queryset, self.form_obj.cleaned_data)
+                return None
+        else:
+            self.form_obj = self.get_change_form(False, self.batch_fields)()
+
+        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_text(self.opts.verbose_name)
+        else:
+            objects_name = force_text(self.opts.verbose_name_plural)
+
+        context = self.get_context()
+        context.update({
+            "title": _("Batch change %s") % objects_name,
+            'objects_name': objects_name,
+            'form': self.form_obj,
+            'queryset': queryset,
+            'count': count,
+            "opts": self.opts,
+            "app_label": self.app_label,
+            'action_checkbox_name': ACTION_CHECKBOX_NAME,
+        })
+
+        return TemplateResponse(self.request, self.batch_change_form_template or
+                                self.get_template_list('views/batch_change_form.html'), context)
+
+    @filter_hook
+    def get_media(self):
+        media = super(BatchChangeAction, self).get_media()
+        media = media + self.form_obj.media + self.vendor(
+            'xadmin.page.form.js', 'xadmin.form.css')
+        return media

+ 236 - 0
extra_apps/xadmin/plugins/bookmark.py

@@ -0,0 +1,236 @@
+
+from django.contrib.contenttypes.models import ContentType
+from django.urls.base 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.models import Bookmark
+
+csrf_protect_m = method_decorator(csrf_protect)
+
+
+class BookmarkPlugin(BaseAdminPlugin):
+
+    # [{'title': "Female", 'query': {'gender': True}, 'order': ('-age'), 'cols': ('first_name', 'age', 'phones'), 'search': 'Tom'}]
+    list_bookmarks = []
+    show_bookmarks = True
+
+    def has_change_permission(self, obj=None):
+        if not obj or self.user.is_superuser:
+            return True
+        else:
+            return obj.user == self.user
+
+    def get_context(self, context):
+        if not self.show_bookmarks:
+            return 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.model_name)
+        has_selected = False
+        menu_title = _(u"Bookmark")
+        list_base_url = reverse('xadmin:%s_%s_changelist' %
+                                model_info, current_app=self.admin_site.name)
+
+        # local bookmarks
+        for bk in self.list_bookmarks:
+            title = bk['title']
+            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:
+                params[COL_LIST_VAR] = '.'.join(bk['cols'])
+            if 'search' in bk:
+                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()))
+            ])
+
+            url = list_base_url + '?' + bk_qs
+            selected = (current_qs == bk_qs)
+
+            bookmarks.append(
+                {'title': title, 'selected': selected, 'url': url})
+            if selected:
+                menu_title = title
+                has_selected = True
+
+        content_type = ContentType.objects.get_for_model(self.model)
+        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
+        ).filter(Q(user=self.user) | Q(is_share=True))
+
+        for bk in bookmarks_queryset:
+            selected = (current_qs == bk.query)
+
+            if self.has_change_permission(bk):
+                change_or_detail = 'change'
+            else:
+                change_or_detail = 'detail'
+
+            bookmarks.append({'title': bk.title, 'selected': selected, 'url': bk.url, 'edit_url':
+                              reverse('xadmin:%s_%s_%s' % (bk_model_info[0], bk_model_info[1], change_or_detail),
+                                      args=(bk.id,))})
+            if selected:
+                menu_title = bk.title
+                has_selected = True
+
+        post_url = reverse('xadmin:%s_%s_bookmark' % model_info,
+                           current_app=self.admin_site.name)
+
+        new_context = {
+            'bk_menu_title': menu_title,
+            'bk_bookmarks': bookmarks,
+            'bk_current_qs': current_qs,
+            'bk_has_selected': has_selected,
+            'bk_list_base_url': list_base_url,
+            'bk_post_url': post_url,
+            'has_add_permission_bookmark': self.admin_view.request.user.has_perm('xadmin.add_bookmark'),
+            'has_change_permission_bookmark': self.admin_view.request.user.has_perm('xadmin.change_bookmark')
+        }
+        context.update(new_context)
+        return context
+
+    # Media
+    def get_media(self, media):
+        return media + self.vendor('xadmin.plugin.bookmark.js')
+
+    # 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=get_context_dict(context)))
+
+
+class BookmarkView(ModelAdminView):
+
+    @csrf_protect_m
+    @transaction.atomic
+    def post(self, request):
+        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),
+            title=request.POST[
+                'title'], user=self.user, query=request.POST.get('query', ''),
+            is_share=request.POST.get('is_share', 0), url_name=url_name)
+        bookmark.save()
+        content = {'title': bookmark.title, 'url': bookmark.url}
+        return self.render_response(content)
+
+
+class BookmarkAdmin(object):
+
+    model_icon = 'fa fa-book'
+    list_display = ('title', 'user', 'url_name', 'query')
+    list_display_links = ('title',)
+    user_fields = ['user']
+    hidden_menu = True
+
+    def queryset(self):
+        if self.user.is_superuser:
+            return Bookmark.objects.all()
+        return Bookmark.objects.filter(Q(user=self.user) | Q(is_share=True))
+
+    def get_list_display(self):
+        list_display = super(BookmarkAdmin, self).get_list_display()
+        if not self.user.is_superuser:
+            list_display.remove('user')
+        return list_display
+
+    def has_change_permission(self, obj=None):
+        if not obj or self.user.is_superuser:
+            return True
+        else:
+            return obj.user == self.user
+
+
+@widget_manager.register
+class BookmarkWidget(PartialBaseWidget):
+    widget_type = _('bookmark')
+    widget_icon = 'fa fa-bookmark'
+    description = _(
+        'Bookmark Widget, can show user\'s bookmark list data in widget.')
+    template = "xadmin/widgets/list.html"
+
+    bookmark = ModelChoiceField(
+        label=_('Bookmark'), queryset=Bookmark.objects.all(), required=False)
+
+    def setup(self):
+        BaseWidget.setup(self)
+
+        bookmark = self.cleaned_data['bookmark']
+        model = bookmark.content_type.model_class()
+        data = QueryDict(bookmark.query)
+        self.bookmark = bookmark
+
+        if not self.title:
+            self.title = smart_text(bookmark)
+
+        req = self.make_get_request("", data.items())
+        self.list_view = self.get_view_class(
+            ListAdminView, model, list_per_page=10, list_editable=[])(req)
+
+    def has_perm(self):
+        return True
+
+    def context(self, context):
+        list_view = self.list_view
+        list_view.make_result_list()
+
+        base_fields = list_view.base_list_display
+        if len(base_fields) > 5:
+            base_fields = base_fields[0:5]
+
+        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['result_count'] = list_view.result_count
+        context['page_url'] = self.bookmark.url
+
+site.register(Bookmark, BookmarkAdmin)
+site.register_plugin(BookmarkPlugin, ListAdminView)
+site.register_modelview(r'^bookmark/$', BookmarkView, name='%s_%s_bookmark')

部分文件因为文件数量过多而无法显示