Extending catalogue.
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 2 Nov 2020 12:17:52 +0000 (13:17 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Mon, 2 Nov 2020 12:17:52 +0000 (13:17 +0100)
19 files changed:
requirements/requirements.txt
src/catalogue/admin.py
src/catalogue/locale/pl/LC_MESSAGES/django.mo
src/catalogue/locale/pl/LC_MESSAGES/django.po
src/catalogue/migrations/0028_auto_20201102_1109.py [new file with mode: 0644]
src/catalogue/migrations/0029_auto_20201102_1315.py [new file with mode: 0644]
src/catalogue/models.py
src/cover/locale/pl/LC_MESSAGES/django.po
src/documents/locale/pl/LC_MESSAGES/django.po
src/dvcs/locale/pl/LC_MESSAGES/django.po
src/email_mangler/locale/pl/LC_MESSAGES/django.po
src/fileupload/locale/pl/LC_MESSAGES/django.po
src/redakcja/locale-contrib/pl/LC_MESSAGES/django.mo [new file with mode: 0644]
src/redakcja/locale-contrib/pl/LC_MESSAGES/django.po [new file with mode: 0644]
src/redakcja/locale/pl/LC_MESSAGES/django.po
src/redakcja/settings/__init__.py
src/toolbar/locale/pl/LC_MESSAGES/django.po
src/wiki/locale/pl/LC_MESSAGES/django.po
src/wiki_img/locale/pl/LC_MESSAGES/django.po

index 6f5cf03..031670a 100644 (file)
@@ -25,5 +25,6 @@ django-extensions==2.1.6
 django-bootstrap4==1.1.1    # +
 libsasscompiler==0.1.5
 django-debug-toolbar==2.2   # +
+django-admin-numeric-filter==0.1.6
 
 sentry-sdk==0.12.2
index a8fc82a..1bb7f83 100644 (file)
@@ -1,9 +1,9 @@
 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
-from collections import Counter
 from django.contrib import admin
 from django.utils.translation import gettext_lazy as _
+from admin_numeric_filter.admin import RangeNumericFilter, NumericFilterModelAdmin
 from fnpdjango.actions import export_as_csv_action
 from . import models
 from .wikidata import WikidataAdminMixin
@@ -30,7 +30,7 @@ class AuthorAdmin(WikidataAdminMixin, admin.ModelAdmin):
 admin.site.register(models.Author, AuthorAdmin)
 
 
-class BookAdmin(WikidataAdminMixin, admin.ModelAdmin):
+class BookAdmin(WikidataAdminMixin, NumericFilterModelAdmin):
     list_display = [
         "title",
         "authors_str",
@@ -40,10 +40,20 @@ class BookAdmin(WikidataAdminMixin, admin.ModelAdmin):
         "priority",
         "wikidata_link",
     ]
-    search_fields = ["title", "wikidata"]
+    search_fields = ["title", "wikidata", "authors__first_name", "authors__last_name", "translators__first_name", "translators__last_name"]
     autocomplete_fields = ["authors", "translators", "based_on", "collections", "epochs", "genres", "kinds"]
     prepopulated_fields = {"slug": ("title",)}
-    list_filter = ["language", "pd_year", "collections"]
+    list_filter = [
+            "language",
+            "based_on__language",
+            ("pd_year", RangeNumericFilter),
+            "collections",
+            "collections__category",
+            "epochs", "kinds", "genres",
+            "priority",
+            "authors__gender", "authors__nationality",
+            "translators__gender", "translators__nationality",
+        ]
     readonly_fields = ["wikidata_link", "estimated_costs"]
     actions = [export_as_csv_action()]
     fieldsets = [
@@ -107,6 +117,9 @@ class BookAdmin(WikidataAdminMixin, admin.ModelAdmin):
 admin.site.register(models.Book, BookAdmin)
 
 
+admin.site.register(models.CollectionCategory)
+
+
 class AuthorInline(admin.TabularInline):
     model = models.Author.collections.through
     autocomplete_fields = ["author"]
@@ -122,36 +135,24 @@ class CollectionAdmin(admin.ModelAdmin):
     autocomplete_fields = []
     prepopulated_fields = {"slug": ("name",)}
     search_fields = ["name"]
-    fields = ['name', 'slug', 'estimated_costs']
+    fields = ['name', 'slug', 'category', 'estimated_costs']
     readonly_fields = ['estimated_costs']
     inlines = [AuthorInline, BookInline]
 
     def estimated_costs(self, obj):
-        costs = Counter()
-        for book in obj.book_set.all():
-            for k, v in book.get_estimated_costs().items():
-                costs[k] += v or 0
-
-        for author in obj.author_set.all():
-            for book in author.book_set.all():
-                for k, v in book.get_estimated_costs().items():
-                    costs[k] += v or 0
-            for book in author.translated_book_set.all():
-                for k, v in book.get_estimated_costs().items():
-                    costs[k] += v or 0
-
         return "\n".join(
             "{}: {} zł".format(
                 work_type.name,
                 cost or '—'
             )
-            for work_type, cost in costs.items()
+            for work_type, cost in obj.get_estimated_costs().items()
         )
 
 
 admin.site.register(models.Collection, CollectionAdmin)
 
 
+
 class CategoryAdmin(admin.ModelAdmin):
     search_fields = ["name"]
 
index da3bb29..3c0c51d 100644 (file)
Binary files a/src/catalogue/locale/pl/LC_MESSAGES/django.mo and b/src/catalogue/locale/pl/LC_MESSAGES/django.mo differ
index 2bf5056..bdb2276 100644 (file)
@@ -7,8 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-10-27 14:25+0100\n"
-"PO-Revision-Date: 2020-10-27 14:25+0100\n"
+"PO-Revision-Date: 2020-11-02 12:54+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: pl\n"
@@ -20,93 +19,239 @@ msgstr ""
 "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
 "X-Generator: Poedit 2.3\n"
 
-#: catalogue/admin.py:49
+#: catalogue/admin.py:62
 msgid "Identification"
 msgstr "Identyfikacja"
 
-#: catalogue/admin.py:63
+#: catalogue/admin.py:76
 msgid "Features"
 msgstr "Cechy"
 
-#: catalogue/admin.py:73
+#: catalogue/admin.py:86
 msgid "Plan"
 msgstr "Plan"
 
-#: catalogue/models.py:26
+#: catalogue/models.py:15
+msgid "first name"
+msgstr "imię"
+
+#: catalogue/models.py:16
+msgid "last name"
+msgstr "nazwisko"
+
+#: catalogue/models.py:18
+msgid "name (de)"
+msgstr "nazwa (de)"
+
+#: catalogue/models.py:19
+msgid "name (lt)"
+msgstr "nazwa (lt)"
+
+#: catalogue/models.py:21
+msgid "gender"
+msgstr "płeć"
+
+#: catalogue/models.py:22
+msgid "nationality"
+msgstr "narodowość"
+
+#: catalogue/models.py:23
+msgid "year of death"
+msgstr "rok śmierci"
+
+#: catalogue/models.py:25
+msgid "status"
+msgstr "status"
+
+#: catalogue/models.py:29
 msgid "Alive"
 msgstr "Żyje"
 
-#: catalogue/models.py:27
+#: catalogue/models.py:30
 msgid "Dead"
 msgstr "Zmarły"
 
-#: catalogue/models.py:28
+#: catalogue/models.py:31
 msgid "Long dead"
 msgstr "Dawno zmarły"
 
-#: catalogue/models.py:29
+#: catalogue/models.py:32
 msgid "Unknown"
 msgstr "Nieznany"
 
-#: catalogue/models.py:41 catalogue/models.py:120
+#: catalogue/models.py:35 catalogue/models.py:126
+msgid "notes"
+msgstr "notatki"
+
+#: catalogue/models.py:36 catalogue/models.py:132
+msgid "gazeta link"
+msgstr "link do bazy gazety"
+
+#: catalogue/models.py:37
+msgid "culture.pl link"
+msgstr "link do bazy culture.pl"
+
+#: catalogue/models.py:39
+msgid "description"
+msgstr "opis"
+
+#: catalogue/models.py:40
+msgid "description (de)"
+msgstr "opis (de)"
+
+#: catalogue/models.py:41
+msgid "description (lt)"
+msgstr "opis (lt)"
+
+#: catalogue/models.py:44 catalogue/models.py:128 catalogue/models.py:253
+msgid "priority"
+msgstr "priorytet"
+
+#: catalogue/models.py:45 catalogue/models.py:129
 msgid "Low"
 msgstr "Niski"
 
-#: catalogue/models.py:41 catalogue/models.py:120
+#: catalogue/models.py:45 catalogue/models.py:129
 msgid "Medium"
 msgstr "Średni"
 
-#: catalogue/models.py:41 catalogue/models.py:120
+#: catalogue/models.py:45 catalogue/models.py:129
 msgid "High"
 msgstr "Wysoki"
 
-#: catalogue/models.py:46
+#: catalogue/models.py:47 catalogue/models.py:133 catalogue/models.py:208
+#: catalogue/models.py:260
+msgid "collections"
+msgstr "kolekcje"
+
+#: catalogue/models.py:50
 msgid "author"
 msgstr "autor"
 
-#: catalogue/models.py:47
+#: catalogue/models.py:51 catalogue/models.py:107
 msgid "authors"
 msgstr "autorzy"
 
-#: catalogue/models.py:83
+#: catalogue/models.py:78 catalogue/models.py:185 catalogue/models.py:201
+#: catalogue/models.py:233
+msgid "name"
+msgstr "nazwa"
+
+#: catalogue/models.py:89
 msgid "epoch"
 msgstr "epoka"
 
-#: catalogue/models.py:84
+#: catalogue/models.py:90 catalogue/models.py:115 catalogue/models.py:257
 msgid "epochs"
 msgstr "epoki"
 
-#: catalogue/models.py:89
+#: catalogue/models.py:95
 msgid "genre"
 msgstr "gatunek"
 
-#: catalogue/models.py:90
+#: catalogue/models.py:96 catalogue/models.py:117 catalogue/models.py:259
 msgid "genres"
 msgstr "gatunki"
 
-#: catalogue/models.py:95
+#: catalogue/models.py:101
 msgid "kind"
 msgstr "rodzaj"
 
-#: catalogue/models.py:96
+#: catalogue/models.py:102 catalogue/models.py:116 catalogue/models.py:258
 msgid "kinds"
 msgstr "rodzaje"
 
-#: catalogue/models.py:130
+#: catalogue/models.py:113
+msgid "translators"
+msgstr "tłumacze"
+
+#: catalogue/models.py:118
+msgid "title"
+msgstr "tytuł"
+
+#: catalogue/models.py:119
+msgid "language"
+msgstr "język"
+
+#: catalogue/models.py:122
+msgid "based on"
+msgstr "oparte na"
+
+#: catalogue/models.py:124
+msgid "scans source"
+msgstr "źródło skanów"
+
+#: catalogue/models.py:125
+msgid "text source"
+msgstr "źródło tekstu"
+
+#: catalogue/models.py:131
+msgid "year of entry into PD"
+msgstr "rok wstąpienia do DP"
+
+#: catalogue/models.py:135
+msgid "estimated number of characters"
+msgstr "szacowana liczba znaków"
+
+#: catalogue/models.py:136
+msgid "estimated number of verses"
+msgstr "szacowana liczba wersów"
+
+#: catalogue/models.py:137
+msgid "source of estimates"
+msgstr "źródło szacunków"
+
+#: catalogue/models.py:143
 msgid "book"
 msgstr "książka"
 
-#: catalogue/models.py:131
+#: catalogue/models.py:144
 msgid "books"
 msgstr "książki"
 
-#: catalogue/models.py:170
+#: catalogue/models.py:186
+msgid "parent"
+msgstr "rodzic"
+
+#: catalogue/models.py:190
+msgid "collection category"
+msgstr "kategoria kolekcji"
+
+#: catalogue/models.py:191
+msgid "collection categories"
+msgstr "kategorie kolekcji"
+
+#: catalogue/models.py:203
+msgid "category"
+msgstr "kategoria"
+
+#: catalogue/models.py:207
 msgid "collection"
 msgstr "kolekcja"
 
-#: catalogue/models.py:171
-msgid "collections"
-msgstr "kolekcje"
+#: catalogue/models.py:237 catalogue/models.py:256
+msgid "work type"
+msgstr "rodzaj pracy"
+
+#: catalogue/models.py:238
+msgid "work types"
+msgstr "rodzaje prac"
+
+#: catalogue/models.py:254
+msgid "per normalized page"
+msgstr "za stronę maszynopisu"
+
+#: catalogue/models.py:255
+msgid "per verse"
+msgstr "za wers"
+
+#: catalogue/models.py:264
+msgid "work rate"
+msgstr "stawka"
+
+#: catalogue/models.py:265
+msgid "work rates"
+msgstr "stawki"
 
 #: catalogue/templates/catalogue/author_detail.html:7
 #: catalogue/templates/catalogue/author_detail.html:13
diff --git a/src/catalogue/migrations/0028_auto_20201102_1109.py b/src/catalogue/migrations/0028_auto_20201102_1109.py
new file mode 100644 (file)
index 0000000..e852877
--- /dev/null
@@ -0,0 +1,31 @@
+# Generated by Django 3.0.4 on 2020-11-02 11:09
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalogue', '0027_auto_20201027_1501'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='CollectionCategory',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('name', models.CharField(max_length=255)),
+                ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='catalogue.CollectionCategory')),
+            ],
+            options={
+                'verbose_name': 'collection category',
+                'verbose_name_plural': 'collection categories',
+            },
+        ),
+        migrations.AddField(
+            model_name='collection',
+            name='category',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='catalogue.CollectionCategory'),
+        ),
+    ]
diff --git a/src/catalogue/migrations/0029_auto_20201102_1315.py b/src/catalogue/migrations/0029_auto_20201102_1315.py
new file mode 100644 (file)
index 0000000..eb8b024
--- /dev/null
@@ -0,0 +1,280 @@
+# Generated by Django 3.0.4 on 2020-11-02 13:15
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalogue', '0028_auto_20201102_1109'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='collection',
+            options={'ordering': ('category', 'name'), 'verbose_name': 'collection', 'verbose_name_plural': 'collections'},
+        ),
+        migrations.AlterModelOptions(
+            name='collectioncategory',
+            options={'ordering': ('parent__name', 'name'), 'verbose_name': 'collection category', 'verbose_name_plural': 'collection categories'},
+        ),
+        migrations.AlterModelOptions(
+            name='workrate',
+            options={'ordering': ('priority',), 'verbose_name': 'work rate', 'verbose_name_plural': 'work rates'},
+        ),
+        migrations.AlterModelOptions(
+            name='worktype',
+            options={'ordering': ('name',), 'verbose_name': 'work type', 'verbose_name_plural': 'work types'},
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='collections',
+            field=models.ManyToManyField(blank=True, to='catalogue.Collection', verbose_name='collections'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='culturepl_link',
+            field=models.CharField(blank=True, max_length=255, verbose_name='culture.pl link'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='description',
+            field=models.TextField(blank=True, verbose_name='description'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='description_de',
+            field=models.TextField(blank=True, verbose_name='description (de)'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='description_lt',
+            field=models.TextField(blank=True, verbose_name='description (lt)'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='first_name',
+            field=models.CharField(blank=True, max_length=255, verbose_name='first name'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='gazeta_link',
+            field=models.CharField(blank=True, max_length=255, verbose_name='gazeta link'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='gender',
+            field=models.CharField(blank=True, max_length=255, verbose_name='gender'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='last_name',
+            field=models.CharField(blank=True, max_length=255, verbose_name='last name'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='name_de',
+            field=models.CharField(blank=True, max_length=255, verbose_name='name (de)'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='name_lt',
+            field=models.CharField(blank=True, max_length=255, verbose_name='name (lt)'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='nationality',
+            field=models.CharField(blank=True, max_length=255, verbose_name='nationality'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='notes',
+            field=models.TextField(blank=True, verbose_name='notes'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='priority',
+            field=models.PositiveSmallIntegerField(choices=[(0, 'Low'), (1, 'Medium'), (2, 'High')], default=0, verbose_name='priority'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='status',
+            field=models.PositiveSmallIntegerField(blank=True, choices=[(1, 'Alive'), (2, 'Dead'), (3, 'Long dead'), (4, 'Unknown')], null=True, verbose_name='status'),
+        ),
+        migrations.AlterField(
+            model_name='author',
+            name='year_of_death',
+            field=models.SmallIntegerField(blank=True, null=True, verbose_name='year of death'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='authors',
+            field=models.ManyToManyField(blank=True, to='catalogue.Author', verbose_name='authors'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='based_on',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='translation', to='catalogue.Book', verbose_name='based on'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='collections',
+            field=models.ManyToManyField(blank=True, to='catalogue.Collection', verbose_name='collections'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='epochs',
+            field=models.ManyToManyField(blank=True, to='catalogue.Epoch', verbose_name='epochs'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='estimate_source',
+            field=models.CharField(blank=True, max_length=2048, verbose_name='source of estimates'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='estimated_chars',
+            field=models.IntegerField(blank=True, null=True, verbose_name='estimated number of characters'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='estimated_verses',
+            field=models.IntegerField(blank=True, null=True, verbose_name='estimated number of verses'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='gazeta_link',
+            field=models.CharField(blank=True, max_length=255, verbose_name='gazeta link'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='genres',
+            field=models.ManyToManyField(blank=True, to='catalogue.Genre', verbose_name='genres'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='kinds',
+            field=models.ManyToManyField(blank=True, to='catalogue.Kind', verbose_name='kinds'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='language',
+            field=models.CharField(blank=True, max_length=255, verbose_name='language'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='notes',
+            field=models.TextField(blank=True, verbose_name='notes'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='pd_year',
+            field=models.IntegerField(blank=True, null=True, verbose_name='year of entry into PD'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='priority',
+            field=models.PositiveSmallIntegerField(choices=[(0, 'Low'), (1, 'Medium'), (2, 'High')], default=0, verbose_name='priority'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='scans_source',
+            field=models.CharField(blank=True, max_length=255, verbose_name='scans source'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='text_source',
+            field=models.CharField(blank=True, max_length=255, verbose_name='text source'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='title',
+            field=models.CharField(blank=True, max_length=255, verbose_name='title'),
+        ),
+        migrations.AlterField(
+            model_name='book',
+            name='translators',
+            field=models.ManyToManyField(blank=True, related_name='translated_book_set', related_query_name='translated_book', to='catalogue.Author', verbose_name='translators'),
+        ),
+        migrations.AlterField(
+            model_name='collection',
+            name='category',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='catalogue.CollectionCategory', verbose_name='category'),
+        ),
+        migrations.AlterField(
+            model_name='collection',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+        migrations.AlterField(
+            model_name='collectioncategory',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+        migrations.AlterField(
+            model_name='collectioncategory',
+            name='parent',
+            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='children', to='catalogue.CollectionCategory', verbose_name='parent'),
+        ),
+        migrations.AlterField(
+            model_name='epoch',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+        migrations.AlterField(
+            model_name='genre',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+        migrations.AlterField(
+            model_name='kind',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='collections',
+            field=models.ManyToManyField(blank=True, to='catalogue.Collection', verbose_name='collections'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='epochs',
+            field=models.ManyToManyField(blank=True, to='catalogue.Epoch', verbose_name='epochs'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='genres',
+            field=models.ManyToManyField(blank=True, to='catalogue.Genre', verbose_name='genres'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='kinds',
+            field=models.ManyToManyField(blank=True, to='catalogue.Kind', verbose_name='kinds'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='per_normpage',
+            field=models.DecimalField(blank=True, decimal_places=2, max_digits=6, null=True, verbose_name='per normalized page'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='per_verse',
+            field=models.DecimalField(blank=True, decimal_places=2, max_digits=6, null=True, verbose_name='per verse'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='priority',
+            field=models.IntegerField(default=1, verbose_name='priority'),
+        ),
+        migrations.AlterField(
+            model_name='workrate',
+            name='work_type',
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='catalogue.WorkType', verbose_name='work type'),
+        ),
+        migrations.AlterField(
+            model_name='worktype',
+            name='name',
+            field=models.CharField(max_length=255, verbose_name='name'),
+        ),
+    ]
index ce7a572..cd64f84 100644 (file)
@@ -1,3 +1,4 @@
+from collections import Counter
 import decimal
 from django.apps import apps
 from django.db import models
@@ -11,16 +12,17 @@ from .wikidata import WikidataMixin
 
 class Author(WikidataMixin, models.Model):
     slug = models.SlugField(max_length=255, null=True, blank=True, unique=True)
-    first_name = models.CharField(max_length=255, blank=True)
-    last_name = models.CharField(max_length=255, blank=True)
+    first_name = models.CharField(_("first name"), max_length=255, blank=True)
+    last_name = models.CharField(_("last name"), max_length=255, blank=True)
 
-    name_de = models.CharField(max_length=255, blank=True)
-    name_lt = models.CharField(max_length=255, blank=True)
+    name_de = models.CharField(_("name (de)"), max_length=255, blank=True)
+    name_lt = models.CharField(_("name (lt)"), max_length=255, blank=True)
 
-    gender = models.CharField(max_length=255, blank=True)
-    nationality = models.CharField(max_length=255, blank=True)
-    year_of_death = models.SmallIntegerField(null=True, blank=True)
+    gender = models.CharField(_("gender"), max_length=255, blank=True)
+    nationality = models.CharField(_("nationality"), max_length=255, blank=True)
+    year_of_death = models.SmallIntegerField(_("year of death"), null=True, blank=True)
     status = models.PositiveSmallIntegerField(
+        _("status"), 
         null=True,
         blank=True,
         choices=[
@@ -30,18 +32,19 @@ class Author(WikidataMixin, models.Model):
             (4, _("Unknown")),
         ],
     )
-    notes = models.TextField(blank=True)
-    gazeta_link = models.CharField(max_length=255, blank=True)
-    culturepl_link = models.CharField(max_length=255, blank=True)
+    notes = models.TextField(_("notes"), blank=True)
+    gazeta_link = models.CharField(_("gazeta link"), max_length=255, blank=True)
+    culturepl_link = models.CharField(_("culture.pl link"), max_length=255, blank=True)
 
-    description = models.TextField(blank=True)
-    description_de = models.TextField(blank=True)
-    description_lt = models.TextField(blank=True)
+    description = models.TextField(_("description"), blank=True)
+    description_de = models.TextField(_("description (de)"), blank=True)
+    description_lt = models.TextField(_("description (lt)"), blank=True)
 
     priority = models.PositiveSmallIntegerField(
+        _("priority"), 
         default=0, choices=[(0, _("Low")), (1, _("Medium")), (2, _("High"))]
     )
-    collections = models.ManyToManyField("Collection", blank=True)
+    collections = models.ManyToManyField("Collection", blank=True, verbose_name=_("collections"))
 
     class Meta:
         verbose_name = _('author')
@@ -72,7 +75,7 @@ class Author(WikidataMixin, models.Model):
 
 
 class Category(WikidataMixin, models.Model):
-    name = models.CharField(max_length=255)
+    name = models.CharField(_("name"), max_length=255)
     slug = models.SlugField(max_length=255, unique=True)
 
     class Meta:
@@ -101,34 +104,37 @@ class Kind(Category):
 
 class Book(WikidataMixin, models.Model):
     slug = models.SlugField(max_length=255, blank=True, null=True, unique=True)
-    authors = models.ManyToManyField(Author, blank=True)
+    authors = models.ManyToManyField(Author, blank=True, verbose_name=_("authors"))
     translators = models.ManyToManyField(
         Author,
         related_name="translated_book_set",
         related_query_name="translated_book",
         blank=True,
+        verbose_name=_("translators")
     )
-    epochs = models.ManyToManyField(Epoch, blank=True)
-    kinds = models.ManyToManyField(Kind, blank=True)
-    genres = models.ManyToManyField(Genre, blank=True)
-    title = models.CharField(max_length=255, blank=True)
-    language = models.CharField(max_length=255, blank=True)
+    epochs = models.ManyToManyField(Epoch, blank=True, verbose_name=_("epochs"))
+    kinds = models.ManyToManyField(Kind, blank=True, verbose_name=_("kinds"))
+    genres = models.ManyToManyField(Genre, blank=True, verbose_name=_("genres"))
+    title = models.CharField(_("title"), max_length=255, blank=True)
+    language = models.CharField(_("language"), max_length=255, blank=True)
     based_on = models.ForeignKey(
-        "self", models.PROTECT, related_name="translation", null=True, blank=True
+        "self", models.PROTECT, related_name="translation", null=True, blank=True,
+        verbose_name=_("based on")
     )
-    scans_source = models.CharField(max_length=255, blank=True)
-    text_source = models.CharField(max_length=255, blank=True)
-    notes = models.TextField(blank=True)
+    scans_source = models.CharField(_("scans source"), max_length=255, blank=True)
+    text_source = models.CharField(_("text source"), max_length=255, blank=True)
+    notes = models.TextField(_("notes"), blank=True)
     priority = models.PositiveSmallIntegerField(
+        _("priority"),
         default=0, choices=[(0, _("Low")), (1, _("Medium")), (2, _("High"))]
     )
-    pd_year = models.IntegerField(null=True, blank=True)
-    gazeta_link = models.CharField(max_length=255, blank=True)
-    collections = models.ManyToManyField("Collection", blank=True)
+    pd_year = models.IntegerField(_('year of entry into PD'), null=True, blank=True)
+    gazeta_link = models.CharField(_("gazeta link"), max_length=255, blank=True)
+    collections = models.ManyToManyField("Collection", blank=True, verbose_name=_("collections"))
 
-    estimated_chars = models.IntegerField(null=True, blank=True)
-    estimated_verses = models.IntegerField(null=True, blank=True)
-    estimate_source = models.CharField(max_length=2048, blank=True)
+    estimated_chars = models.IntegerField(_("estimated number of characters"), null=True, blank=True)
+    estimated_verses = models.IntegerField(_("estimated number of verses"), null=True, blank=True)
+    estimate_source = models.CharField(_("source of estimates"), max_length=2048, blank=True)
 
     objects = UnrelatedManager()
 
@@ -175,21 +181,62 @@ class Book(WikidataMixin, models.Model):
         }
 
 
+class CollectionCategory(models.Model):
+    name = models.CharField(_("name"), max_length=255)
+    parent = models.ForeignKey('self', models.SET_NULL, related_name='children', null=True, blank=True, verbose_name=_("parent"))
+
+    class Meta:
+        ordering = ('parent__name', 'name')
+        verbose_name = _('collection category')
+        verbose_name_plural = _('collection categories')
+
+    def __str__(self):
+        if self.parent:
+            return f"{self.parent} / {self.name}"
+        else:
+            return self.name
+
+
 class Collection(models.Model):
-    name = models.CharField(max_length=255)
+    name = models.CharField(_("name"), max_length=255)
     slug = models.SlugField(max_length=255, unique=True)
+    category = models.ForeignKey(CollectionCategory, models.SET_NULL, null=True, blank=True, verbose_name=_("category"))
 
     class Meta:
+        ordering = ('category', 'name')
         verbose_name = _('collection')
         verbose_name_plural = _('collections')
 
     def __str__(self):
-        return self.name
+        if self.category:
+            return f"{self.category} / {self.name}"
+        else:
+            return self.name
+
+    def get_estimated_costs(self):
+        costs = Counter()
+        for book in self.book_set.all():
+            for k, v in book.get_estimated_costs().items():
+                costs[k] += v or 0
+
+        for author in self.author_set.all():
+            for book in author.book_set.all():
+                for k, v in book.get_estimated_costs().items():
+                    costs[k] += v or 0
+            for book in author.translated_book_set.all():
+                for k, v in book.get_estimated_costs().items():
+                    costs[k] += v or 0
+        return costs
 
 
 class WorkType(models.Model):
-    name = models.CharField(max_length=255)
+    name = models.CharField(_("name"), max_length=255)
 
+    class Meta:
+        ordering = ('name',)
+        verbose_name = _('work type')
+        verbose_name_plural = _('work types')
+    
     def get_rate_for(self, book):
         for workrate in self.workrate_set.all():
             if workrate.matches(book):
@@ -203,17 +250,19 @@ class WorkType(models.Model):
 
 
 class WorkRate(models.Model):
-    priority = models.IntegerField(default=1)
-    per_normpage = models.DecimalField(decimal_places=2, max_digits=6, null=True, blank=True)
-    per_verse = models.DecimalField(decimal_places=2, max_digits=6, null=True, blank=True)
-    work_type = models.ForeignKey(WorkType, models.CASCADE)
-    epochs = models.ManyToManyField(Epoch, blank=True)
-    kinds = models.ManyToManyField(Kind, blank=True)
-    genres = models.ManyToManyField(Genre, blank=True)
-    collections = models.ManyToManyField(Collection, blank=True)
+    priority = models.IntegerField(_("priority"), default=1)
+    per_normpage = models.DecimalField(_("per normalized page"), decimal_places=2, max_digits=6, null=True, blank=True)
+    per_verse = models.DecimalField(_("per verse"), decimal_places=2, max_digits=6, null=True, blank=True)
+    work_type = models.ForeignKey(WorkType, models.CASCADE, verbose_name=_("work type"))
+    epochs = models.ManyToManyField(Epoch, blank=True, verbose_name=_("epochs"))
+    kinds = models.ManyToManyField(Kind, blank=True, verbose_name=_("kinds"))
+    genres = models.ManyToManyField(Genre, blank=True, verbose_name=_("genres"))
+    collections = models.ManyToManyField(Collection, blank=True, verbose_name=_("collections"))
 
     class Meta:
         ordering = ('priority',)
+        verbose_name = _('work rate')
+        verbose_name_plural = _('work rates')
 
     def matches(self, book):
         for category in 'epochs', 'kinds', 'genres', 'collections':
index 67547ce..d40bd54 100644 (file)
@@ -7,10 +7,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-02-25 13:29+0100\n"
 "PO-Revision-Date: 2014-02-25 13:30+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\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"
@@ -18,83 +18,102 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: forms.py:29
+#: cover/forms.py:34
 #, python-format
 msgid "Image <a href=\"%(url)s\">already in repository</a>."
 msgstr "Obraz <a href=\"%(url)s\">jest już w repozytorium</a>."
 
-#: forms.py:60
+#: cover/forms.py:44
+#, fuzzy, python-format
+#| msgid "Image <a href=\"%(url)s\">already in repository</a>."
+msgid "Image <a href=\"%s\">already in repository</a>"
+msgstr "Obraz <a href=\"%(url)s\">jest już w repozytorium</a>."
+
+#: cover/forms.py:53
+msgid "No image specified"
+msgstr ""
+
+#: cover/forms.py:61 cover/forms.py:78
+#, python-format
+msgid "Image too small: %sx%s, minimal dimensions %sx%s"
+msgstr ""
+
+#: cover/forms.py:95
 msgid "Flickr URL"
 msgstr "URL z Flickra"
 
-#: models.py:19
+#: cover/models.py:23
 msgid "title"
 msgstr "tytuł"
 
-#: models.py:20
+#: cover/models.py:24
 msgid "author"
 msgstr "autor"
 
-#: models.py:21
+#: cover/models.py:25
 msgid "license name"
 msgstr "nazwa licencji"
 
-#: models.py:22
+#: cover/models.py:26
 msgid "license URL"
 msgstr "URL licencji"
 
-#: models.py:23
+#: cover/models.py:27
 msgid "source URL"
 msgstr "URL źródła"
 
-#: models.py:24
+#: cover/models.py:28
 msgid "image download URL"
 msgstr "URL pliku do pobrania"
 
-#: models.py:25
+#: cover/models.py:30
 msgid "file"
 msgstr "plik"
 
-#: models.py:28
+#: cover/models.py:33
 msgid "cover image"
 msgstr "obrazek na okładkę"
 
-#: models.py:29
+#: cover/models.py:34
 msgid "cover images"
 msgstr "obrazki na okładki"
 
-#: templates/cover/add_image.html:33 templates/cover/add_image.html.py:62
+#: cover/templates/cover/add_image.html:5
+#: cover/templates/cover/add_image.html:10
+#: cover/templates/cover/add_image.html:27
 msgid "Add image"
 msgstr "Dodaj obrazek"
 
-#: templates/cover/add_image.html:40
+#: cover/templates/cover/add_image.html:19
 msgid "Load from Flickr"
 msgstr "Pobierz z Flickra"
 
-#: templates/cover/image_detail.html:7
+#: cover/templates/cover/image_detail.html:6
+#: cover/templates/cover/image_detail.html:9
 msgid "Cover image"
 msgstr "Obrazek na okładkę"
 
-#: templates/cover/image_detail.html:23
+#: cover/templates/cover/image_detail.html:25
 msgid "source"
 msgstr "źródło"
 
-#: templates/cover/image_detail.html:35
+#: cover/templates/cover/image_detail.html:36
 msgid "Change"
 msgstr "Zmień"
 
-#: templates/cover/image_detail.html:41
+#: cover/templates/cover/image_detail.html:42
 msgid "Used in:"
 msgstr "Użyte w:"
 
-#: templates/cover/image_detail.html:49
+#: cover/templates/cover/image_detail.html:50
 msgid "None"
 msgstr "Brak"
 
-#: templates/cover/image_list.html:7
+#: cover/templates/cover/image_list.html:5
+#: cover/templates/cover/image_list.html:10
 msgid "Cover images"
 msgstr "Obrazki na okładki"
 
-#: templates/cover/image_list.html:10
+#: cover/templates/cover/image_list.html:15
 msgid "Add new"
 msgstr "Dodaj nowy"
index 3a6596d..f1b4912 100644 (file)
@@ -7,7 +7,6 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Platforma Redakcyjna\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-04-20 16:53+0200\n"
 "PO-Revision-Date: 2020-04-20 16:54+0200\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org."
@@ -20,352 +19,365 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 2.2.4\n"
 
-#: forms.py:41
+#: documents/forms.py:41
 msgid "Text file must be UTF-8 encoded."
 msgstr "Plik powinien mieć kodowanie UTF-8."
 
-#: forms.py:57
+#: documents/forms.py:57
 msgid "Title not set"
 msgstr "Brak tytułu"
 
-#: forms.py:60
+#: documents/forms.py:60
 msgid "Slug not set"
 msgstr "Brak slugu"
 
-#: forms.py:63
+#: documents/forms.py:63
 msgid "You must either enter text or upload a file"
 msgstr "Proszę wpisać tekst albo wybrać plik do załadowania"
 
-#: forms.py:72
+#: documents/forms.py:72
 msgid "ZIP file"
 msgstr "Plik ZIP"
 
-#: forms.py:73
+#: documents/forms.py:73
 msgid "Directories are documents in chunks"
 msgstr "Katalogi zawierają dokumenty w częściach"
 
-#: forms.py:97 forms.py:198
+#: documents/forms.py:97 documents/forms.py:198
 msgid "Assigned to"
 msgstr "Przypisane do"
 
-#: forms.py:118 forms.py:132
+#: documents/forms.py:118 documents/forms.py:132
 msgid "Chunk with this slug already exists"
 msgstr "Część z tym slugiem już istnieje"
 
-#: forms.py:141
+#: documents/forms.py:141
 msgid "Append to"
 msgstr "Dołącz do"
 
-#: models/book.py:27 models/chunk.py:21 models/image.py:20
+#: documents/models/book.py:27 documents/models/chunk.py:21
+#: documents/models/image.py:20
 msgid "title"
 msgstr "tytuł"
 
-#: models/book.py:28 models/chunk.py:22 models/image.py:21
+#: documents/models/book.py:28 documents/models/chunk.py:22
+#: documents/models/image.py:21
 msgid "slug"
 msgstr "slug"
 
-#: models/book.py:29 models/image.py:22
+#: documents/models/book.py:29 documents/models/image.py:22
 msgid "public"
 msgstr "publiczna"
 
-#: models/book.py:30
+#: documents/models/book.py:30
 msgid "scan gallery name"
 msgstr "nazwa galerii skanów"
 
-#: models/book.py:34
+#: documents/models/book.py:34
 msgid "parent"
 msgstr "rodzic"
 
-#: models/book.py:35
+#: documents/models/book.py:35
 msgid "parent number"
 msgstr "numeracja rodzica"
 
-#: models/book.py:53 models/chunk.py:19 models/publish_log.py:15
+#: documents/models/book.py:53 documents/models/chunk.py:19
+#: documents/models/publish_log.py:15
 msgid "book"
 msgstr "książka"
 
-#: models/book.py:54 views.py:619
+#: documents/models/book.py:54 documents/views.py:619
 msgid "books"
 msgstr "książki"
 
-#: models/book.py:263
+#: documents/models/book.py:263
 msgid "No chunks in the book."
 msgstr "Książka nie ma części."
 
-#: models/book.py:267
+#: documents/models/book.py:267
 msgid "Not all chunks have publishable revisions."
 msgstr "Niektóre części nie są gotowe do publikacji."
 
-#: models/book.py:274 models/image.py:83
+#: documents/models/book.py:274 documents/models/image.py:83
 msgid "Invalid XML"
 msgstr "Nieprawidłowy XML"
 
-#: models/book.py:276 models/image.py:85
+#: documents/models/book.py:276 documents/models/image.py:85
 msgid "No Dublin Core found."
 msgstr "Brak sekcji Dublin Core."
 
-#: models/book.py:278 models/image.py:87
+#: documents/models/book.py:278 documents/models/image.py:87
 msgid "Invalid Dublin Core"
 msgstr "Nieprawidłowy Dublin Core"
 
-#: models/book.py:281 models/image.py:91
+#: documents/models/book.py:281 documents/models/image.py:91
 msgid "rdf:about is not"
 msgstr "rdf:about jest różny od"
 
-#: models/chunk.py:20
+#: documents/models/chunk.py:20
 msgid "number"
 msgstr "numer"
 
-#: models/chunk.py:23
+#: documents/models/chunk.py:23
 msgid "gallery start"
 msgstr "początek galerii"
 
-#: models/chunk.py:38
+#: documents/models/chunk.py:38
 msgid "chunk"
 msgstr "część"
 
-#: models/chunk.py:39
+#: documents/models/chunk.py:39
 msgid "chunks"
 msgstr "części"
 
-#: models/image.py:19 models/image.py:33 models/publish_log.py:43
+#: documents/models/image.py:19 documents/models/image.py:33
+#: documents/models/publish_log.py:43
 msgid "image"
 msgstr "obraz"
 
-#: models/image.py:34
+#: documents/models/image.py:34
 msgid "images"
 msgstr "obrazy"
 
-#: models/image.py:75
+#: documents/models/image.py:75
 msgid "There is no publishable revision"
 msgstr "Żadna wersja nie została oznaczona do publikacji."
 
-#: models/project.py:11
+#: documents/models/project.py:11
 msgid "name"
 msgstr "nazwa"
 
-#: models/project.py:12
+#: documents/models/project.py:12
 msgid "notes"
 msgstr "notatki"
 
-#: models/project.py:17 templates/documents/book_list/book_list.html:66
-#: templates/documents/image_table.html:60
+#: documents/models/project.py:17
+#: documents/templates/documents/book_list/book_list.html:66
+#: documents/templates/documents/image_table.html:60
 msgid "project"
 msgstr "projekt"
 
-#: models/project.py:18
+#: documents/models/project.py:18
 msgid "projects"
 msgstr "projekty"
 
-#: models/publish_log.py:16 models/publish_log.py:44
+#: documents/models/publish_log.py:16 documents/models/publish_log.py:44
 msgid "time"
 msgstr "czas"
 
-#: models/publish_log.py:17 models/publish_log.py:45
-#: templates/documents/wall.html:20
+#: documents/models/publish_log.py:17 documents/models/publish_log.py:45
+#: documents/templates/documents/wall.html:20
 msgid "user"
 msgstr "użytkownik"
 
-#: models/publish_log.py:22 models/publish_log.py:31
+#: documents/models/publish_log.py:22 documents/models/publish_log.py:31
 msgid "book publish record"
 msgstr "zapis publikacji książki"
 
-#: models/publish_log.py:23
+#: documents/models/publish_log.py:23
 msgid "book publish records"
 msgstr "zapisy publikacji książek"
 
-#: models/publish_log.py:32 models/publish_log.py:46
+#: documents/models/publish_log.py:32 documents/models/publish_log.py:46
 msgid "change"
 msgstr "zmiana"
 
-#: models/publish_log.py:36
+#: documents/models/publish_log.py:36
 msgid "chunk publish record"
 msgstr "zapis publikacji części"
 
-#: models/publish_log.py:37
+#: documents/models/publish_log.py:37
 msgid "chunk publish records"
 msgstr "zapisy publikacji części"
 
-#: models/publish_log.py:51
+#: documents/models/publish_log.py:51
 msgid "image publish record"
 msgstr "zapis publikacji obrazu"
 
-#: models/publish_log.py:52
+#: documents/models/publish_log.py:52
 msgid "image publish records"
 msgstr "zapisy publikacji obrazów"
 
-#: templates/documents/active_users_list.html:5
+#: documents/templates/documents/active_users_list.html:5
 msgid "Active users"
 msgstr "Aktywni użytkownicy"
 
-#: templates/documents/active_users_list.html:11
+#: documents/templates/documents/active_users_list.html:11
 msgid "Users active in the year"
 msgstr "Użytkownicy aktywni w roku"
 
-#: templates/documents/activity.html:6 templates/documents/activity.html:15
-#: templatetags/documents.py:30
+#: documents/templates/documents/activity.html:6
+#: documents/templates/documents/activity.html:15
+#: documents/templatetags/documents.py:30
 msgid "Activity"
 msgstr "Aktywność"
 
-#: templates/documents/base.html:13
+#: documents/templates/documents/base.html:13
 msgid "Platforma Redakcyjna"
 msgstr "Platforma Redakcyjna"
 
-#: templates/documents/book_append_to.html:5
-#: templates/documents/book_append_to.html:14
+#: documents/templates/documents/book_append_to.html:5
+#: documents/templates/documents/book_append_to.html:14
 msgid "Append book"
 msgstr "Dołącz książkę"
 
-#: templates/documents/book_detail.html:24
-#: templates/documents/book_edit.html:13 templates/documents/chunk_edit.html:22
-#: templates/documents/image_detail.html:22
+#: documents/templates/documents/book_detail.html:24
+#: documents/templates/documents/book_edit.html:13
+#: documents/templates/documents/chunk_edit.html:22
+#: documents/templates/documents/image_detail.html:22
 msgid "Save"
 msgstr "Zapisz"
 
-#: templates/documents/book_detail.html:31
+#: documents/templates/documents/book_detail.html:31
 msgid "Edit gallery"
 msgstr "Edytuj galerię"
 
-#: templates/documents/book_detail.html:34
+#: documents/templates/documents/book_detail.html:34
 msgid "Append to other book"
 msgstr "Dołącz do innej książki"
 
-#: templates/documents/book_detail.html:49
+#: documents/templates/documents/book_detail.html:53
 msgid "Chunks"
 msgstr "Części"
 
-#: templates/documents/book_detail.html:67
-#: templates/documents/image_detail.html:47 templatetags/wall.py:108
-#: templatetags/wall.py:129
+#: documents/templates/documents/book_detail.html:71
+#: documents/templates/documents/image_detail.html:47
+#: documents/templatetags/wall.py:108 documents/templatetags/wall.py:129
 msgid "Publication"
 msgstr "Publikacja"
 
-#: templates/documents/book_detail.html:85
-#: templates/documents/image_detail.html:51
+#: documents/templates/documents/book_detail.html:89
+#: documents/templates/documents/image_detail.html:51
 msgid "Last published"
 msgstr "Ostatnio opublikowano"
 
-#: templates/documents/book_detail.html:95
+#: documents/templates/documents/book_detail.html:99
 msgid "Full XML"
 msgstr "Pełny XML"
 
-#: templates/documents/book_detail.html:96
+#: documents/templates/documents/book_detail.html:100
 msgid "HTML version"
 msgstr "Wersja HTML"
 
-#: templates/documents/book_detail.html:97
+#: documents/templates/documents/book_detail.html:101
 msgid "TXT version"
 msgstr "Wersja TXT"
 
-#: templates/documents/book_detail.html:98
+#: documents/templates/documents/book_detail.html:102
 msgid "PDF version"
 msgstr "Wersja PDF"
 
-#: templates/documents/book_detail.html:99
+#: documents/templates/documents/book_detail.html:103
 msgid "PDF version for mobiles"
 msgstr "Wersja PDF na telefony"
 
-#: templates/documents/book_detail.html:100
+#: documents/templates/documents/book_detail.html:104
 msgid "EPUB version"
 msgstr "Wersja EPUB"
 
-#: templates/documents/book_detail.html:101
+#: documents/templates/documents/book_detail.html:105
 msgid "MOBI version"
 msgstr "Wersja MOBI"
 
-#: templates/documents/book_detail.html:115
-#: templates/documents/image_detail.html:70
+#: documents/templates/documents/book_detail.html:119
+#: documents/templates/documents/image_detail.html:70
 msgid "Publish"
 msgstr "Opublikuj"
 
-#: templates/documents/book_detail.html:119
-#: templates/documents/image_detail.html:74
+#: documents/templates/documents/book_detail.html:123
+#: documents/templates/documents/image_detail.html:74
 msgid "Log in to publish."
 msgstr "Zaloguj się, aby opublikować."
 
-#: templates/documents/book_detail.html:122
-#: templates/documents/image_detail.html:77
+#: documents/templates/documents/book_detail.html:126
+#: documents/templates/documents/image_detail.html:77
 msgid "This book can't be published yet, because:"
 msgstr "Ta książka nie może jeszcze zostać opublikowana. Powód:"
 
-#: templates/documents/book_edit.html:5
+#: documents/templates/documents/book_edit.html:5
 msgid "Edit book"
 msgstr "Edytuj książkę"
 
-#: templates/documents/book_html.html:12 templates/documents/book_text.html:15
+#: documents/templates/documents/book_html.html:12
+#: documents/templates/documents/book_text.html:15
 msgid "Table of contents"
 msgstr "Spis treści"
 
-#: templates/documents/book_html.html:13 templates/documents/book_text.html:17
+#: documents/templates/documents/book_html.html:13
+#: documents/templates/documents/book_text.html:17
 msgid "Edit. note"
 msgstr "Nota red."
 
-#: templates/documents/book_html.html:14
+#: documents/templates/documents/book_html.html:14
 msgid "Infobox"
 msgstr "Informacje"
 
-#: templates/documents/book_list/book.html:8
-#: templates/documents/book_list/book.html:35
+#: documents/templates/documents/book_list/book.html:8
+#: documents/templates/documents/book_list/book.html:35
 msgid "Book settings"
 msgstr "Ustawienia książki"
 
-#: templates/documents/book_list/book.html:9
-#: templates/documents/book_list/chunk.html:7
-#: templates/documents/chunk_edit.html:6 templates/documents/chunk_edit.html:12
+#: documents/templates/documents/book_list/book.html:9
+#: documents/templates/documents/book_list/chunk.html:7
+#: documents/templates/documents/chunk_edit.html:6
+#: documents/templates/documents/chunk_edit.html:12
 msgid "Chunk settings"
 msgstr "Ustawienia części"
 
-#: templates/documents/book_list/book.html:20
-#: templates/documents/book_list/book.html:42
-#: templates/documents/image_short.html:17 templatetags/book_list.py:82
-#: templatetags/book_list.py:150
+#: documents/templates/documents/book_list/book.html:20
+#: documents/templates/documents/book_list/book.html:42
+#: documents/templates/documents/image_short.html:17
+#: documents/templatetags/book_list.py:82
+#: documents/templatetags/book_list.py:150
 msgid "published"
 msgstr "opublikowane"
 
-#: templates/documents/book_list/book.html:23
-#: templates/documents/book_list/book.html:45
-#: templates/documents/image_short.html:20 templatetags/book_list.py:80
-#: templatetags/book_list.py:148
+#: documents/templates/documents/book_list/book.html:23
+#: documents/templates/documents/book_list/book.html:45
+#: documents/templates/documents/image_short.html:20
+#: documents/templatetags/book_list.py:80
+#: documents/templatetags/book_list.py:148
 msgid "publishable"
 msgstr "do publikacji"
 
-#: templates/documents/book_list/book.html:26
-#: templates/documents/book_list/chunk.html:26
-#: templates/documents/image_short.html:23 templatetags/book_list.py:81
-#: templatetags/book_list.py:149
+#: documents/templates/documents/book_list/book.html:26
+#: documents/templates/documents/book_list/chunk.html:26
+#: documents/templates/documents/image_short.html:23
+#: documents/templatetags/book_list.py:81
+#: documents/templatetags/book_list.py:149
 msgid "changed"
 msgstr "zmienione"
 
-#: templates/documents/book_list/book_list.html:29
-#: templates/documents/image_table.html:25
+#: documents/templates/documents/book_list/book_list.html:29
+#: documents/templates/documents/image_table.html:25
 msgid "Search in book titles"
 msgstr "Szukaj w tytułach książek"
 
-#: templates/documents/book_list/book_list.html:34
-#: templates/documents/image_table.html:30
+#: documents/templates/documents/book_list/book_list.html:34
+#: documents/templates/documents/image_table.html:30
 msgid "stage"
 msgstr "etap"
 
-#: templates/documents/book_list/book_list.html:36
-#: templates/documents/book_list/book_list.html:47
-#: templates/documents/book_list/book_list.html:68
-#: templates/documents/image_table.html:32
-#: templates/documents/image_table.html:43
-#: templates/documents/image_table.html:62
+#: documents/templates/documents/book_list/book_list.html:36
+#: documents/templates/documents/book_list/book_list.html:47
+#: documents/templates/documents/book_list/book_list.html:68
+#: documents/templates/documents/image_table.html:32
+#: documents/templates/documents/image_table.html:43
+#: documents/templates/documents/image_table.html:62
 msgid "none"
 msgstr "brak"
 
-#: templates/documents/book_list/book_list.html:45
-#: templates/documents/image_table.html:41
+#: documents/templates/documents/book_list/book_list.html:45
+#: documents/templates/documents/image_table.html:41
 msgid "editor"
 msgstr "redaktor"
 
-#: templates/documents/book_list/book_list.html:58
-#: templates/documents/image_table.html:52
+#: documents/templates/documents/book_list/book_list.html:58
+#: documents/templates/documents/image_table.html:52
 msgid "status"
 msgstr "status"
 
-#: templates/documents/book_list/book_list.html:92
+#: documents/templates/documents/book_list/book_list.html:92
 #, python-format
 msgid "%(c)s book"
 msgid_plural "%(c)s books"
@@ -373,73 +385,74 @@ msgstr[0] "%(c)s książka"
 msgstr[1] "%(c)s książki"
 msgstr[2] "%(c)s książek"
 
-#: templates/documents/book_list/book_list.html:96
+#: documents/templates/documents/book_list/book_list.html:96
 msgid "No books found."
 msgstr "Nie znaleziono książek."
 
-#: templates/documents/book_list/book_list.html:105
-#: templates/documents/image_table.html:87
+#: documents/templates/documents/book_list/book_list.html:105
+#: documents/templates/documents/image_table.html:87
 msgid "Set stage"
 msgstr "Ustaw etap"
 
-#: templates/documents/book_list/book_list.html:106
-#: templates/documents/image_table.html:88
+#: documents/templates/documents/book_list/book_list.html:106
+#: documents/templates/documents/image_table.html:88
 msgid "Set user"
 msgstr "Przypisz redaktora"
 
-#: templates/documents/book_list/book_list.html:108
-#: templates/documents/image_table.html:90
+#: documents/templates/documents/book_list/book_list.html:108
+#: documents/templates/documents/image_table.html:90
 msgid "Project"
 msgstr "Projekt"
 
-#: templates/documents/book_list/book_list.html:109
-#: templates/documents/image_table.html:91
+#: documents/templates/documents/book_list/book_list.html:109
+#: documents/templates/documents/image_table.html:91
 msgid "More users"
 msgstr "Więcej użytkowników"
 
-#: templates/documents/book_text.html:7
+#: documents/templates/documents/book_text.html:7
 msgid "Redakcja"
 msgstr ""
 
-#: templates/documents/chunk_add.html:6 templates/documents/chunk_add.html:12
-#: templates/documents/chunk_edit.html:29
+#: documents/templates/documents/chunk_add.html:6
+#: documents/templates/documents/chunk_add.html:12
+#: documents/templates/documents/chunk_edit.html:29
 msgid "Split chunk"
 msgstr "Podziel część"
 
-#: templates/documents/chunk_add.html:19
+#: documents/templates/documents/chunk_add.html:19
 msgid "Insert empty chunk after"
 msgstr "Wstaw pustą część po"
 
-#: templates/documents/chunk_add.html:23
+#: documents/templates/documents/chunk_add.html:23
 msgid "Add chunk"
 msgstr "Dodaj część"
 
-#: templates/documents/chunk_edit.html:19
+#: documents/templates/documents/chunk_edit.html:19
 msgid "Book"
 msgstr "Książka"
 
-#: templates/documents/document_create_missing.html:6
-#: templates/documents/document_create_missing.html:12
+#: documents/templates/documents/document_create_missing.html:6
+#: documents/templates/documents/document_create_missing.html:12
 msgid "Create a new book"
 msgstr "Utwórz nową książkę"
 
-#: templates/documents/document_create_missing.html:21
+#: documents/templates/documents/document_create_missing.html:21
 msgid "Create book"
 msgstr "Utwórz książkę"
 
-#: templates/documents/document_list.html:7
+#: documents/templates/documents/document_list.html:7
 msgid "Book list"
 msgstr "Lista książek"
 
-#: templates/documents/document_upload.html:6
+#: documents/templates/documents/document_upload.html:6
 msgid "Bulk document upload"
 msgstr "Hurtowe dodawanie dokumentów"
 
-#: templates/documents/document_upload.html:14
+#: documents/templates/documents/document_upload.html:14
 msgid "Bulk documents upload"
 msgstr "Hurtowe dodawanie dokumentów"
 
-#: templates/documents/document_upload.html:19
+#: documents/templates/documents/document_upload.html:19
 msgid ""
 "Please submit a ZIP with UTF-8 encoded XML files. Files not ending with "
 "<code>.xml</code> will be ignored."
@@ -447,57 +460,58 @@ msgstr ""
 "Proszę wskazać archiwum ZIP z plikami XML w kodowaniu UTF-8. Pliki nie "
 "kończące się na <code>.xml</code> zostaną zignorowane."
 
-#: templates/documents/document_upload.html:26
-#: templates/documents/upload_pdf.html:16 templatetags/documents.py:37
+#: documents/templates/documents/document_upload.html:26
+#: documents/templates/documents/upload_pdf.html:16
+#: documents/templatetags/documents.py:37
 msgid "Upload"
 msgstr "Załaduj"
 
-#: templates/documents/document_upload.html:34
+#: documents/templates/documents/document_upload.html:34
 msgid ""
 "There have been some errors. No files have been added to the repository."
 msgstr "Wystąpiły błędy. Żadne pliki nie zostały dodane do repozytorium."
 
-#: templates/documents/document_upload.html:35
+#: documents/templates/documents/document_upload.html:35
 msgid "Offending files"
 msgstr "Błędne pliki"
 
-#: templates/documents/document_upload.html:43
+#: documents/templates/documents/document_upload.html:43
 msgid "Correct files"
 msgstr "Poprawne pliki"
 
-#: templates/documents/document_upload.html:54
+#: documents/templates/documents/document_upload.html:54
 msgid "Files have been successfully uploaded to the repository."
 msgstr "Pliki zostały dodane do repozytorium."
 
-#: templates/documents/document_upload.html:55
+#: documents/templates/documents/document_upload.html:55
 msgid "Uploaded files"
 msgstr "Dodane pliki"
 
-#: templates/documents/document_upload.html:65
+#: documents/templates/documents/document_upload.html:65
 msgid "Skipped files"
 msgstr "Pominięte pliki"
 
-#: templates/documents/document_upload.html:66
+#: documents/templates/documents/document_upload.html:66
 msgid "Files skipped due to no <code>.xml</code> extension"
 msgstr "Pliki pominięte z powodu braku rozszerzenia <code>.xml</code>."
 
-#: templates/documents/image_detail.html:34
+#: documents/templates/documents/image_detail.html:34
 msgid "Editor"
 msgstr "Edytor"
 
-#: templates/documents/image_detail.html:38
+#: documents/templates/documents/image_detail.html:38
 msgid "Proceed to the editor."
 msgstr "Przejdź do edytora."
 
-#: templates/documents/image_list.html:8
+#: documents/templates/documents/image_list.html:8
 msgid "Image list"
 msgstr "Lista obrazów"
 
-#: templates/documents/image_short.html:6
+#: documents/templates/documents/image_short.html:6
 msgid "Image settings"
 msgstr "Ustawienia obrazu"
 
-#: templates/documents/image_table.html:79
+#: documents/templates/documents/image_table.html:79
 #, python-format
 msgid "%(c)s image"
 msgid_plural "%(c)s images"
@@ -505,85 +519,91 @@ msgstr[0] "%(c)s obraz"
 msgstr[1] "%(c)s obrazy"
 msgstr[2] "%(c)s obrazów"
 
-#: templates/documents/image_table.html:81
+#: documents/templates/documents/image_table.html:81
 msgid "No images found."
 msgstr "Nie znaleziono obrazów."
 
-#: templates/documents/my_page.html:17 templatetags/documents.py:28
+#: documents/templates/documents/my_page.html:17
+#: documents/templatetags/documents.py:28
 msgid "My page"
 msgstr "Moja strona"
 
-#: templates/documents/my_page.html:27
+#: documents/templates/documents/my_page.html:27
 msgid "Your last edited documents"
 msgstr "Twoje ostatnie edycje"
 
-#: templates/documents/my_page.html:47 templates/documents/user_page.html:18
+#: documents/templates/documents/my_page.html:47
+#: documents/templates/documents/user_page.html:18
 msgid "Recent activity for"
 msgstr "Ostatnia aktywność dla:"
 
-#: templates/documents/upload_pdf.html:5 templates/documents/upload_pdf.html:11
+#: documents/templates/documents/upload_pdf.html:5
+#: documents/templates/documents/upload_pdf.html:11
 msgid "PDF file upload"
 msgstr "Ładowanie pliku PDF"
 
-#: templates/documents/user_list.html:7 templates/documents/user_list.html:14
-#: templatetags/documents.py:33
+#: documents/templates/documents/user_list.html:7
+#: documents/templates/documents/user_list.html:14
+#: documents/templatetags/documents.py:33
 msgid "Users"
 msgstr "Użytkownicy"
 
-#: templates/documents/wall.html:30
+#: documents/templates/documents/wall.html:30
 msgid "not logged in"
 msgstr "nie zalogowany"
 
-#: templates/documents/wall.html:35
+#: documents/templates/documents/wall.html:35
 msgid "No activity recorded."
 msgstr "Nie zanotowano aktywności."
 
-#: templatetags/book_list.py:83 templatetags/book_list.py:151
+#: documents/templatetags/book_list.py:83
+#: documents/templatetags/book_list.py:151
 msgid "unpublished"
 msgstr "nie opublikowane"
 
-#: templatetags/book_list.py:84 templatetags/book_list.py:152
+#: documents/templatetags/book_list.py:84
+#: documents/templatetags/book_list.py:152
 msgid "empty"
 msgstr "puste"
 
-#: templatetags/documents.py:31
+#: documents/templatetags/documents.py:31
 msgid "All"
 msgstr "Wszystkie"
 
-#: templatetags/documents.py:32
+#: documents/templatetags/documents.py:32
 msgid "Images"
 msgstr "Obrazy"
 
-#: templatetags/documents.py:36
+#: documents/templatetags/documents.py:36
 msgid "Add"
 msgstr "Dodaj"
 
-#: templatetags/documents.py:39
+#: documents/templatetags/documents.py:39
 msgid "Covers"
 msgstr "Okładki"
 
-#: templatetags/wall.py:49 templatetags/wall.py:78
+#: documents/templatetags/wall.py:49 documents/templatetags/wall.py:78
 msgid "Related edit"
 msgstr "Powiązana zmiana"
 
-#: templatetags/wall.py:51 templatetags/wall.py:80
+#: documents/templatetags/wall.py:51 documents/templatetags/wall.py:80
 msgid "Edit"
 msgstr "Zmiana"
 
-#: views.py:172
+#: documents/views.py:172
 #, python-format
 msgid "Slug already used for %s"
 msgstr "Slug taki sam jak dla pliku %s"
 
-#: views.py:174
+#: documents/views.py:174
 msgid "Slug already used in repository."
 msgstr "Dokument o tym slugu już istnieje w repozytorium."
 
-#: views.py:180
+#: documents/views.py:180
 msgid "File should be UTF-8 encoded."
 msgstr "Plik powinien mieć kodowanie UTF-8."
 
-#: views.py:621
+#: documents/views.py:621
 msgid "scan gallery"
 msgstr "galeria skanów"
 
index c0365d5..79bba13 100644 (file)
@@ -7,7 +7,6 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-14 15:25+0100\n"
 "PO-Revision-Date: 2011-12-14 15:27+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,110 +14,105 @@ msgstr ""
 "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"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2)\n"
 
-#: models.py:19
+#: dvcs/models.py:23
 msgid "name"
 msgstr "nazwa"
 
-#: models.py:20
+#: dvcs/models.py:24
 msgid "slug"
 msgstr "slug"
 
-#: models.py:22
+#: dvcs/models.py:25
 msgid "ordering"
 msgstr "kolejność"
 
-#: models.py:70
+#: dvcs/models.py:74
 msgid "author"
 msgstr "autor"
 
-#: models.py:71
+#: dvcs/models.py:76
 msgid "author name"
 msgstr "imię i nazwisko autora"
 
-#: models.py:73
-#: models.py:77
+#: dvcs/models.py:76 dvcs/models.py:78
 msgid "Used if author is not set."
 msgstr "Używane, gdy nie jest ustawiony autor."
 
-#: models.py:75
+#: dvcs/models.py:78
 msgid "author email"
 msgstr "e-mail autora"
 
-#: models.py:79
+#: dvcs/models.py:79
 msgid "revision"
 msgstr "rewizja"
 
-#: models.py:83
+#: dvcs/models.py:82
 msgid "parent"
 msgstr "rodzic"
 
-#: models.py:88
+#: dvcs/models.py:85
 msgid "merge parent"
 msgstr "drugi rodzic"
 
-#: models.py:91
+#: dvcs/models.py:87
 msgid "description"
 msgstr "opis"
 
-#: models.py:94
+#: dvcs/models.py:89
 msgid "publishable"
 msgstr "do publikacji"
 
-#: models.py:176
+#: dvcs/models.py:175
 msgid "tag"
 msgstr "tag"
 
-#: models.py:176
-#: models.py:178
-#: models.py:194
-#: models.py:196
+#: dvcs/models.py:175 dvcs/models.py:177 dvcs/models.py:193 dvcs/models.py:195
 msgid "for:"
 msgstr "dla:"
 
-#: models.py:178
-#: models.py:202
+#: dvcs/models.py:177 dvcs/models.py:200
 msgid "tags"
 msgstr "tagi"
 
-#: models.py:194
+#: dvcs/models.py:193
 msgid "change"
 msgstr "zmiana"
 
-#: models.py:196
+#: dvcs/models.py:195
 msgid "changes"
 msgstr "zmiany"
 
-#: models.py:201
+#: dvcs/models.py:199
 msgid "document"
 msgstr "dokument"
 
-#: models.py:203
+#: dvcs/models.py:201
 msgid "data"
 msgstr "dane"
 
-#: models.py:217
+#: dvcs/models.py:215
 msgid "stage"
 msgstr "etap"
 
-#: models.py:225
+#: dvcs/models.py:223
 msgid "head"
 msgstr "głowica"
 
-#: models.py:226
+#: dvcs/models.py:223
 msgid "This document's current head."
 msgstr "Aktualna wersja dokumentu."
 
-#: models.py:230
+#: dvcs/models.py:228
 msgid "creator"
 msgstr "utworzył"
 
-#: models.py:245
+#: dvcs/models.py:240
 msgid "user"
 msgstr "użytkownik"
 
-#: models.py:245
+#: dvcs/models.py:240
 msgid "Work assignment."
 msgstr "Przypisanie pracy użytkownikowi."
-
index 046b883..f15a5c1 100644 (file)
@@ -7,7 +7,6 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-30 14:27+0100\n"
 "PO-Revision-Date: 2011-11-30 14:27+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,13 +14,13 @@ msgstr ""
 "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"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2)\n"
 
-#: templatetags/email.py:17
+#: email_mangler/templatetags/email.py:21
 msgid "at"
 msgstr "na"
 
-#: templatetags/email.py:18
+#: email_mangler/templatetags/email.py:22
 msgid "dot"
 msgstr "kropka"
-
index a4b6099..4fc6bd4 100644 (file)
@@ -7,7 +7,6 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-03-07 16:27+0100\n"
 "PO-Revision-Date: 2013-03-07 16:27+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,25 +14,25 @@ msgstr ""
 "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"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
 
-#: templates/fileupload/picture_form.html:18
+#: fileupload/templates/fileupload/picture_form.html:18
 msgid "Browse:"
 msgstr "Przeglądanie:"
 
-#: templates/fileupload/picture_form.html:35
+#: fileupload/templates/fileupload/picture_form.html:35
 msgid "Add files..."
 msgstr "Dodaj pliki..."
 
-#: templates/fileupload/picture_form.html:40
+#: fileupload/templates/fileupload/picture_form.html:40
 msgid "Start upload"
 msgstr "Zacznij wysyłać"
 
-#: templates/fileupload/picture_form.html:44
+#: fileupload/templates/fileupload/picture_form.html:44
 msgid "Cancel upload"
 msgstr "Anuluj wysyłanie"
 
-#: templates/fileupload/picture_form.html:48
+#: fileupload/templates/fileupload/picture_form.html:48
 msgid "Delete"
 msgstr "Usuń"
-
diff --git a/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.mo b/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.mo
new file mode 100644 (file)
index 0000000..1f0e131
Binary files /dev/null and b/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.mo differ
diff --git a/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.po b/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.po
new file mode 100644 (file)
index 0000000..7241283
--- /dev/null
@@ -0,0 +1,48 @@
+# This file is distributed under the same license as the django-admin-numeric-filter package.
+#
+# Translators: 
+# Radek Czajka <radekczajka@mdrn.pl>, 2020.
+msgid ""
+msgstr ""
+"Project-Id-Version: django-admin-numeric-filter\n"
+"Report-Msgid-Bugs-To: \n"
+"PO-Revision-Date: 2020-11-02 12:08+0100\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=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
+"%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
+"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+"Last-Translator: Radek Czajka <radekczajka@mdrn.pl>\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.3\n"
+
+#: forms.py:11
+msgid "Value"
+msgstr "Wartość"
+
+#: forms.py:29
+msgid "From"
+msgstr "Od"
+
+#: forms.py:31
+msgid "To"
+msgstr "Do"
+
+#: templates/admin/filter_numeric_range.html:11
+#: templates/admin/filter_numeric_single.html:11
+#: templates/admin/filter_numeric_slider.html:11
+#, python-format
+msgid "By %(filter_title)s"
+msgstr "Według pola %(filter_title)s"
+
+#: templates/admin/filter_numeric_range.html:17
+#: templates/admin/filter_numeric_single.html:15
+#: templates/admin/filter_numeric_slider.html:26
+msgid "Apply"
+msgstr "Zastosuj"
+
+#: templates/admin/filter_numeric_slider.html:30
+msgid "No enough data."
+msgstr "Brak danych."
index 916f4db..5d60c07 100644 (file)
@@ -7,7 +7,6 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 11:18+0200\n"
 "PO-Revision-Date: 2011-10-18 11:19+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,27 +15,31 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: templates/404.html:8
+#: redakcja/templates/404.html:4 redakcja/templates/404.html:8
 msgid "Page not found"
 msgstr "Strona nie została znaleziona"
 
-#: templates/404.html:10
+#: redakcja/templates/404.html:10
 #, python-format
 msgid ""
 "The page you're trying\n"
 "to reach (<tt>%(p)s</tt>) could not be found. If it's a document, try\n"
 "looking for it on the <a href=\"/\">document list</a>."
-msgstr "Strona, do której próbujesz dotrzeć (<tt>%(p)s</tt>), nie istnieje. Spróbuj poszukać jej na <a href=\"/\">liście dokumentów</a>."
+msgstr ""
+"Strona, do której próbujesz dotrzeć (<tt>%(p)s</tt>), nie istnieje. Spróbuj "
+"poszukać jej na <a href=\"/\">liście dokumentów</a>."
 
-#: templates/404.html:15
+#: redakcja/templates/404.html:15
 #, python-format
 msgid ""
 "If you\n"
 "still can't find what you're looking for, please\n"
 "<a href=\"%(m)s\">contact the administrator</a>."
-msgstr "Jeśli nadal nie możesz znaleźć tego, czego szukasz, <a href=\"%(m)s\">skontaktuj się z administratorem</a>."
+msgstr ""
+"Jeśli nadal nie możesz znaleźć tego, czego szukasz, <a href=\"%(m)s"
+"\">skontaktuj się z administratorem</a>."
 
-#: templates/404.html:22
+#: redakcja/templates/404.html:22
 #, python-format
 msgid ""
 "If you're coming from Redmine, please note that\n"
@@ -44,70 +47,42 @@ msgid ""
 "Go to the <a href=\"/\">document list</a>\n"
 "or to <a href=\"%(m)s\">your page</a> instead."
 msgstr ""
-"Jeśli skierował Cię tu Redmine, zwróć uwagę, że nie służy on już do koordynowania prac redakcyjnych. Możesz za to przejść do <a href=\"/\">listy dokumentów</a>\n"
+"Jeśli skierował Cię tu Redmine, zwróć uwagę, że nie służy on już do "
+"koordynowania prac redakcyjnych. Możesz za to przejść do <a href=\"/\">listy "
+"dokumentów</a>\n"
 "albo do <a href=\"%(m)s\">swojej strony</a>."
 
-#: templates/base.html:7
+#: redakcja/templates/base.html:8
 msgid "Platforma Redakcyjna"
 msgstr ""
 
-#: templates/base.html:16
+#: redakcja/templates/base.html:18
 msgid "Loading"
 msgstr "Ładowanie"
 
-#: templates/admin/index.html:21
-#, python-format
-msgid "Models available in the %(name)s application."
-msgstr ""
-
-#: templates/admin/index.html:22
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/index.html:32
-msgid "Add"
-msgstr ""
-
-#: templates/admin/index.html:38
-msgid "Change"
-msgstr ""
-
-#: templates/admin/index.html:48
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:56
-msgid "Recent Actions"
+#: redakcja/templates/pagination/pagination.html:3
+msgid "Pagination"
 msgstr ""
 
-#: templates/admin/index.html:57
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:61
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:75
-msgid "Unknown content"
-msgstr ""
-
-#: templates/pagination/pagination.html:5
-#: templates/pagination/pagination.html:7
+#: redakcja/templates/pagination/pagination.html:8
+#: redakcja/templates/pagination/pagination.html:14
 msgid "previous"
 msgstr "poprzednie"
 
-#: templates/pagination/pagination.html:21
-#: templates/pagination/pagination.html:23
+#: redakcja/templates/pagination/pagination.html:40
+#: redakcja/templates/pagination/pagination.html:46
 msgid "next"
 msgstr "następne"
 
-#: templates/registration/head_login.html:5
+#: redakcja/templates/registration/head_login.html:10
+msgid "Admin"
+msgstr ""
+
+#: redakcja/templates/registration/head_login.html:12
 msgid "Log Out"
 msgstr "Wyloguj"
 
-#: templates/registration/head_login.html:9
+#: redakcja/templates/registration/head_login.html:18
 msgid "Log In"
 msgstr "Logowanie"
 
index 8b7b9c4..4859abb 100644 (file)
@@ -76,6 +76,7 @@ INSTALLED_APPS = (
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'django.contrib.sites',
+    'admin_numeric_filter',
     'django.contrib.admin',
     'django.contrib.admindocs',
 
@@ -102,6 +103,10 @@ INSTALLED_APPS = (
 if DEBUG:
     INSTALLED_APPS += ('debug_toolbar',)
 
+LOCALE_PATHS = [
+    PROJECT_ROOT + "/locale-contrib",
+]
+
 LOGIN_REDIRECT_URL = '/documents/user'
 
 MIN_COVER_SIZE = (915, 1270)
index 8c7cfb1..00c0092 100644 (file)
@@ -8,30 +8,30 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-08-03 12:14+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: models.py:17
+#: toolbar/models.py:15
 msgid "button group"
 msgstr "grupa przycisków"
 
-#: models.py:17
+#: toolbar/models.py:15
 msgid "button groups"
 msgstr "grupy przycisków"
 
-#: models.py:51
+#: toolbar/models.py:49
 msgid "button"
 msgstr "przycisk"
 
-#: models.py:51
+#: toolbar/models.py:49
 msgid "buttons"
 msgstr "przyciski"
 
-#: models.py:75
+#: toolbar/models.py:73
 msgid "javascript"
 msgstr ""
index a679724..22fbe4f 100644 (file)
@@ -7,277 +7,287 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Platforma Redakcyjna\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-07-10 16:58+0200\n"
 "PO-Revision-Date: 2013-07-10 16:58+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
 "Language-Team: Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org."
 "pl>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: forms.py:19 forms.py:63 views.py:279
+#: wiki/forms.py:17 wiki/forms.py:61 wiki/views.py:284
 msgid "Publishable"
 msgstr "Gotowe do publikacji"
 
-#: forms.py:38 forms.py:89
+#: wiki/forms.py:36 wiki/forms.py:87
 msgid "Author"
 msgstr "Autor"
 
-#: forms.py:39 forms.py:90
+#: wiki/forms.py:37 wiki/forms.py:88
 msgid "Your name"
 msgstr "Imię i nazwisko"
 
-#: forms.py:44 forms.py:95
+#: wiki/forms.py:42 wiki/forms.py:93
 msgid "Author's email"
 msgstr "E-mail autora"
 
-#: forms.py:45 forms.py:96
+#: wiki/forms.py:43 wiki/forms.py:94
 msgid "Your email address, so we can show a gravatar :)"
 msgstr "Adres e-mail, żebyśmy mogli pokazać gravatar :)"
 
-#: forms.py:51 forms.py:102
+#: wiki/forms.py:49 wiki/forms.py:100
 msgid "Your comments"
 msgstr "Twój komentarz"
 
-#: forms.py:52
+#: wiki/forms.py:50
 msgid "Describe changes you made."
 msgstr "Opisz swoje zmiany"
 
-#: forms.py:58
+#: wiki/forms.py:56
 msgid "Completed"
 msgstr "Ukończono"
 
-#: forms.py:59
+#: wiki/forms.py:57
 msgid "If you completed a life cycle stage, select it."
 msgstr "Jeśli został ukończony etap prac, wskaż go."
 
-#: forms.py:64
+#: wiki/forms.py:62
 msgid "Mark this revision as publishable."
 msgstr "Oznacz tę wersję jako gotową do publikacji."
 
-#: forms.py:103
+#: wiki/forms.py:101
 msgid "Describe the reason for reverting."
 msgstr "Opisz powód przywrócenia."
 
-#: models.py:14
+#: wiki/models.py:12
 msgid "name"
 msgstr "nazwa"
 
-#: models.py:18
+#: wiki/models.py:16
 msgid "theme"
 msgstr "motyw"
 
-#: models.py:19
+#: wiki/models.py:17
 msgid "themes"
 msgstr "motywy"
 
-#: views.py:281
-msgid "Published"
-msgstr "Opublikowano"
-
-#: views.py:302
-msgid "Revision marked"
-msgstr "Wersja oznaczona"
-
-#: views.py:304
-msgid "Nothing changed"
-msgstr "Nic nie uległo zmianie"
-
-#: templates/admin/wiki/theme/change_list.html:22
+#: wiki/templates/admin/wiki/theme/change_list.html:22
 msgid "Table for Redmine wiki"
 msgstr "Tabela do wiki na Redmine"
 
-#: templates/wiki/diff_table.html:5
+#: wiki/templates/wiki/diff_table.html:5
 msgid "Old version"
 msgstr "Stara wersja"
 
-#: templates/wiki/diff_table.html:6
+#: wiki/templates/wiki/diff_table.html:6
 msgid "New version"
 msgstr "Nowa wersja"
 
-#: templates/wiki/document_details.html:32
+#: wiki/templates/wiki/document_details.html:37
 msgid "Click to open/close gallery"
 msgstr "Kliknij, aby (ro)zwinąć galerię"
 
-#: templates/wiki/document_details_base.html:33
+#: wiki/templates/wiki/document_details_base.html:50
 msgid "Help"
 msgstr "Pomoc"
 
-#: templates/wiki/document_details_base.html:35
+#: wiki/templates/wiki/document_details_base.html:52
 msgid "Version"
 msgstr "Wersja"
 
-#: templates/wiki/document_details_base.html:35
+#: wiki/templates/wiki/document_details_base.html:52
 msgid "Unknown"
 msgstr "nieznana"
 
-#: templates/wiki/document_details_base.html:37
-#: templates/wiki/pubmark_dialog.html:16
+#: wiki/templates/wiki/document_details_base.html:54
+#: wiki/templates/wiki/pubmark_dialog.html:16
 msgid "Save"
 msgstr "Zapisz"
 
-#: templates/wiki/document_details_base.html:38
+#: wiki/templates/wiki/document_details_base.html:55
 msgid "Save attempt in progress"
 msgstr "Trwa zapisywanie"
 
-#: templates/wiki/document_details_base.html:39
+#: wiki/templates/wiki/document_details_base.html:56
 msgid "There is a newer version of this document!"
 msgstr "Istnieje nowsza wersja tego dokumentu!"
 
-#: templates/wiki/pubmark_dialog.html:17 templates/wiki/revert_dialog.html:40
+#: wiki/templates/wiki/pubmark_dialog.html:17
+#: wiki/templates/wiki/revert_dialog.html:40
 msgid "Cancel"
 msgstr "Anuluj"
 
-#: templates/wiki/revert_dialog.html:39
+#: wiki/templates/wiki/revert_dialog.html:39
 msgid "Revert"
 msgstr "Przywróć"
 
-#: templates/wiki/tabs/annotations_view.html:9
+#: wiki/templates/wiki/tabs/annotations_view.html:18
 msgid "all"
 msgstr "wszystkie"
 
-#: templates/wiki/tabs/annotations_view_item.html:3
+#: wiki/templates/wiki/tabs/annotations_view_item.html:3
 msgid "Annotations"
 msgstr "Przypisy"
 
-#: templates/wiki/tabs/gallery_view.html:5
+#: wiki/templates/wiki/tabs/gallery_view.html:6
 msgid "Go to first image of this part"
 msgstr "Przejdź na początek"
 
-#: templates/wiki/tabs/gallery_view.html:8
+#: wiki/templates/wiki/tabs/gallery_view.html:9
 msgid "Previous"
 msgstr "Poprzednie"
 
-#: templates/wiki/tabs/gallery_view.html:13
+#: wiki/templates/wiki/tabs/gallery_view.html:14
 msgid "Next"
 msgstr "Następne"
 
-#: templates/wiki/tabs/gallery_view.html:16
-msgid "Zoom in"
-msgstr "Powiększ"
-
-#: templates/wiki/tabs/gallery_view.html:17
-msgid "Zoom out"
-msgstr "Zmniejsz"
-
-#: templates/wiki/tabs/gallery_view_item.html:3
+#: wiki/templates/wiki/tabs/gallery_view_item.html:3
 msgid "Gallery"
 msgstr "Galeria"
 
-#: templates/wiki/tabs/history_view.html:5
+#: wiki/templates/wiki/tabs/history_view.html:6
 msgid "Compare versions"
 msgstr "Porównaj wersje"
 
-#: templates/wiki/tabs/history_view.html:8
+#: wiki/templates/wiki/tabs/history_view.html:9
 msgid "Mark for publishing"
 msgstr "Oznacz do publikacji"
 
-#: templates/wiki/tabs/history_view.html:11
+#: wiki/templates/wiki/tabs/history_view.html:12
 msgid "Revert document"
 msgstr "Przywróć wersję"
 
-#: templates/wiki/tabs/history_view.html:14
+#: wiki/templates/wiki/tabs/history_view.html:15
 msgid "View version"
 msgstr "Zobacz wersję"
 
-#: templates/wiki/tabs/history_view_item.html:3
+#: wiki/templates/wiki/tabs/history_view_item.html:3
 msgid "History"
 msgstr "Historia"
 
-#: templates/wiki/tabs/search_view.html:3
-#: templates/wiki/tabs/search_view.html:5
+#: wiki/templates/wiki/tabs/search_view.html:4
+#: wiki/templates/wiki/tabs/search_view.html:8
 msgid "Search"
 msgstr "Szukaj"
 
-#: templates/wiki/tabs/search_view.html:8
+#: wiki/templates/wiki/tabs/search_view.html:11
 msgid "Replace with"
 msgstr "Zamień na"
 
-#: templates/wiki/tabs/search_view.html:10
+#: wiki/templates/wiki/tabs/search_view.html:15
 msgid "Replace"
 msgstr "Zamień"
 
-#: templates/wiki/tabs/search_view.html:12
+#: wiki/templates/wiki/tabs/search_view.html:19
 msgid "Replace all"
 msgstr "Zamień wszystko"
 
+#: wiki/templates/wiki/tabs/search_view.html:21
 msgid "Options"
 msgstr "Opcje"
 
-#: templates/wiki/tabs/search_view.html:15
+#: wiki/templates/wiki/tabs/search_view.html:24
 msgid "Case sensitive"
 msgstr "Rozróżniaj wielkość liter"
 
-#: templates/wiki/tabs/search_view.html:17
+#: wiki/templates/wiki/tabs/search_view.html:28
 msgid "From cursor"
 msgstr "Zacznij od kursora"
 
-#: templates/wiki/tabs/search_view_item.html:3
+#: wiki/templates/wiki/tabs/search_view_item.html:4
 msgid "Search and replace"
 msgstr "Znajdź i zamień"
 
-#: templates/wiki/tabs/source_editor_item.html:5
+#: wiki/templates/wiki/tabs/source_editor_item.html:5
 msgid "Source code"
 msgstr "Kod źródłowy"
 
-#: templates/wiki/tabs/summary_view.html:13
+#: wiki/templates/wiki/tabs/summary_view.html:11
 msgid "Refresh from working copy"
 msgstr "Odśwież z edytowanej wersji"
 
-#: templates/wiki/tabs/summary_view.html:17
+#: wiki/templates/wiki/tabs/summary_view.html:15
 msgid "Title"
 msgstr "Tytuł"
 
-#: templates/wiki/tabs/summary_view.html:21
+#: wiki/templates/wiki/tabs/summary_view.html:19
 msgid "Go to the book's page"
 msgstr "Przejdź do strony książki"
 
-#: templates/wiki/tabs/summary_view.html:24
+#: wiki/templates/wiki/tabs/summary_view.html:22
 msgid "Document ID"
 msgstr "ID dokumentu"
 
-#: templates/wiki/tabs/summary_view.html:28
+#: wiki/templates/wiki/tabs/summary_view.html:26
 msgid "Current version"
 msgstr "Aktualna wersja"
 
-#: templates/wiki/tabs/summary_view.html:31
+#: wiki/templates/wiki/tabs/summary_view.html:30
 msgid "Last edited by"
 msgstr "Ostatnio edytowane przez"
 
-#: templates/wiki/tabs/summary_view.html:35
+#: wiki/templates/wiki/tabs/summary_view.html:34
 msgid "Link to gallery"
 msgstr "Link do galerii"
 
-#: templates/wiki/tabs/summary_view.html:40
+#: wiki/templates/wiki/tabs/summary_view.html:39
 msgid "Characters in document"
 msgstr "Znaków w dokumencie"
 
-#: templates/wiki/tabs/summary_view.html:41
+#: wiki/templates/wiki/tabs/summary_view.html:41
+#: wiki/templates/wiki/tabs/summary_view.html:42
+#: wiki/templates/wiki/tabs/summary_view.html:45
 msgid "pages"
 msgstr "stron maszynopisu"
 
-#: templates/wiki/tabs/summary_view.html:41
+#: wiki/templates/wiki/tabs/summary_view.html:41
+msgid "without footnotes and themes"
+msgstr ""
+
+#: wiki/templates/wiki/tabs/summary_view.html:42
+msgid "with footnotes and themes"
+msgstr ""
+
+#: wiki/templates/wiki/tabs/summary_view.html:45
 msgid "untagged"
 msgstr "nieotagowane"
 
-#: templates/wiki/tabs/summary_view_item.html:3
+#: wiki/templates/wiki/tabs/summary_view_item.html:3
 msgid "Summary"
 msgstr "Podsumowanie"
 
-#: templates/wiki/tabs/wysiwyg_editor.html:9
+#: wiki/templates/wiki/tabs/wysiwyg_editor.html:7
 msgid "Insert theme"
 msgstr "Wstaw motyw"
 
-#: templates/wiki/tabs/wysiwyg_editor.html:12
+#: wiki/templates/wiki/tabs/wysiwyg_editor.html:10
 msgid "Insert annotation"
 msgstr "Wstaw przypis"
 
-#: templates/wiki/tabs/wysiwyg_editor_item.html:3
+#: wiki/templates/wiki/tabs/wysiwyg_editor_item.html:3
 msgid "Visual editor"
 msgstr "Edytor wizualny"
 
+#: wiki/views.py:286
+msgid "Published"
+msgstr "Opublikowano"
+
+#: wiki/views.py:307
+msgid "Revision marked"
+msgstr "Wersja oznaczona"
+
+#: wiki/views.py:309
+msgid "Nothing changed"
+msgstr "Nic nie uległo zmianie"
+
+#~ msgid "Zoom in"
+#~ msgstr "Powiększ"
+
+#~ msgid "Zoom out"
+#~ msgstr "Zmniejsz"
+
 #~ msgid "ZIP file"
 #~ msgstr "Plik ZIP"
 
index 432d289..a3db7be 100644 (file)
@@ -7,125 +7,122 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Platforma Redakcyjna\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-12-14 15:25+0100\n"
 "PO-Revision-Date: 2011-12-14 15:26+0100\n"
 "Last-Translator: Radek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>\n"
-"Language-Team: Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org.pl>\n"
+"Language-Team: Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org."
+"pl>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: forms.py:18
+#: wiki_img/forms.py:16
 msgid "Completed"
 msgstr "Ukończono"
 
-#: forms.py:19
+#: wiki_img/forms.py:17
 msgid "If you completed a life cycle stage, select it."
 msgstr "Jeśli został ukończony etap prac, wskaż go."
 
-#: views.py:126
-msgid "Publishable"
-msgstr "Gotowe do publikacji"
-
-#: templates/wiki_img/base.html:15
-msgid "Platforma Redakcyjna"
-msgstr ""
-
-#: templates/wiki_img/diff_table.html:5
+#: wiki_img/templates/wiki_img/diff_table.html:5
 msgid "Old version"
 msgstr "Stara wersja"
 
-#: templates/wiki_img/diff_table.html:6
+#: wiki_img/templates/wiki_img/diff_table.html:6
 msgid "New version"
 msgstr "Nowa wersja"
 
-#: templates/wiki_img/document_details_base.html:31
+#: wiki_img/templates/wiki_img/document_details_base.html:48
 msgid "Help"
 msgstr "Pomoc"
 
-#: templates/wiki_img/document_details_base.html:33
+#: wiki_img/templates/wiki_img/document_details_base.html:50
 msgid "Version"
 msgstr "Wersja"
 
-#: templates/wiki_img/document_details_base.html:33
+#: wiki_img/templates/wiki_img/document_details_base.html:50
 msgid "Unknown"
 msgstr "nieznana"
 
-#: templates/wiki_img/document_details_base.html:35
-#: templates/wiki_img/tag_dialog.html:15
+#: wiki_img/templates/wiki_img/document_details_base.html:52
 msgid "Save"
 msgstr "Zapisz"
 
-#: templates/wiki_img/document_details_base.html:36
+#: wiki_img/templates/wiki_img/document_details_base.html:53
 msgid "Save attempt in progress"
 msgstr "Trwa zapisywanie"
 
-#: templates/wiki_img/document_details_base.html:37
+#: wiki_img/templates/wiki_img/document_details_base.html:54
 msgid "There is a newer version of this document!"
 msgstr "Istnieje nowsza wersja tego dokumentu!"
 
-#: templates/wiki_img/tag_dialog.html:16
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: templates/wiki_img/tabs/history_view.html:5
+#: wiki_img/templates/wiki_img/tabs/history_view.html:6
 msgid "Compare versions"
 msgstr "Porównaj wersje"
 
-#: templates/wiki_img/tabs/history_view.html:8
+#: wiki_img/templates/wiki_img/tabs/history_view.html:9
 msgid "Mark for publishing"
 msgstr "Oznacz do publikacji"
 
-#: templates/wiki_img/tabs/history_view.html:11
+#: wiki_img/templates/wiki_img/tabs/history_view.html:12
 msgid "Revert document"
 msgstr "Przywróć wersję"
 
-#: templates/wiki_img/tabs/history_view.html:14
+#: wiki_img/templates/wiki_img/tabs/history_view.html:15
 msgid "View version"
 msgstr "Zobacz wersję"
 
-#: templates/wiki_img/tabs/motifs_editor.html:4
-#: templates/wiki_img/tabs/motifs_editor_item.html:3
+#: wiki_img/templates/wiki_img/tabs/motifs_editor.html:5
+#: wiki_img/templates/wiki_img/tabs/motifs_editor_item.html:3
 msgid "Motifs"
 msgstr "Motywy"
 
-#: templates/wiki_img/tabs/motifs_editor.html:5
-#: templates/wiki_img/tabs/objects_editor.html:5
+#: wiki_img/templates/wiki_img/tabs/motifs_editor.html:6
+#: wiki_img/templates/wiki_img/tabs/objects_editor.html:6
 msgid "Add"
 msgstr "Dodaj"
 
-#: templates/wiki_img/tabs/objects_editor.html:4
+#: wiki_img/templates/wiki_img/tabs/objects_editor.html:5
 msgid "Object name"
 msgstr "Nazwa obiektu"
 
-#: templates/wiki_img/tabs/objects_editor_item.html:3
+#: wiki_img/templates/wiki_img/tabs/objects_editor_item.html:3
 msgid "Objects"
 msgstr "Obiekty"
 
-#: templates/wiki_img/tabs/source_editor_item.html:5
+#: wiki_img/templates/wiki_img/tabs/source_editor_item.html:5
 msgid "Source code"
 msgstr "Kod źródłowy"
 
-#: templates/wiki_img/tabs/summary_view.html:8
-msgid "Title"
-msgstr "Tytuł"
+#: wiki_img/views.py:134
+msgid "Publishable"
+msgstr "Gotowe do publikacji"
+
+#: wiki_img/views.py:212
+msgid "Revision marked"
+msgstr ""
+
+#: wiki_img/views.py:214
+msgid "Nothing changed"
+msgstr ""
+
+#~ msgid "Cancel"
+#~ msgstr "Anuluj"
+
+#~ msgid "Title"
+#~ msgstr "Tytuł"
 
-#: templates/wiki_img/tabs/summary_view.html:13
-msgid "Document ID"
-msgstr "ID dokumentu"
+#~ msgid "Document ID"
+#~ msgstr "ID dokumentu"
 
-#: templates/wiki_img/tabs/summary_view.html:17
-msgid "Current version"
-msgstr "Aktualna wersja"
+#~ msgid "Current version"
+#~ msgstr "Aktualna wersja"
 
-#: templates/wiki_img/tabs/summary_view.html:20
-msgid "Last edited by"
-msgstr "Ostatnio edytowane przez"
+#~ msgid "Last edited by"
+#~ msgstr "Ostatnio edytowane przez"
 
-#: templates/wiki_img/tabs/summary_view_item.html:4
-msgid "Summary"
-msgstr "Podsumowanie"
+#~ msgid "Summary"
+#~ msgstr "Podsumowanie"
 
 #~ msgid "First correction"
 #~ msgstr "Autokorekta"