From: Radek Czajka Date: Mon, 2 Nov 2020 12:17:52 +0000 (+0100) Subject: Extending catalogue. X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/f42848b5995d52b1812131c197553a821dfb7e16?hp=c589bdc8926f9fb7d4b34a2c6569fa4feae833f0 Extending catalogue. --- diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 6f5cf03a..031670a1 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -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 diff --git a/src/catalogue/admin.py b/src/catalogue/admin.py index a8fc82a5..1bb7f833 100644 --- a/src/catalogue/admin.py +++ b/src/catalogue/admin.py @@ -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"] diff --git a/src/catalogue/locale/pl/LC_MESSAGES/django.mo b/src/catalogue/locale/pl/LC_MESSAGES/django.mo index da3bb293..3c0c51d5 100644 Binary files a/src/catalogue/locale/pl/LC_MESSAGES/django.mo and b/src/catalogue/locale/pl/LC_MESSAGES/django.mo differ diff --git a/src/catalogue/locale/pl/LC_MESSAGES/django.po b/src/catalogue/locale/pl/LC_MESSAGES/django.po index 2bf50562..bdb2276d 100644 --- a/src/catalogue/locale/pl/LC_MESSAGES/django.po +++ b/src/catalogue/locale/pl/LC_MESSAGES/django.po @@ -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 index 00000000..e852877b --- /dev/null +++ b/src/catalogue/migrations/0028_auto_20201102_1109.py @@ -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 index 00000000..eb8b0240 --- /dev/null +++ b/src/catalogue/migrations/0029_auto_20201102_1315.py @@ -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'), + ), + ] diff --git a/src/catalogue/models.py b/src/catalogue/models.py index ce7a5722..cd64f843 100644 --- a/src/catalogue/models.py +++ b/src/catalogue/models.py @@ -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': diff --git a/src/cover/locale/pl/LC_MESSAGES/django.po b/src/cover/locale/pl/LC_MESSAGES/django.po index 67547cec..d40bd54a 100644 --- a/src/cover/locale/pl/LC_MESSAGES/django.po +++ b/src/cover/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 already in repository." msgstr "Obraz jest już w repozytorium." -#: forms.py:60 +#: cover/forms.py:44 +#, fuzzy, python-format +#| msgid "Image already in repository." +msgid "Image already in repository" +msgstr "Obraz jest już w repozytorium." + +#: 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" diff --git a/src/documents/locale/pl/LC_MESSAGES/django.po b/src/documents/locale/pl/LC_MESSAGES/django.po index 3a6596df..f1b49124 100644 --- a/src/documents/locale/pl/LC_MESSAGES/django.po +++ b/src/documents/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: Fundacja Nowoczesna Polska =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 " ".xml 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 .xml 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 .xml extension" msgstr "Pliki pominięte z powodu braku rozszerzenia .xml." -#: 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" diff --git a/src/dvcs/locale/pl/LC_MESSAGES/django.po b/src/dvcs/locale/pl/LC_MESSAGES/django.po index c0365d56..79bba132 100644 --- a/src/dvcs/locale/pl/LC_MESSAGES/django.po +++ b/src/dvcs/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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." - diff --git a/src/email_mangler/locale/pl/LC_MESSAGES/django.po b/src/email_mangler/locale/pl/LC_MESSAGES/django.po index 046b8835..f15a5c18 100644 --- a/src/email_mangler/locale/pl/LC_MESSAGES/django.po +++ b/src/email_mangler/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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" - diff --git a/src/fileupload/locale/pl/LC_MESSAGES/django.po b/src/fileupload/locale/pl/LC_MESSAGES/django.po index a4b60990..4fc6bd44 100644 --- a/src/fileupload/locale/pl/LC_MESSAGES/django.po +++ b/src/fileupload/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 index 00000000..1f0e1315 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 index 00000000..7241283d --- /dev/null +++ b/src/redakcja/locale-contrib/pl/LC_MESSAGES/django.po @@ -0,0 +1,48 @@ +# This file is distributed under the same license as the django-admin-numeric-filter package. +# +# Translators: +# Radek Czajka , 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 \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." diff --git a/src/redakcja/locale/pl/LC_MESSAGES/django.po b/src/redakcja/locale/pl/LC_MESSAGES/django.po index 916f4db0..5d60c07f 100644 --- a/src/redakcja/locale/pl/LC_MESSAGES/django.po +++ b/src/redakcja/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 (%(p)s) could not be found. If it's a document, try\n" "looking for it on the document list." -msgstr "Strona, do której próbujesz dotrzeć (%(p)s), nie istnieje. Spróbuj poszukać jej na liście dokumentów." +msgstr "" +"Strona, do której próbujesz dotrzeć (%(p)s), nie istnieje. Spróbuj " +"poszukać jej na liście dokumentów." -#: 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" "contact the administrator." -msgstr "Jeśli nadal nie możesz znaleźć tego, czego szukasz, skontaktuj się z administratorem." +msgstr "" +"Jeśli nadal nie możesz znaleźć tego, czego szukasz, skontaktuj się z administratorem." -#: 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 document list\n" "or to your page 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 listy dokumentów\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 listy " +"dokumentów\n" "albo do swojej strony." -#: 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" diff --git a/src/redakcja/settings/__init__.py b/src/redakcja/settings/__init__.py index 8b7b9c4b..4859abb2 100644 --- a/src/redakcja/settings/__init__.py +++ b/src/redakcja/settings/__init__.py @@ -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) diff --git a/src/toolbar/locale/pl/LC_MESSAGES/django.po b/src/toolbar/locale/pl/LC_MESSAGES/django.po index 8c7cfb16..00c0092c 100644 --- a/src/toolbar/locale/pl/LC_MESSAGES/django.po +++ b/src/toolbar/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/src/wiki/locale/pl/LC_MESSAGES/django.po b/src/wiki/locale/pl/LC_MESSAGES/django.po index a6797240..22fbe4f5 100644 --- a/src/wiki/locale/pl/LC_MESSAGES/django.po +++ b/src/wiki/locale/pl/LC_MESSAGES/django.po @@ -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 \n" "Language-Team: Fundacja Nowoczesna Polska \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" diff --git a/src/wiki_img/locale/pl/LC_MESSAGES/django.po b/src/wiki_img/locale/pl/LC_MESSAGES/django.po index 432d2899..a3db7be2 100644 --- a/src/wiki_img/locale/pl/LC_MESSAGES/django.po +++ b/src/wiki_img/locale/pl/LC_MESSAGES/django.po @@ -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 \n" -"Language-Team: Fundacja Nowoczesna Polska \n" +"Language-Team: Fundacja Nowoczesna Polska \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"