diff --git a/.tx/config b/.tx/config index 838d153ebd..bda20a0b0a 100644 --- a/.tx/config +++ b/.tx/config @@ -1,262 +1,176 @@ -[mayan-edms.apps-converter] -source_file = apps/converter/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/converter/locale/es/LC_MESSAGES/django.po -trans.pt = apps/converter/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/converter/locale/ru/LC_MESSAGES/django.po -trans.it = apps/converter/locale/it/LC_MESSAGES/django.po -trans.pl = apps/converter/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/converter/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-common] -source_file = apps/common/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/common/locale/es/LC_MESSAGES/django.po -trans.pt = apps/common/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/common/locale/ru/LC_MESSAGES/django.po -trans.it = apps/common/locale/it/LC_MESSAGES/django.po -trans.pl = apps/common/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/common/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-permissions] -source_file = apps/permissions/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/permissions/locale/es/LC_MESSAGES/django.po -trans.pt = apps/permissions/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/permissions/locale/ru/LC_MESSAGES/django.po -trans.it = apps/permissions/locale/it/LC_MESSAGES/django.po -trans.pl = apps/permissions/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/permissions/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-sources] -source_file = apps/sources/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/sources/locale/es/LC_MESSAGES/django.po -trans.pt = apps/sources/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/sources/locale/ru/LC_MESSAGES/django.po -trans.it = apps/sources/locale/it/LC_MESSAGES/django.po -trans.pl = apps/sources/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/sources/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-document_indexing] -source_file = apps/document_indexing/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/document_indexing/locale/es/LC_MESSAGES/django.po -trans.pt = apps/document_indexing/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/document_indexing/locale/ru/LC_MESSAGES/django.po -trans.it = apps/document_indexing/locale/it/LC_MESSAGES/django.po -trans.pl = apps/document_indexing/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/document_indexing/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-user_management] -source_file = apps/user_management/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/user_management/locale/es/LC_MESSAGES/django.po -trans.pt = apps/user_management/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/user_management/locale/ru/LC_MESSAGES/django.po -trans.it = apps/user_management/locale/it/LC_MESSAGES/django.po -trans.pl = apps/user_management/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/user_management/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-main] -source_file = apps/main/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/main/locale/es/LC_MESSAGES/django.po -trans.pt = apps/main/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/main/locale/ru/LC_MESSAGES/django.po -trans.it = apps/main/locale/it/LC_MESSAGES/django.po -trans.pl = apps/main/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/main/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-ocr] -source_file = apps/ocr/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/ocr/locale/es/LC_MESSAGES/django.po -trans.pt = apps/ocr/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/ocr/locale/ru/LC_MESSAGES/django.po -trans.it = apps/ocr/locale/it/LC_MESSAGES/django.po -trans.pl = apps/ocr/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/ocr/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-project_setup] -source_file = apps/project_setup/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/project_setup/locale/es/LC_MESSAGES/django.po -trans.pt = apps/project_setup/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/project_setup/locale/ru/LC_MESSAGES/django.po -trans.it = apps/project_setup/locale/it/LC_MESSAGES/django.po -trans.pl = apps/project_setup/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/project_setup/locale/de_DE/LC_MESSAGES/django.po - [main] host = https://www.transifex.net -[mayan-edms.apps-folders] -source_file = apps/folders/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-acls] +file_filter = apps/acls/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/folders/locale/es/LC_MESSAGES/django.po -trans.pt = apps/folders/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/folders/locale/ru/LC_MESSAGES/django.po -trans.it = apps/folders/locale/it/LC_MESSAGES/django.po -trans.pl = apps/folders/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/folders/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/acls/locale/en/LC_MESSAGES/django.po +type = PO -[mayan-edms.apps-history] -source_file = apps/history/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-bootstrap] +file_filter = apps/bootstrap/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/history/locale/es/LC_MESSAGES/django.po -trans.pt = apps/history/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/history/locale/ru/LC_MESSAGES/django.po -trans.it = apps/history/locale/it/LC_MESSAGES/django.po -trans.pl = apps/history/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/history/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/bootstrap/locale/en/LC_MESSAGES/django.po +type = PO -[mayan-edms.apps-dynamic_search] -source_file = apps/dynamic_search/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-checkouts] +file_filter = apps/checkouts/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/dynamic_search/locale/es/LC_MESSAGES/django.po -trans.pt = apps/dynamic_search/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/dynamic_search/locale/ru/LC_MESSAGES/django.po -trans.it = apps/dynamic_search/locale/it/LC_MESSAGES/django.po -trans.pl = apps/dynamic_search/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/dynamic_search/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/checkouts/locale/en/LC_MESSAGES/django.po +type = PO -[mayan-edms.apps-smart_settings] -source_file = apps/smart_settings/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-common] +file_filter = apps/common/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/smart_settings/locale/es/LC_MESSAGES/django.po -trans.pt = apps/smart_settings/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/smart_settings/locale/ru/LC_MESSAGES/django.po -trans.it = apps/smart_settings/locale/it/LC_MESSAGES/django.po -trans.pl = apps/smart_settings/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/smart_settings/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/common/locale/en/LC_MESSAGES/django.po +type = PO -[mayan-edms.apps-navigation] -source_file = apps/navigation/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-converter] +file_filter = apps/converter/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/navigation/locale/es/LC_MESSAGES/django.po -trans.pt = apps/navigation/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/navigation/locale/ru/LC_MESSAGES/django.po -trans.it = apps/navigation/locale/it/LC_MESSAGES/django.po -trans.pl = apps/navigation/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/navigation/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-tags] -source_file = apps/tags/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/tags/locale/es/LC_MESSAGES/django.po -trans.pt = apps/tags/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/tags/locale/ru/LC_MESSAGES/django.po -trans.it = apps/tags/locale/it/LC_MESSAGES/django.po -trans.pl = apps/tags/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/tags/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-documents] -source_file = apps/documents/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/documents/locale/es/LC_MESSAGES/django.po -trans.pt = apps/documents/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/documents/locale/ru/LC_MESSAGES/django.po -trans.it = apps/documents/locale/it/LC_MESSAGES/django.po -trans.pl = apps/documents/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/documents/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-project_tools] -source_file = apps/project_tools/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/project_tools/locale/es/LC_MESSAGES/django.po -trans.pt = apps/project_tools/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/project_tools/locale/ru/LC_MESSAGES/django.po -trans.it = apps/project_tools/locale/it/LC_MESSAGES/django.po -trans.pl = apps/project_tools/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/project_tools/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-linking] -source_file = apps/linking/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/linking/locale/es/LC_MESSAGES/django.po -trans.pt = apps/linking/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/linking/locale/ru/LC_MESSAGES/django.po -trans.it = apps/linking/locale/it/LC_MESSAGES/django.po -trans.pl = apps/linking/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/linking/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-document_comments] -source_file = apps/document_comments/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/document_comments/locale/es/LC_MESSAGES/django.po -trans.pt = apps/document_comments/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/document_comments/locale/ru/LC_MESSAGES/django.po -trans.it = apps/document_comments/locale/it/LC_MESSAGES/django.po -trans.pl = apps/document_comments/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/document_comments/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-metadata] -source_file = apps/metadata/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/metadata/locale/es/LC_MESSAGES/django.po -trans.pt = apps/metadata/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/metadata/locale/ru/LC_MESSAGES/django.po -trans.it = apps/metadata/locale/it/LC_MESSAGES/django.po -trans.pl = apps/metadata/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/metadata/locale/de_DE/LC_MESSAGES/django.po - -[mayan-edms.apps-web_theme] -source_file = apps/web_theme/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/web_theme/locale/es/LC_MESSAGES/django.po -trans.pt = apps/web_theme/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/web_theme/locale/ru/LC_MESSAGES/django.po -trans.it = apps/web_theme/locale/it/LC_MESSAGES/django.po -trans.pl = apps/web_theme/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/web_theme/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/converter/locale/en/LC_MESSAGES/django.po +type = PO [mayan-edms.apps-django_gpg] -source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po +file_filter = apps/django_gpg/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/django_gpg/locale/es/LC_MESSAGES/django.po -trans.pt = apps/django_gpg/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/django_gpg/locale/ru/LC_MESSAGES/django.po -trans.it = apps/django_gpg/locale/it/LC_MESSAGES/django.po -trans.pl = apps/django_gpg/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/django_gpg/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-documents] +file_filter = apps/documents/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/documents/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-document_comments] +file_filter = apps/document_comments/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/document_comments/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-document_indexing] +file_filter = apps/document_indexing/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/document_indexing/locale/en/LC_MESSAGES/django.po +type = PO [mayan-edms.apps-document_signatures] +file_filter = apps/document_signatures/locale//LC_MESSAGES/django.po +source_lang = en source_file = apps/document_signatures/locale/en/LC_MESSAGES/django.po -source_lang = en -trans.es = apps/document_signatures/locale/es/LC_MESSAGES/django.po -trans.pt = apps/document_signatures/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/document_signatures/locale/ru/LC_MESSAGES/django.po -trans.it = apps/document_signatures/locale/it/LC_MESSAGES/django.po -trans.pl = apps/document_signatures/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/document_signatures/locale/de_DE/LC_MESSAGES/django.po +type = PO -[mayan-edms.apps-acls] -source_file = apps/acls/locale/en/LC_MESSAGES/django.po +[mayan-edms.apps-dynamic_search] +file_filter = apps/dynamic_search/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/acls/locale/es/LC_MESSAGES/django.po -trans.pt = apps/acls/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/acls/locale/ru/LC_MESSAGES/django.po -trans.it = apps/acls/locale/it/LC_MESSAGES/django.po -trans.pl = apps/acls/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/acls/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/dynamic_search/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-folders] +file_filter = apps/folders/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/folders/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-history] +file_filter = apps/history/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/history/locale/en/LC_MESSAGES/django.po +type = PO [mayan-edms.apps-installation] -source_file = apps/installation/locale/en/LC_MESSAGES/django.po +file_filter = apps/installation/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/installation/locale/es/LC_MESSAGES/django.po -trans.pt = apps/installation/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/installation/locale/ru/LC_MESSAGES/django.po -trans.it = apps/installation/locale/it/LC_MESSAGES/django.po -trans.pl = apps/installation/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/installation/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/installation/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-linking] +file_filter = apps/linking/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/linking/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-main] +file_filter = apps/main/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/main/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-metadata] +file_filter = apps/metadata/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/metadata/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-navigation] +file_filter = apps/navigation/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/navigation/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-ocr] +file_filter = apps/ocr/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/ocr/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-permissions] +file_filter = apps/permissions/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/permissions/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-project_setup] +file_filter = apps/project_setup/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/project_setup/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-project_tools] +file_filter = apps/project_tools/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/project_tools/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-registration] +file_filter = apps/registration/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/registration/locale/en/LC_MESSAGES/django.po +type = PO [mayan-edms.apps-scheduler] -source_file = apps/scheduler/locale/en/LC_MESSAGES/django.po +file_filter = apps/scheduler/locale//LC_MESSAGES/django.po source_lang = en -trans.es = apps/scheduler/locale/es/LC_MESSAGES/django.po -trans.pt = apps/scheduler/locale/pt/LC_MESSAGES/django.po -trans.ru = apps/scheduler/locale/ru/LC_MESSAGES/django.po -trans.it = apps/scheduler/locale/it/LC_MESSAGES/django.po -trans.pl = apps/scheduler/locale/pl/LC_MESSAGES/django.po -trans.de_DE = apps/scheduler/locale/de_DE/LC_MESSAGES/django.po +source_file = apps/scheduler/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-smart_settings] +file_filter = apps/smart_settings/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/smart_settings/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-sources] +file_filter = apps/sources/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/sources/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-tags] +file_filter = apps/tags/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/tags/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-user_management] +file_filter = apps/user_management/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/user_management/locale/en/LC_MESSAGES/django.po +type = PO + +[mayan-edms.apps-web_theme] +file_filter = apps/web_theme/locale//LC_MESSAGES/django.po +source_lang = en +source_file = apps/web_theme/locale/en/LC_MESSAGES/django.po +type = PO diff --git a/apps/acls/cleanup.py b/apps/acls/cleanup.py new file mode 100644 index 0000000000..172c441a50 --- /dev/null +++ b/apps/acls/cleanup.py @@ -0,0 +1,8 @@ +from __future__ import absolute_import + +from .models import AccessEntry, DefaultAccessEntry + + +def cleanup(): + AccessEntry.objects.all().delete() + DefaultAccessEntry.objects.all().delete() diff --git a/apps/acls/locale/bg/LC_MESSAGES/django.mo b/apps/acls/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..cd7cbdefcf Binary files /dev/null and b/apps/acls/locale/bg/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/bg/LC_MESSAGES/django.po b/apps/acls/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..52d8e4f87c --- /dev/null +++ b/apps/acls/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,246 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Iliya Georgiev , 2012. +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-10-15 10:27+0000\n" +"Last-Translator: Pavlin Koldamov \n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: __init__.py:14 +msgid "ACLs" +msgstr "Контролни списъци за достъп" + +#: __init__.py:15 __init__.py:23 +msgid "details" +msgstr "детайли" + +#: __init__.py:16 __init__.py:25 +msgid "grant" +msgstr "предоставяне" + +#: __init__.py:17 __init__.py:26 +msgid "revoke" +msgstr "отменя" + +#: __init__.py:18 __init__.py:24 forms.py:21 +msgid "New holder" +msgstr "Нов притежател" + +#: __init__.py:20 +msgid "Default ACLs" +msgstr "Контролни списъци за достъп по подразбиране" + +#: __init__.py:21 +msgid "List of classes" +msgstr "Списък на класовете" + +#: __init__.py:22 +msgid "ACLs for class" +msgstr "Контролни списъци за клас" + +#: forms.py:38 +msgid "Users" +msgstr "Потребители" + +#: forms.py:41 +msgid "Groups" +msgstr "Групи" + +#: forms.py:44 +msgid "Roles" +msgstr "Роли" + +#: forms.py:47 +msgid "Special" +msgstr "" + +#: managers.py:118 managers.py:130 +msgid "Insufficient access." +msgstr "Недостатъчен достъп." + +#: models.py:25 models.py:67 +msgid "permission" +msgstr "разрешение" + +#: models.py:51 +msgid "access entry" +msgstr "достъп за влизане" + +#: models.py:52 +msgid "access entries" +msgstr "достъп вписвания" + +#: models.py:88 +msgid "default access entry" +msgstr "" + +#: models.py:89 +msgid "default access entries" +msgstr "" + +#: models.py:108 +msgid "Creator" +msgstr "" + +#: models.py:111 models.py:112 +msgid "creator" +msgstr "" + +#: permissions.py:7 permissions.py:8 +msgid "Access control lists" +msgstr "Контролни списъци за достъп" + +#: permissions.py:10 +msgid "Edit ACLs" +msgstr "" + +#: permissions.py:11 +msgid "View ACLs" +msgstr "" + +#: permissions.py:13 +msgid "Edit class default ACLs" +msgstr "" + +#: permissions.py:14 +msgid "View class default ACLs" +msgstr "" + +#: views.py:47 +#, python-format +msgid "access control lists for: %s" +msgstr "" + +#: views.py:49 views.py:409 +msgid "holder" +msgstr "" + +#: views.py:50 views.py:410 +msgid "permissions" +msgstr "разрешения" + +#: views.py:97 +#, python-format +msgid "permissions available to: %(actor)s for %(obj)s" +msgstr "" + +#: views.py:104 views.py:442 +msgid "namespace" +msgstr "" + +#: views.py:105 views.py:443 +msgid "label" +msgstr "" + +#: views.py:107 views.py:445 +msgid "has permission" +msgstr "" + +#: views.py:184 views.py:277 views.py:525 views.py:604 +msgid ", " +msgstr "" + +#: views.py:185 views.py:278 views.py:526 views.py:605 +#, python-format +msgid " for %s" +msgstr " за %s" + +#: views.py:186 views.py:527 +#, python-format +msgid " to %s" +msgstr " към %s" + +#: views.py:189 views.py:530 +#, python-format +msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +msgstr "Сигурни ли сте, че искате да дадете разрешение за %(title_suffix)s?" + +#: views.py:191 views.py:532 +#, python-format +msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +msgstr "Сигурни ли сте, че искате да дадете разрешения за %(title_suffix)s?" + +#: views.py:198 views.py:539 +#, python-format +msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "" + +#: views.py:204 views.py:545 +#, python-format +msgid "" +"%(actor)s, already had the permission \"%(permission)s\" granted for " +"%(object)s." +msgstr "" + +#: views.py:279 views.py:606 +#, python-format +msgid " from %s" +msgstr " от %s" + +#: views.py:282 views.py:609 +#, python-format +msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +msgstr "" +"Сигурни ли сте, че искате да отнемете разрешението за %(title_suffix)s?" + +#: views.py:284 views.py:611 +#, python-format +msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +msgstr "" +"Сигурни ли сте, че искате да отнемете разрешенията за %(title_suffix)s?" + +#: views.py:291 views.py:618 +#, python-format +msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +msgstr "" + +#: views.py:297 views.py:624 +#, python-format +msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +msgstr "" + +#: views.py:353 +#, python-format +msgid "add new holder for: %s" +msgstr "" + +#: views.py:354 views.py:486 +msgid "Select" +msgstr "" + +#: views.py:386 +msgid "classes" +msgstr "класове" + +#: views.py:388 +msgid "class" +msgstr "клас" + +#: views.py:407 +#, python-format +msgid "default access control lists for class: %s" +msgstr "правила за достъп по подразбиране за клас: %s" + +#: views.py:435 +#, python-format +msgid "permissions available to: %(actor)s for class %(class)s" +msgstr "" + +#: views.py:484 +#, python-format +msgid "add new holder for class: %s" +msgstr "" diff --git a/apps/acls/locale/de_DE/LC_MESSAGES/django.mo b/apps/acls/locale/de_DE/LC_MESSAGES/django.mo index 414c358817..482463bf51 100644 Binary files a/apps/acls/locale/de_DE/LC_MESSAGES/django.mo and b/apps/acls/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/de_DE/LC_MESSAGES/django.po b/apps/acls/locale/de_DE/LC_MESSAGES/django.po index 85d0af0106..3b254f7481 100644 --- a/apps/acls/locale/de_DE/LC_MESSAGES/django.po +++ b/apps/acls/locale/de_DE/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: +# , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" -"PO-Revision-Date: 2012-06-10 13:06+0000\n" -"Last-Translator: tilmannsittig \n" -"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-09-20 07:40+0000\n" +"Last-Translator: Manticor \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: __init__.py:14 msgid "ACLs" @@ -100,7 +102,7 @@ msgstr "" #: permissions.py:7 permissions.py:8 msgid "Access control lists" -msgstr "Zugriffs-Berechtigungs-Listen (ACLs)" +msgstr "Zugriffsberechtigungslisten (ACLs)" #: permissions.py:10 msgid "Edit ACLs" @@ -121,7 +123,7 @@ msgstr "Standard-ACLs für Klasse anzeigen" #: views.py:47 #, python-format msgid "access control lists for: %s" -msgstr "Standard-ACLs für: %s" +msgstr "Zugriffberechtigungsliste für: %s" #: views.py:49 views.py:409 msgid "holder" @@ -165,12 +167,16 @@ msgstr "zu %s" #: views.py:189 views.py:530 #, python-format msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie Berechtigung %(title_suffix)s erteilen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die Berechtigung %(title_suffix)s erteilen " +"möchten?" #: views.py:191 views.py:532 #, python-format msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie Berechtigungen %(title_suffix)s erteilen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die Berechtigungen %(title_suffix)s erteilen " +"möchten?" #: views.py:198 views.py:539 #, python-format @@ -192,12 +198,16 @@ msgstr "von %s" #: views.py:282 views.py:609 #, python-format msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie Berechtigung %(title_suffix)s enziehen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die Berechtigung %(title_suffix)s enziehen " +"möchten?" #: views.py:284 views.py:611 #, python-format msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "Sind Sie sicher, dass Sie Berechtigungen %(title_suffix)s enziehen möchten?" +msgstr "" +"Sind Sie sicher, dass Sie die Berechtigungen %(title_suffix)s enziehen " +"möchten?" #: views.py:291 views.py:618 #, python-format diff --git a/apps/acls/locale/en/LC_MESSAGES/django.mo b/apps/acls/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..28617bcfd5 Binary files /dev/null and b/apps/acls/locale/en/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/en/LC_MESSAGES/django.po b/apps/acls/locale/en/LC_MESSAGES/django.po index 4e7cbcdb1b..3f2fa1a312 100644 --- a/apps/acls/locale/en/LC_MESSAGES/django.po +++ b/apps/acls/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-17 19:03-0400\n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/apps/acls/locale/es/LC_MESSAGES/django.mo b/apps/acls/locale/es/LC_MESSAGES/django.mo index 8ed524e589..b0b7d06a99 100644 Binary files a/apps/acls/locale/es/LC_MESSAGES/django.mo and b/apps/acls/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/es/LC_MESSAGES/django.po b/apps/acls/locale/es/LC_MESSAGES/django.po index 400a9822d5..fa1223e4fb 100644 --- a/apps/acls/locale/es/LC_MESSAGES/django.po +++ b/apps/acls/locale/es/LC_MESSAGES/django.po @@ -1,22 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Roberto Rosario , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: 2012-02-12 00:16+0000\n" "Last-Translator: Roberto Rosario \n" -"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: __init__.py:14 msgid "ACLs" @@ -182,7 +183,8 @@ msgstr "Permiso \"%(permission)s\" otorgado a %(actor)s para %(object)s." msgid "" "%(actor)s, already had the permission \"%(permission)s\" granted for " "%(object)s." -msgstr "%(actor)s, ya tenía el permiso \"%(permission)s\", otorgado para %(object)s." +msgstr "" +"%(actor)s, ya tenía el permiso \"%(permission)s\", otorgado para %(object)s." #: views.py:279 views.py:606 #, python-format diff --git a/apps/acls/locale/fr/LC_MESSAGES/django.mo b/apps/acls/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..27c32dfb4e Binary files /dev/null and b/apps/acls/locale/fr/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/fr/LC_MESSAGES/django.po b/apps/acls/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000000..3dd792126e --- /dev/null +++ b/apps/acls/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,249 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Pierre Lhoste , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-28 15:20+0000\n" +"Last-Translator: Pierre Lhoste \n" +"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/" +"language/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: __init__.py:14 +msgid "ACLs" +msgstr "ACLs" + +#: __init__.py:15 __init__.py:23 +msgid "details" +msgstr "détails" + +#: __init__.py:16 __init__.py:25 +msgid "grant" +msgstr "autoriser" + +#: __init__.py:17 __init__.py:26 +msgid "revoke" +msgstr "révoquer" + +#: __init__.py:18 __init__.py:24 forms.py:21 +msgid "New holder" +msgstr "Nouveau détenteur" + +#: __init__.py:20 +msgid "Default ACLs" +msgstr "ACLs par défaut" + +#: __init__.py:21 +msgid "List of classes" +msgstr "Liste des classes" + +#: __init__.py:22 +msgid "ACLs for class" +msgstr "ACLs pour la classe" + +#: forms.py:38 +msgid "Users" +msgstr "Utilisateurs" + +#: forms.py:41 +msgid "Groups" +msgstr "Groupes" + +#: forms.py:44 +msgid "Roles" +msgstr "Rôles" + +#: forms.py:47 +msgid "Special" +msgstr "Spécial" + +#: managers.py:118 managers.py:130 +msgid "Insufficient access." +msgstr "Autorisations insuffisantes." + +#: models.py:25 models.py:67 +msgid "permission" +msgstr "autorisation" + +#: models.py:51 +msgid "access entry" +msgstr "autorisation d'accès" + +#: models.py:52 +msgid "access entries" +msgstr "autorisations d'accès" + +#: models.py:88 +msgid "default access entry" +msgstr "autorisation d'accès par défaut" + +#: models.py:89 +msgid "default access entries" +msgstr "autorisations d'accès par défaut" + +#: models.py:108 +msgid "Creator" +msgstr "Créateur" + +#: models.py:111 models.py:112 +msgid "creator" +msgstr "créateur" + +#: permissions.py:7 permissions.py:8 +msgid "Access control lists" +msgstr "Listes de contrôle d'accès (ACL)" + +#: permissions.py:10 +msgid "Edit ACLs" +msgstr "Modifier ACLs" + +#: permissions.py:11 +msgid "View ACLs" +msgstr "Afficher ACLs" + +#: permissions.py:13 +msgid "Edit class default ACLs" +msgstr "Modifier ACLs par défaut" + +#: permissions.py:14 +msgid "View class default ACLs" +msgstr "Afficher ACLs par défaut pour la classe" + +#: views.py:47 +#, python-format +msgid "access control lists for: %s" +msgstr "Liste de contrôle d'accès (ACL) pour: %s" + +#: views.py:49 views.py:409 +msgid "holder" +msgstr "détenteur" + +#: views.py:50 views.py:410 +msgid "permissions" +msgstr "autorisations" + +#: views.py:97 +#, python-format +msgid "permissions available to: %(actor)s for %(obj)s" +msgstr "autorisations pour: %(actor)s for %(obj)s" + +#: views.py:104 views.py:442 +msgid "namespace" +msgstr "espace de nommage" + +#: views.py:105 views.py:443 +msgid "label" +msgstr "label" + +#: views.py:107 views.py:445 +msgid "has permission" +msgstr "autorisation accordée " + +#: views.py:184 views.py:277 views.py:525 views.py:604 +msgid ", " +msgstr "," + +#: views.py:185 views.py:278 views.py:526 views.py:605 +#, python-format +msgid " for %s" +msgstr "à %s" + +#: views.py:186 views.py:527 +#, python-format +msgid " to %s" +msgstr "sur %s" + +#: views.py:189 views.py:530 +#, python-format +msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +msgstr "" +"Êtes vous certain de vouloir attribuer l'autorisation %(title_suffix)s?" + +#: views.py:191 views.py:532 +#, python-format +msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +msgstr "" +"Êtes vous certain de vouloir attribuer les autorisations %(title_suffix)s?" + +#: views.py:198 views.py:539 +#, python-format +msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "Autorisation \"%(permission)s\" accordée à %(actor)s sur %(object)s." + +#: views.py:204 views.py:545 +#, python-format +msgid "" +"%(actor)s, already had the permission \"%(permission)s\" granted for " +"%(object)s." +msgstr "" +"%(actor)s, dispose déjà de l'autorisation \"%(permission)s\" accordée sur " +"%(object)s." + +#: views.py:279 views.py:606 +#, python-format +msgid " from %s" +msgstr "de %s" + +#: views.py:282 views.py:609 +#, python-format +msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +msgstr "Êtes vous certain de vouloir révoquer l'autorisation %(title_suffix)s?" + +#: views.py:284 views.py:611 +#, python-format +msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +msgstr "" +"Êtes vous certain de vouloir révoquer les autorisations %(title_suffix)s?" + +#: views.py:291 views.py:618 +#, python-format +msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +msgstr "" +"Autorisation \"%(permission)s\" révoquée pour %(actor)s sur %(object)s." + +#: views.py:297 views.py:624 +#, python-format +msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +msgstr "%(actor)s, n'a pas l'autorisation \"%(permission)s\" sur %(object)s." + +#: views.py:353 +#, python-format +msgid "add new holder for: %s" +msgstr "ajouter un nouveau détenteur pour: %s" + +#: views.py:354 views.py:486 +msgid "Select" +msgstr "Sélectionner" + +#: views.py:386 +msgid "classes" +msgstr "classes" + +#: views.py:388 +msgid "class" +msgstr "classe" + +#: views.py:407 +#, python-format +msgid "default access control lists for class: %s" +msgstr "liste de contrôle d'accès (ACL) par défaut pour: %s" + +#: views.py:435 +#, python-format +msgid "permissions available to: %(actor)s for class %(class)s" +msgstr "autorisations attribuées à: %(actor)s sur la classe %(class)s" + +#: views.py:484 +#, python-format +msgid "add new holder for class: %s" +msgstr "ajouter un nouveau détenteur sur la classe: %s" diff --git a/apps/acls/locale/it/LC_MESSAGES/django.mo b/apps/acls/locale/it/LC_MESSAGES/django.mo index ad341dc8ba..d38f6d3d40 100644 Binary files a/apps/acls/locale/it/LC_MESSAGES/django.mo and b/apps/acls/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/it/LC_MESSAGES/django.po b/apps/acls/locale/it/LC_MESSAGES/django.po index 812db3525f..2331408ef6 100644 --- a/apps/acls/locale/it/LC_MESSAGES/django.po +++ b/apps/acls/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Carlo Zanatto <>, 2012. # Pierpaolo Baldan , 2012. @@ -9,16 +9,17 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: 2012-06-08 07:20+0000\n" "Last-Translator: Carlo Zanatto <>\n" -"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n" +"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: __init__.py:14 msgid "ACLs" diff --git a/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo b/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..1bc2ce974c Binary files /dev/null and b/apps/acls/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/nl_NL/LC_MESSAGES/django.po b/apps/acls/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 0000000000..b79a4d4a9b --- /dev/null +++ b/apps/acls/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,242 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-01-02 09:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/" +"mayan-edms/language/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: __init__.py:14 +msgid "ACLs" +msgstr "" + +#: __init__.py:15 __init__.py:23 +msgid "details" +msgstr "" + +#: __init__.py:16 __init__.py:25 +msgid "grant" +msgstr "" + +#: __init__.py:17 __init__.py:26 +msgid "revoke" +msgstr "" + +#: __init__.py:18 __init__.py:24 forms.py:21 +msgid "New holder" +msgstr "" + +#: __init__.py:20 +msgid "Default ACLs" +msgstr "" + +#: __init__.py:21 +msgid "List of classes" +msgstr "" + +#: __init__.py:22 +msgid "ACLs for class" +msgstr "" + +#: forms.py:38 +msgid "Users" +msgstr "" + +#: forms.py:41 +msgid "Groups" +msgstr "" + +#: forms.py:44 +msgid "Roles" +msgstr "" + +#: forms.py:47 +msgid "Special" +msgstr "" + +#: managers.py:118 managers.py:130 +msgid "Insufficient access." +msgstr "" + +#: models.py:25 models.py:67 +msgid "permission" +msgstr "" + +#: models.py:51 +msgid "access entry" +msgstr "" + +#: models.py:52 +msgid "access entries" +msgstr "" + +#: models.py:88 +msgid "default access entry" +msgstr "" + +#: models.py:89 +msgid "default access entries" +msgstr "" + +#: models.py:108 +msgid "Creator" +msgstr "" + +#: models.py:111 models.py:112 +msgid "creator" +msgstr "" + +#: permissions.py:7 permissions.py:8 +msgid "Access control lists" +msgstr "" + +#: permissions.py:10 +msgid "Edit ACLs" +msgstr "" + +#: permissions.py:11 +msgid "View ACLs" +msgstr "" + +#: permissions.py:13 +msgid "Edit class default ACLs" +msgstr "" + +#: permissions.py:14 +msgid "View class default ACLs" +msgstr "" + +#: views.py:47 +#, python-format +msgid "access control lists for: %s" +msgstr "" + +#: views.py:49 views.py:409 +msgid "holder" +msgstr "" + +#: views.py:50 views.py:410 +msgid "permissions" +msgstr "" + +#: views.py:97 +#, python-format +msgid "permissions available to: %(actor)s for %(obj)s" +msgstr "" + +#: views.py:104 views.py:442 +msgid "namespace" +msgstr "" + +#: views.py:105 views.py:443 +msgid "label" +msgstr "" + +#: views.py:107 views.py:445 +msgid "has permission" +msgstr "" + +#: views.py:184 views.py:277 views.py:525 views.py:604 +msgid ", " +msgstr "" + +#: views.py:185 views.py:278 views.py:526 views.py:605 +#, python-format +msgid " for %s" +msgstr "" + +#: views.py:186 views.py:527 +#, python-format +msgid " to %s" +msgstr "" + +#: views.py:189 views.py:530 +#, python-format +msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +msgstr "" + +#: views.py:191 views.py:532 +#, python-format +msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:198 views.py:539 +#, python-format +msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "" + +#: views.py:204 views.py:545 +#, python-format +msgid "" +"%(actor)s, already had the permission \"%(permission)s\" granted for " +"%(object)s." +msgstr "" + +#: views.py:279 views.py:606 +#, python-format +msgid " from %s" +msgstr "" + +#: views.py:282 views.py:609 +#, python-format +msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +msgstr "" + +#: views.py:284 views.py:611 +#, python-format +msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:291 views.py:618 +#, python-format +msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +msgstr "" + +#: views.py:297 views.py:624 +#, python-format +msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +msgstr "" + +#: views.py:353 +#, python-format +msgid "add new holder for: %s" +msgstr "" + +#: views.py:354 views.py:486 +msgid "Select" +msgstr "" + +#: views.py:386 +msgid "classes" +msgstr "" + +#: views.py:388 +msgid "class" +msgstr "" + +#: views.py:407 +#, python-format +msgid "default access control lists for class: %s" +msgstr "" + +#: views.py:435 +#, python-format +msgid "permissions available to: %(actor)s for class %(class)s" +msgstr "" + +#: views.py:484 +#, python-format +msgid "add new holder for class: %s" +msgstr "" diff --git a/apps/acls/locale/pl/LC_MESSAGES/django.mo b/apps/acls/locale/pl/LC_MESSAGES/django.mo index 165d256c99..057c19f8a2 100644 Binary files a/apps/acls/locale/pl/LC_MESSAGES/django.mo and b/apps/acls/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/pl/LC_MESSAGES/django.po b/apps/acls/locale/pl/LC_MESSAGES/django.po index 9166dd015f..78f5c50eb5 100644 --- a/apps/acls/locale/pl/LC_MESSAGES/django.po +++ b/apps/acls/locale/pl/LC_MESSAGES/django.po @@ -1,21 +1,23 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: 2012-01-02 09:45+0000\n" "Last-Translator: FULL NAME \n" -"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n" +"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/" +"language/pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\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" #: __init__.py:14 msgid "ACLs" diff --git a/apps/acls/locale/pt/LC_MESSAGES/django.mo b/apps/acls/locale/pt/LC_MESSAGES/django.mo index 8f6a25519a..6f34484dd9 100644 Binary files a/apps/acls/locale/pt/LC_MESSAGES/django.mo and b/apps/acls/locale/pt/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/pt/LC_MESSAGES/django.po b/apps/acls/locale/pt/LC_MESSAGES/django.po index b3ea310647..4ef7fcb1f5 100644 --- a/apps/acls/locale/pt/LC_MESSAGES/django.po +++ b/apps/acls/locale/pt/LC_MESSAGES/django.po @@ -1,241 +1,243 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: +# Vítor Figueiró , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" -"PO-Revision-Date: 2012-02-02 18:20+0000\n" -"Last-Translator: Roberto Rosario \n" -"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-03 19:01+0000\n" +"Last-Translator: Vítor Figueiró \n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: __init__.py:14 msgid "ACLs" -msgstr "" +msgstr "ACL's" #: __init__.py:15 __init__.py:23 msgid "details" -msgstr "" +msgstr "detalhes" #: __init__.py:16 __init__.py:25 msgid "grant" -msgstr "" +msgstr "conceder" #: __init__.py:17 __init__.py:26 msgid "revoke" -msgstr "" +msgstr "revogar" #: __init__.py:18 __init__.py:24 forms.py:21 msgid "New holder" -msgstr "" +msgstr "Novo detentor" #: __init__.py:20 msgid "Default ACLs" -msgstr "" +msgstr "ACL's padrão" #: __init__.py:21 msgid "List of classes" -msgstr "" +msgstr "Lista de classes" #: __init__.py:22 msgid "ACLs for class" -msgstr "" +msgstr "ACL's para a classe" #: forms.py:38 msgid "Users" -msgstr "" +msgstr "Utilizadores" #: forms.py:41 msgid "Groups" -msgstr "" +msgstr "Grupos" #: forms.py:44 msgid "Roles" -msgstr "" +msgstr "Funções" #: forms.py:47 msgid "Special" -msgstr "" +msgstr "Especial" #: managers.py:118 managers.py:130 msgid "Insufficient access." -msgstr "" +msgstr "Acesso insuficiente." #: models.py:25 models.py:67 msgid "permission" -msgstr "" +msgstr "permissão" #: models.py:51 msgid "access entry" -msgstr "" +msgstr "entrada de acesso" #: models.py:52 msgid "access entries" -msgstr "" +msgstr "entradas de acesso" #: models.py:88 msgid "default access entry" -msgstr "" +msgstr "entrada de acesso padrão" #: models.py:89 msgid "default access entries" -msgstr "" +msgstr "entradas de acesso padrão" #: models.py:108 msgid "Creator" -msgstr "" +msgstr "Criador" #: models.py:111 models.py:112 msgid "creator" -msgstr "" +msgstr "criador" #: permissions.py:7 permissions.py:8 msgid "Access control lists" -msgstr "" +msgstr "Listas de controlo de acesso" #: permissions.py:10 msgid "Edit ACLs" -msgstr "" +msgstr "Editar ACL's" #: permissions.py:11 msgid "View ACLs" -msgstr "" +msgstr "Ver ACL's" #: permissions.py:13 msgid "Edit class default ACLs" -msgstr "" +msgstr "Editar os ACL's padrão da classe" #: permissions.py:14 msgid "View class default ACLs" -msgstr "" +msgstr "Ver os ACL's padrão da classe" #: views.py:47 #, python-format msgid "access control lists for: %s" -msgstr "" +msgstr "listas de controlo de acesso para: %s" #: views.py:49 views.py:409 msgid "holder" -msgstr "" +msgstr "detentor" #: views.py:50 views.py:410 msgid "permissions" -msgstr "" +msgstr "permissões" #: views.py:97 #, python-format msgid "permissions available to: %(actor)s for %(obj)s" -msgstr "" +msgstr "permissões disponíveis para: %(actor)s para %(obj)s" #: views.py:104 views.py:442 msgid "namespace" -msgstr "" +msgstr "escopo" #: views.py:105 views.py:443 msgid "label" -msgstr "" +msgstr "rótulo" #: views.py:107 views.py:445 msgid "has permission" -msgstr "" +msgstr "tem a permissão" #: views.py:184 views.py:277 views.py:525 views.py:604 msgid ", " -msgstr "" +msgstr ", " #: views.py:185 views.py:278 views.py:526 views.py:605 #, python-format msgid " for %s" -msgstr "" +msgstr " para %s" #: views.py:186 views.py:527 #, python-format msgid " to %s" -msgstr "" +msgstr " a %s" #: views.py:189 views.py:530 #, python-format msgid "Are you sure you wish to grant the permission %(title_suffix)s?" -msgstr "" +msgstr "Tem a certeza de que pretende conceder a permissão %(title_suffix)s?" #: views.py:191 views.py:532 #, python-format msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" -msgstr "" +msgstr "Tem a certeza de que pretende conceder as permissões %(title_suffix)s?" #: views.py:198 views.py:539 #, python-format msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." -msgstr "" +msgstr "Permissão \"%(permission)s\" concedida a %(actor)s para %(object)s." #: views.py:204 views.py:545 #, python-format msgid "" "%(actor)s, already had the permission \"%(permission)s\" granted for " "%(object)s." -msgstr "" +msgstr "%(actor)s, já possuia a permissão \"%(permission)s\" para %(object)s." #: views.py:279 views.py:606 #, python-format msgid " from %s" -msgstr "" +msgstr " de %s" #: views.py:282 views.py:609 #, python-format msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" -msgstr "" +msgstr "Tem a certeza de que pretende revogar a permissão %(title_suffix)s?" #: views.py:284 views.py:611 #, python-format msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" -msgstr "" +msgstr "Tem a certeza de que pretende revogar as permissões %(title_suffix)s?" #: views.py:291 views.py:618 #, python-format msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." -msgstr "" +msgstr "Permissão \"%(permission)s\" revogada para %(actor)s para %(object)s." #: views.py:297 views.py:624 #, python-format msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." -msgstr "" +msgstr "%(actor)s, não tinha a permissão \"%(permission)s\" para %(object)s." #: views.py:353 #, python-format msgid "add new holder for: %s" -msgstr "" +msgstr "adicionar novo detentor para: %s" #: views.py:354 views.py:486 msgid "Select" -msgstr "" +msgstr "Selecionar" #: views.py:386 msgid "classes" -msgstr "" +msgstr "classes" #: views.py:388 msgid "class" -msgstr "" +msgstr "classe" #: views.py:407 #, python-format msgid "default access control lists for class: %s" -msgstr "" +msgstr "Listas de controlo de acesso padrão para a classe: %s" #: views.py:435 #, python-format msgid "permissions available to: %(actor)s for class %(class)s" -msgstr "" +msgstr "permissões disponíveis para: %(actor)s para a classe %(class)s" #: views.py:484 #, python-format msgid "add new holder for class: %s" -msgstr "" +msgstr "adicionar novo detentor para a classe: %s" diff --git a/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo b/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..41ca899112 Binary files /dev/null and b/apps/acls/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/pt_BR/LC_MESSAGES/django.po b/apps/acls/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000000..83bcabe8c4 --- /dev/null +++ b/apps/acls/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,242 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-01-02 09:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" +"mayan-edms/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: __init__.py:14 +msgid "ACLs" +msgstr "" + +#: __init__.py:15 __init__.py:23 +msgid "details" +msgstr "" + +#: __init__.py:16 __init__.py:25 +msgid "grant" +msgstr "" + +#: __init__.py:17 __init__.py:26 +msgid "revoke" +msgstr "" + +#: __init__.py:18 __init__.py:24 forms.py:21 +msgid "New holder" +msgstr "" + +#: __init__.py:20 +msgid "Default ACLs" +msgstr "" + +#: __init__.py:21 +msgid "List of classes" +msgstr "" + +#: __init__.py:22 +msgid "ACLs for class" +msgstr "" + +#: forms.py:38 +msgid "Users" +msgstr "" + +#: forms.py:41 +msgid "Groups" +msgstr "" + +#: forms.py:44 +msgid "Roles" +msgstr "" + +#: forms.py:47 +msgid "Special" +msgstr "" + +#: managers.py:118 managers.py:130 +msgid "Insufficient access." +msgstr "" + +#: models.py:25 models.py:67 +msgid "permission" +msgstr "" + +#: models.py:51 +msgid "access entry" +msgstr "" + +#: models.py:52 +msgid "access entries" +msgstr "" + +#: models.py:88 +msgid "default access entry" +msgstr "" + +#: models.py:89 +msgid "default access entries" +msgstr "" + +#: models.py:108 +msgid "Creator" +msgstr "" + +#: models.py:111 models.py:112 +msgid "creator" +msgstr "" + +#: permissions.py:7 permissions.py:8 +msgid "Access control lists" +msgstr "" + +#: permissions.py:10 +msgid "Edit ACLs" +msgstr "" + +#: permissions.py:11 +msgid "View ACLs" +msgstr "" + +#: permissions.py:13 +msgid "Edit class default ACLs" +msgstr "" + +#: permissions.py:14 +msgid "View class default ACLs" +msgstr "" + +#: views.py:47 +#, python-format +msgid "access control lists for: %s" +msgstr "" + +#: views.py:49 views.py:409 +msgid "holder" +msgstr "" + +#: views.py:50 views.py:410 +msgid "permissions" +msgstr "" + +#: views.py:97 +#, python-format +msgid "permissions available to: %(actor)s for %(obj)s" +msgstr "" + +#: views.py:104 views.py:442 +msgid "namespace" +msgstr "" + +#: views.py:105 views.py:443 +msgid "label" +msgstr "" + +#: views.py:107 views.py:445 +msgid "has permission" +msgstr "" + +#: views.py:184 views.py:277 views.py:525 views.py:604 +msgid ", " +msgstr "" + +#: views.py:185 views.py:278 views.py:526 views.py:605 +#, python-format +msgid " for %s" +msgstr "" + +#: views.py:186 views.py:527 +#, python-format +msgid " to %s" +msgstr "" + +#: views.py:189 views.py:530 +#, python-format +msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +msgstr "" + +#: views.py:191 views.py:532 +#, python-format +msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:198 views.py:539 +#, python-format +msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "" + +#: views.py:204 views.py:545 +#, python-format +msgid "" +"%(actor)s, already had the permission \"%(permission)s\" granted for " +"%(object)s." +msgstr "" + +#: views.py:279 views.py:606 +#, python-format +msgid " from %s" +msgstr "" + +#: views.py:282 views.py:609 +#, python-format +msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +msgstr "" + +#: views.py:284 views.py:611 +#, python-format +msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:291 views.py:618 +#, python-format +msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +msgstr "" + +#: views.py:297 views.py:624 +#, python-format +msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +msgstr "" + +#: views.py:353 +#, python-format +msgid "add new holder for: %s" +msgstr "" + +#: views.py:354 views.py:486 +msgid "Select" +msgstr "" + +#: views.py:386 +msgid "classes" +msgstr "" + +#: views.py:388 +msgid "class" +msgstr "" + +#: views.py:407 +#, python-format +msgid "default access control lists for class: %s" +msgstr "" + +#: views.py:435 +#, python-format +msgid "permissions available to: %(actor)s for class %(class)s" +msgstr "" + +#: views.py:484 +#, python-format +msgid "add new holder for class: %s" +msgstr "" diff --git a/apps/acls/locale/ru/LC_MESSAGES/django.mo b/apps/acls/locale/ru/LC_MESSAGES/django.mo index 5888c18a16..4649d85fff 100644 Binary files a/apps/acls/locale/ru/LC_MESSAGES/django.mo and b/apps/acls/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/acls/locale/ru/LC_MESSAGES/django.po b/apps/acls/locale/ru/LC_MESSAGES/django.po index ba1c6f089e..ddbecbb9e9 100644 --- a/apps/acls/locale/ru/LC_MESSAGES/django.po +++ b/apps/acls/locale/ru/LC_MESSAGES/django.po @@ -1,22 +1,24 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Sergey Glita , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:09-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: 2012-02-27 04:26+0000\n" "Last-Translator: Sergey Glita \n" -"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n" +"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: __init__.py:14 msgid "ACLs" diff --git a/apps/acls/locale/sl_SI/LC_MESSAGES/django.po b/apps/acls/locale/sl_SI/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a905570da8 --- /dev/null +++ b/apps/acls/locale/sl_SI/LC_MESSAGES/django.po @@ -0,0 +1,241 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2012-07-26 23:54-0400\n" +"PO-Revision-Date: 2012-01-02 09:45+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/mayan-edms/language/sl_SI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl_SI\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: forms.py:21 links.py:14 links.py:20 +msgid "New holder" +msgstr "" + +#: forms.py:38 +msgid "Users" +msgstr "" + +#: forms.py:41 +msgid "Groups" +msgstr "" + +#: forms.py:44 +msgid "Roles" +msgstr "" + +#: forms.py:47 +msgid "Special" +msgstr "" + +#: links.py:10 +msgid "ACLs" +msgstr "" + +#: links.py:11 links.py:19 +msgid "details" +msgstr "" + +#: links.py:12 links.py:21 +msgid "grant" +msgstr "" + +#: links.py:13 links.py:22 +msgid "revoke" +msgstr "" + +#: links.py:16 +msgid "Default ACLs" +msgstr "" + +#: links.py:17 +msgid "List of classes" +msgstr "" + +#: links.py:18 +msgid "ACLs for class" +msgstr "" + +#: managers.py:119 managers.py:131 +msgid "Insufficient access." +msgstr "" + +#: models.py:25 models.py:67 +msgid "permission" +msgstr "" + +#: models.py:51 +msgid "access entry" +msgstr "" + +#: models.py:52 +msgid "access entries" +msgstr "" + +#: models.py:88 +msgid "default access entry" +msgstr "" + +#: models.py:89 +msgid "default access entries" +msgstr "" + +#: models.py:108 +msgid "Creator" +msgstr "" + +#: models.py:111 models.py:112 +msgid "creator" +msgstr "" + +#: permissions.py:7 permissions.py:8 +msgid "Access control lists" +msgstr "" + +#: permissions.py:10 +msgid "Edit ACLs" +msgstr "" + +#: permissions.py:11 +msgid "View ACLs" +msgstr "" + +#: permissions.py:13 +msgid "Edit class default ACLs" +msgstr "" + +#: permissions.py:14 +msgid "View class default ACLs" +msgstr "" + +#: views.py:47 +#, python-format +msgid "access control lists for: %s" +msgstr "" + +#: views.py:49 views.py:409 +msgid "holder" +msgstr "" + +#: views.py:50 views.py:410 +msgid "permissions" +msgstr "" + +#: views.py:97 +#, python-format +msgid "permissions available to: %(actor)s for %(obj)s" +msgstr "" + +#: views.py:104 views.py:442 +msgid "namespace" +msgstr "" + +#: views.py:105 views.py:443 +msgid "label" +msgstr "" + +#: views.py:107 views.py:445 +msgid "has permission" +msgstr "" + +#: views.py:184 views.py:277 views.py:525 views.py:604 +msgid ", " +msgstr "" + +#: views.py:185 views.py:278 views.py:526 views.py:605 +#, python-format +msgid " for %s" +msgstr "" + +#: views.py:186 views.py:527 +#, python-format +msgid " to %s" +msgstr "" + +#: views.py:189 views.py:530 +#, python-format +msgid "Are you sure you wish to grant the permission %(title_suffix)s?" +msgstr "" + +#: views.py:191 views.py:532 +#, python-format +msgid "Are you sure you wish to grant the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:198 views.py:539 +#, python-format +msgid "Permission \"%(permission)s\" granted to %(actor)s for %(object)s." +msgstr "" + +#: views.py:204 views.py:545 +#, python-format +msgid "" +"%(actor)s, already had the permission \"%(permission)s\" granted for " +"%(object)s." +msgstr "" + +#: views.py:279 views.py:606 +#, python-format +msgid " from %s" +msgstr "" + +#: views.py:282 views.py:609 +#, python-format +msgid "Are you sure you wish to revoke the permission %(title_suffix)s?" +msgstr "" + +#: views.py:284 views.py:611 +#, python-format +msgid "Are you sure you wish to revoke the permissions %(title_suffix)s?" +msgstr "" + +#: views.py:291 views.py:618 +#, python-format +msgid "Permission \"%(permission)s\" revoked of %(actor)s for %(object)s." +msgstr "" + +#: views.py:297 views.py:624 +#, python-format +msgid "%(actor)s, didn't had the permission \"%(permission)s\" for %(object)s." +msgstr "" + +#: views.py:353 +#, python-format +msgid "add new holder for: %s" +msgstr "" + +#: views.py:354 views.py:486 +msgid "Select" +msgstr "" + +#: views.py:386 +msgid "classes" +msgstr "" + +#: views.py:388 +msgid "class" +msgstr "" + +#: views.py:407 +#, python-format +msgid "default access control lists for class: %s" +msgstr "" + +#: views.py:435 +#, python-format +msgid "permissions available to: %(actor)s for class %(class)s" +msgstr "" + +#: views.py:484 +#, python-format +msgid "add new holder for class: %s" +msgstr "" diff --git a/apps/acls/registry.py b/apps/acls/registry.py new file mode 100644 index 0000000000..80422bed67 --- /dev/null +++ b/apps/acls/registry.py @@ -0,0 +1,10 @@ +from __future__ import absolute_import + +from .cleanup import cleanup + +bootstrap_models = [ + { + 'name': 'defaultaccessentry', + }, +] +cleanup_functions = [cleanup] diff --git a/apps/app_registry/__init__.py b/apps/app_registry/__init__.py new file mode 100644 index 0000000000..4020e8369d --- /dev/null +++ b/apps/app_registry/__init__.py @@ -0,0 +1,23 @@ +from __future__ import absolute_import + +import logging + +from django.conf import settings +from django.utils.importlib import import_module + +from .models import App + +logger = logging.getLogger(__name__) + + +def register_apps(): + for app_name in settings.INSTALLED_APPS: + logger.debug('registering: %s' % app_name) + App.register(app_name) + try: + post_init = import_module('%s.post_init' % app_name) + except ImportError: + logger.debug('Unable to import post_init module from: %s' % app_name) + + +register_apps() diff --git a/apps/app_registry/models.py b/apps/app_registry/models.py new file mode 100644 index 0000000000..b99001aecb --- /dev/null +++ b/apps/app_registry/models.py @@ -0,0 +1,62 @@ +from __future__ import absolute_import + +import logging +import imp +import sys + +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.utils.importlib import import_module + +from project_setup.api import register_setup +from project_tools.api import register_tool +from navigation.api import register_top_menu +from bootstrap.classes import Cleanup, BootstrapModel + +logger = logging.getLogger(__name__) + + +class App(object): + @classmethod + def register(cls, app_name): + logger.debug('Trying to import: %s' % app_name) + try: + app_module = import_module(app_name) + except ImportError: + logger.debug('Unable to import app: %s' % app_name) + else: + logger.debug('Trying to import registry from: %s' % app_name) + try: + registration = import_module('%s.registry' % app_name) + except ImportError: + logger.debug('Unable to import registry for app: %s' % app_name) + else: + if not getattr(registration, 'disabled', False): + app = App() + app.name=app_name + # If there are not error go ahead with the stored app instance + app.label = getattr(registration, 'label', app_name) + app.description = getattr(registration, 'description', u'') + + for link in getattr(registration, 'setup_links', []): + logger.debug('setup link: %s' % link) + register_setup(link) + + for link in getattr(registration, 'tool_links', []): + logger.debug('tool link: %s' % link) + register_tool(link) + + for index, link in enumerate(getattr(registration, 'menu_links', [])): + logger.debug('menu_link: %s' % link) + register_top_menu(name='%s.%s' % (app_name, index), link=link) + + for cleanup_function in getattr(registration, 'cleanup_functions', []): + logger.debug('cleanup_function: %s' % cleanup_function) + Cleanup(cleanup_function) + + for bootstrap_model in getattr(registration, 'bootstrap_models', []): + logger.debug('bootstrap_model: %s' % bootstrap_model) + BootstrapModel(model_name=bootstrap_model.get('name'), app_name=app_name, sanitize=bootstrap_model.get('sanitize', True), dependencies=bootstrap_model.get('dependencies')) + + def __unicode__(self): + return unicode(self.label) diff --git a/apps/bootstrap/__init__.py b/apps/bootstrap/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/bootstrap/admin.py b/apps/bootstrap/admin.py new file mode 100644 index 0000000000..86013694b3 --- /dev/null +++ b/apps/bootstrap/admin.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import + +from django.contrib import admin + +from .models import BootstrapSetup + +admin.site.register(BootstrapSetup) diff --git a/apps/bootstrap/classes.py b/apps/bootstrap/classes.py new file mode 100644 index 0000000000..f8d701a1ef --- /dev/null +++ b/apps/bootstrap/classes.py @@ -0,0 +1,172 @@ +from __future__ import absolute_import + +import logging +from itertools import chain + +from django.db import models +from django.core import serializers +from django.utils.datastructures import SortedDict + +from .exceptions import ExistingData, NotABootstrapSetup +from .literals import (FIXTURE_TYPE_PK_NULLIFIER, FIXTURE_TYPE_MODEL_PROCESS, + FIXTURE_METADATA_REMARK_CHARACTER, BOOTSTRAP_SETUP_MAGIC_NUMBER) +from .utils import toposort2 + +logger = logging.getLogger(__name__) + + +class Cleanup(object): + """ + Class to store all the registered cleanup functions in one place. + """ + _registry = {} + + @classmethod + def execute_all(cls): + for cleanup in cls._registry.values(): + cleanup.function() + + def __init__(self, function): + self.function = function + self.__class__._registry[id(self)] = self + + +class BootstrapModel(object): + """ + Class used to keep track of all the models to be dumped to create a + bootstrap setup from the current setup in use. + """ + _registry = SortedDict() + + @classmethod + def get_magic_number(cls): + return '%s %s' % (FIXTURE_METADATA_REMARK_CHARACTER, BOOTSTRAP_SETUP_MAGIC_NUMBER) + + @classmethod + def check_magic_number(cls, data): + if not data.startswith(cls.get_magic_number()): + raise NotABootstrapSetup + + @classmethod + def check_for_data(cls): + for model in cls.get_all(): + model_instance = models.get_model(model.app_name, model.model_name) + if model_instance.objects.all().count(): + raise ExistingData + + @classmethod + def get_all(cls, sort_by_dependencies=False): + """ + Return all boostrap models, sorted by dependencies optionally. + """ + if not sort_by_dependencies: + return cls._registry.values() + else: + return (cls.get_by_name(name) for name in list(chain.from_iterable(toposort2(cls.get_dependency_dict())))) + + @classmethod + def get_dependency_dict(cls): + """ + Return a dictionary where the key is the model name and it's value + is a list of models upon which it depends. + """ + result = {} + for instance in cls.get_all(): + result[instance.get_fullname()] = set(instance.dependencies) + + logger.debug('result: %s' % result) + return result + + @classmethod + def get_by_name(cls, name): + """ + Return a BootstrapModel instance by the fullname of the model it + represents. + """ + return cls._registry[name] + + def get_fullname(self): + """ + Return a the full app name + model name of the model represented + by the instance. + """ + return '.'.join([self.app_name, self.model_name]) + + def get_model_instance(self): + """ + Returns an actual Model class instance of the model. + """ + return models.get_model(self.app_name, self.model_name) + + def __init__(self, model_name, app_name=None, sanitize=True, dependencies=None): + app_name_splitted = None + if '.' in model_name: + app_name_splitted, model_name = model_name.split('.') + + self.app_name = app_name_splitted or app_name + if not self.app_name: + raise Exception('Pass either a dotted app plus model name or a model name and a separate app name') + self.model_name = model_name + self.sanitize = sanitize + self.dependencies = dependencies if dependencies else [] + self.__class__._registry[self.get_fullname()] = self + + def dump(self, serialization_format): + result = serializers.serialize(serialization_format, self.get_model_instance().objects.all(), indent=4, use_natural_keys=True) + logger.debug('result: "%s"' % result) + if self.sanitize: + # Remove primary key values + result = FIXTURE_TYPE_PK_NULLIFIER[serialization_format](result) + # Do any clean up required on the fixture + result = FIXTURE_TYPE_MODEL_PROCESS[serialization_format](result) + return result + + +class FixtureMetadata(object): + """ + Class to automatically create and extract metadata from a bootstrap + fixture. + """ + _registry = SortedDict() + + @classmethod + def get_all(cls): + return cls._registry.values() + + @classmethod + def generate_all(cls, fixture_instance): + result = [] + for fixture_metadata in cls.get_all(): + result.append(fixture_metadata.generate(fixture_instance)) + + return '\n'.join(result) + + @classmethod + def read_all(cls, data): + result = {} + for instance in cls.get_all(): + single_result = instance.read_value(data) + if single_result: + result[instance.property_name] = single_result + + return result + + def __init__(self, literal, generate_function, read_function=None, property_name=None): + self.literal = literal + self.generate_function = generate_function + self.property_name = property_name + self.read_function = read_function or (lambda x: x) + self.__class__._registry[id(self)] = self + + def get_with_remark(self): + return '%s %s' % (FIXTURE_METADATA_REMARK_CHARACTER, self.literal) + + def generate(self, fixture_instance): + return '%s: %s' % (self.get_with_remark(), self.generate_function(fixture_instance)) + + def read_value(self, fixture_data): + if self.property_name: + for line in fixture_data.splitlines(False): + if line.startswith(self.get_with_remark()): + # TODO: replace the "+ 4" with a space and next character finding algo + return self.read_function(line[len(self.literal) + 4:]) diff --git a/apps/bootstrap/exceptions.py b/apps/bootstrap/exceptions.py new file mode 100644 index 0000000000..09698c6397 --- /dev/null +++ b/apps/bootstrap/exceptions.py @@ -0,0 +1,18 @@ +from __future__ import absolute_import + + +class ExistingData(Exception): + """ + Raised when an attempt to execute a bootstrap setup is made and there is + existing data that would be corrupted or damaged by the loading the + bootstrap's fixture. + """ + pass + + +class NotABootstrapSetup(Exception): + """ + Raised when an attempting to import a bootstrap setup without a proper + magic number metadata + """ + pass diff --git a/apps/bootstrap/forms.py b/apps/bootstrap/forms.py new file mode 100644 index 0000000000..30621a81a9 --- /dev/null +++ b/apps/bootstrap/forms.py @@ -0,0 +1,57 @@ +from __future__ import absolute_import + +import logging + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from common.forms import DetailForm + +from .models import BootstrapSetup + +logger = logging.getLogger(__name__) + + +class BootstrapSetupForm(forms.ModelForm): + class Meta: + model = BootstrapSetup + widgets = { + 'description': forms.widgets.Textarea(attrs={ + 'rows': 5, 'cols': 80, + } + ) + } + + +class BootstrapSetupForm_view(DetailForm): + class Meta: + model = BootstrapSetup + widgets = { + 'description': forms.widgets.Textarea(attrs={ + 'rows': 5, 'cols': 80, + } + ) + } + +class BootstrapSetupForm_edit(BootstrapSetupForm): + class Meta(BootstrapSetupForm.Meta): + model = BootstrapSetup + exclude = ('type',) + + +class BootstrapSetupForm_dump(BootstrapSetupForm): + class Meta(BootstrapSetupForm.Meta): + model = BootstrapSetup + exclude = ('fixture',) + + +class BootstrapFileImportForm(forms.Form): + file = forms.FileField( + label=_(u'Bootstrap setup file'), + ) + + +class BootstrapURLImportForm(forms.Form): + url = forms.URLField( + label=_(u'Bootstrap setup URL'), + ) diff --git a/apps/bootstrap/links.py b/apps/bootstrap/links.py new file mode 100644 index 0000000000..63e51dfa29 --- /dev/null +++ b/apps/bootstrap/links.py @@ -0,0 +1,23 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE, + PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE, + PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_BOOTSTRAP_DUMP, + PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_EXPORT, + PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC) + +link_bootstrap_setup_tool = {'text': _(u'bootstrap'), 'view': 'bootstrap_setup_list', 'icon': 'lightning.png', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]} +link_bootstrap_setup_list = {'text': _(u'bootstrap setup list'), 'view': 'bootstrap_setup_list', 'famfam': 'lightning', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]} +link_bootstrap_setup_create = {'text': _(u'create new bootstrap setup'), 'view': 'bootstrap_setup_create', 'famfam': 'lightning_add', 'permissions': [PERMISSION_BOOTSTRAP_CREATE]} +link_bootstrap_setup_edit = {'text': _(u'edit'), 'view': 'bootstrap_setup_edit', 'args': 'object.pk', 'famfam': 'pencil', 'permissions': [PERMISSION_BOOTSTRAP_EDIT]} +link_bootstrap_setup_delete = {'text': _(u'delete'), 'view': 'bootstrap_setup_delete', 'args': 'object.pk', 'famfam': 'lightning_delete', 'permissions': [PERMISSION_BOOTSTRAP_DELETE]} +link_bootstrap_setup_view = {'text': _(u'details'), 'view': 'bootstrap_setup_view', 'args': 'object.pk', 'famfam': 'lightning', 'permissions': [PERMISSION_BOOTSTRAP_VIEW]} +link_bootstrap_setup_execute = {'text': _(u'execute'), 'view': 'bootstrap_setup_execute', 'args': 'object.pk', 'famfam': 'lightning_go', 'permissions': [PERMISSION_BOOTSTRAP_EXECUTE]} +link_bootstrap_setup_dump = {'text': _(u'dump current setup'), 'view': 'bootstrap_setup_dump', 'famfam': 'arrow_down', 'permissions': [PERMISSION_BOOTSTRAP_DUMP]} +link_bootstrap_setup_export = {'text': _(u'export'), 'view': 'bootstrap_setup_export', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_BOOTSTRAP_EXPORT]} +link_bootstrap_setup_import_from_file = {'text': _(u'import from file'), 'view': 'bootstrap_setup_import_from_file', 'famfam': 'folder', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]} +link_bootstrap_setup_import_from_url = {'text': _(u'import from URL'), 'view': 'bootstrap_setup_import_from_url', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_IMPORT]} +link_bootstrap_setup_repository_sync = {'text': _(u'sync with repository'), 'view': 'bootstrap_setup_repository_sync', 'famfam': 'world', 'permissions': [PERMISSION_BOOTSTRAP_REPOSITORY_SYNC]} +link_erase_database = {'text': _(u'erase database'), 'view': 'erase_database_view', 'icon': 'radioactivity.png', 'permissions': [PERMISSION_NUKE_DATABASE]} diff --git a/apps/bootstrap/literals.py b/apps/bootstrap/literals.py new file mode 100644 index 0000000000..c85577d1de --- /dev/null +++ b/apps/bootstrap/literals.py @@ -0,0 +1,81 @@ +from __future__ import absolute_import + +import re + +try: + import yaml +except ImportError: + YAML_AVAILABLE = False +else: + YAML_AVAILABLE = True + +from django.utils.translation import ugettext_lazy as _ + +FIXTURE_TYPE_JSON = 'json' +FIXTURE_TYPE_YAML = 'yaml' +FIXTURE_TYPE_BETTER_YAML = 'better_yaml' +FIXTURE_TYPE_XML = 'xml' + +FIXTURE_TYPES_CHOICES = ( + (FIXTURE_TYPE_JSON, _(u'JSON')), + # Disabing XML until a way to specify a null pk is found + #(FIXTURE_TYPE_XML, _(u'XML')), +) + +FIXTURE_FILE_TYPE = { + FIXTURE_TYPE_JSON: 'json', + FIXTURE_TYPE_YAML: 'yaml', + FIXTURE_TYPE_BETTER_YAML: 'better_yaml', + FIXTURE_TYPE_XML: 'xml', +} + +FIXTURE_TYPE_PK_NULLIFIER = { + FIXTURE_TYPE_JSON: lambda x: re.sub('"pk": [0-9]{1,5}', '"pk": null', x), + FIXTURE_TYPE_YAML: lambda x: re.sub('pk: [0-9]{1,5}', 'pk: null', x), + FIXTURE_TYPE_BETTER_YAML: lambda x: re.sub('[0-9]{1,5}:', 'null:', x), + FIXTURE_TYPE_XML: lambda x: re.sub('pk="[0-9]{1,5}"', 'pk=null', x), +} + +FIXTURE_TYPE_EMPTY_FIXTURE = { + FIXTURE_TYPE_JSON: lambda x: x.startswith('[]') or x == ',', + FIXTURE_TYPE_YAML: lambda x: x.startswith('[]'), + FIXTURE_TYPE_BETTER_YAML: lambda x: x.startswith('{}'), + FIXTURE_TYPE_XML: lambda x: x, +} + +FIXTURE_TYPE_MODEL_PROCESS = { + FIXTURE_TYPE_JSON: lambda x: '%s,' % x[2:-2], + FIXTURE_TYPE_YAML: lambda x: x, + FIXTURE_TYPE_BETTER_YAML: lambda x: x, + FIXTURE_TYPE_XML: lambda x: x, +} + +FIXTURE_TYPE_FIXTURE_PROCESS = { + FIXTURE_TYPE_JSON: lambda x: '[\n%s\n]' % x[:-1], # Enclose in [], remove last comma + FIXTURE_TYPE_YAML: lambda x: x, + FIXTURE_TYPE_BETTER_YAML: lambda x: x, + FIXTURE_TYPE_XML: lambda x: x, +} + +COMMAND_LOADDATA = 'loaddata' + +if YAML_AVAILABLE: + FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_YAML, _(u'YAML')), + FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_BETTER_YAML, _(u'Better YAML')), + # better_yaml is not working with natural keys + +FIXTURE_METADATA_REMARK_CHARACTER = '#' +DATETIME_STRING_FORMAT = '%a, %d %b %Y %H:%M:%S +0000' +FIXTURE_METADATA_CREATED = 'created' +FIXTURE_METADATA_EDITED = 'edited' +FIXTURE_METADATA_MAYAN_VERSION = 'mayan_edms_version' +FIXTURE_METADATA_FORMAT = 'format' +FIXTURE_METADATA_NAME = 'name' +FIXTURE_METADATA_SLUG = 'slug' +FIXTURE_METADATA_DESCRIPTION = 'description' +BOOTSTRAP_EXTENSION = 'txt' + +BOOTSTRAP_SETUP_MAGIC_NUMBER = 'bootstrap setup' + +BOOTSTRAP_REPOSITORY_URL = 'http://bootstrap.mayan-edms.com' +BOOTSTRAP_REPOSITORY_INDEX_FILE = '_repo_index.txt' diff --git a/apps/bootstrap/locale/bg/LC_MESSAGES/django.mo b/apps/bootstrap/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..13f66b41cd Binary files /dev/null and b/apps/bootstrap/locale/bg/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/bg/LC_MESSAGES/django.po b/apps/bootstrap/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..0d446837e6 --- /dev/null +++ b/apps/bootstrap/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,329 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\n" +"PO-Revision-Date: 2012-10-17 10:27+0000\n" +"Last-Translator: Pavlin Koldamov \n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "редактиране" + +#: links.py:15 +msgid "delete" +msgstr "изтриване" + +#: links.py:16 +msgid "details" +msgstr "детайли" + +#: links.py:17 +msgid "execute" +msgstr "изпълнение" + +#: links.py:18 +msgid "dump current setup" +msgstr "изпринтване на текущата настройка" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "изтриване на база данни" + +#: literals.py:20 +msgid "JSON" +msgstr "JSON" + +#: literals.py:63 +msgid "YAML" +msgstr "YAML" + +#: literals.py:64 +msgid "Better YAML" +msgstr "Подобрен YAML" + +#: models.py:30 +msgid "name" +msgstr "име" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "описание" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" +"Това са текущите инструкции за създаване на структурата на базата данни." + +#: models.py:34 views.py:35 +msgid "type" +msgstr "тип" + +#: models.py:35 +msgid "creation date and time" +msgstr "дата и време на създаване" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "Изтрийте цялата база данни за съхраняване и документното пространство" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +#, fuzzy +msgid "Bootstrap setup created successfully" +msgstr "Базата данни е изтрита успешно." + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, fuzzy, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" +"Сигурен ли сте, че искате да изтриете цялата база данни и документното " +"пространство?" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +#, fuzzy +msgid "Bootstrap setup created successfully." +msgstr "Базата данни е изтрита успешно." + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +#, fuzzy +msgid "Bootstrap setup imported successfully." +msgstr "Базата данни е изтрита успешно." + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "Грешка при изтриване на база данни; %s" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "Базата данни е изтрита успешно." + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" +"Сигурен ли сте, че искате да изтриете цялата база данни и документното " +"пространство?" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +#, fuzzy +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" +"Сигурен ли сте, че искате да изтриете цялата база данни и документното " +"пространство?" diff --git a/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.mo b/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..b399445ead Binary files /dev/null and b/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.po b/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.po new file mode 100644 index 0000000000..791bcc3814 --- /dev/null +++ b/apps/bootstrap/locale/de_DE/LC_MESSAGES/django.po @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/en/LC_MESSAGES/django.mo b/apps/bootstrap/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..b399445ead Binary files /dev/null and b/apps/bootstrap/locale/en/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/en/LC_MESSAGES/django.po b/apps/bootstrap/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000000..791bcc3814 --- /dev/null +++ b/apps/bootstrap/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/es/LC_MESSAGES/django.mo b/apps/bootstrap/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..3bd455fcc6 Binary files /dev/null and b/apps/bootstrap/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/es/LC_MESSAGES/django.po b/apps/bootstrap/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000000..d2fae2a881 --- /dev/null +++ b/apps/bootstrap/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,328 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Roberto Rosario , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\n" +"PO-Revision-Date: 2012-12-12 06:04+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/" +"language/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "arranque" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "list de configuraciones de arranque" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "crear nueva configuración de arranque" + +#: links.py:14 +msgid "edit" +msgstr "editar" + +#: links.py:15 +msgid "delete" +msgstr "borrar" + +#: links.py:16 +msgid "details" +msgstr "detalles" + +#: links.py:17 +msgid "execute" +msgstr "ejecutar" + +#: links.py:18 +msgid "dump current setup" +msgstr "grabar la configuración actual" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "borrar la base de datos" + +#: literals.py:20 +msgid "JSON" +msgstr "JSON" + +#: literals.py:63 +msgid "YAML" +msgstr "YAML" + +#: literals.py:64 +msgid "Better YAML" +msgstr "Better YAML" + +#: models.py:30 +msgid "name" +msgstr "nombre" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "descripción" + +#: models.py:33 +msgid "fixture" +msgstr "código" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" +"Estas son la instrucciones reales para la creación de las estructuras de la " +"base de datos." + +#: models.py:34 views.py:35 +msgid "type" +msgstr "tipo" + +#: models.py:35 +msgid "creation date and time" +msgstr "fecha y hora de creación" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "configuración de arranque" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "configuraciones de arranque" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "Arranque de base de datos" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "Ver las configuraciones de arranque" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "Crear configuraciones de arranque" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "Editar las configuraciones de arranque" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "Eliminar las configuraciones de arranque" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "Ejecutar configuraciones de arranque" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" +"Grabar la configuración actual del projecto en una configuración de arranque" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "Borrar toda la base de datos y almacenamiento de documentos" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "Arranque" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" +"Proporciona configuraciones pre ajustadas para los índices, tipos de " +"documentos, etiquetas, etc" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "Error al crear la configuración de arranque." + +#: views.py:58 +msgid "create bootstrap" +msgstr "crear configuración de arranque" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "Configuración de arranque editada exitosamente." + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "Error editando la configuración de arranque." + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "editar configuración de arranque: %s" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "Configuración de arranque :%s eliminada exitosamente." + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "¿Seguro que desea borrar la configuración de arranque: %s?" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "Error al ejecutar la configuración de arranque; %s" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "Configuración de arranque \"%s\" ejecutada exitosamente." + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "Error borrando la base de datos; %s" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "Base de datos borrada exitosamente." + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" +"¿Está seguro que desea borrar de la base de datos completamente y el " +"almacenamiento de documentos?" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" +"¡Todos los documentos, las fuentes, los metadatos, los tipos de metadatos, " +"los conjuntos de metadatos, las etiquetas, los índices y vitacoras se " +"perderán irreversiblemente!" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/fr/LC_MESSAGES/django.mo b/apps/bootstrap/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..3d480b7ac0 Binary files /dev/null and b/apps/bootstrap/locale/fr/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/fr/LC_MESSAGES/django.po b/apps/bootstrap/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e95d685254 --- /dev/null +++ b/apps/bootstrap/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,317 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/it/LC_MESSAGES/django.mo b/apps/bootstrap/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..804143e55e Binary files /dev/null and b/apps/bootstrap/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/it/LC_MESSAGES/django.po b/apps/bootstrap/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5d49ef07a7 --- /dev/null +++ b/apps/bootstrap/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,317 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.mo b/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..b399445ead Binary files /dev/null and b/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.po b/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 0000000000..791bcc3814 --- /dev/null +++ b/apps/bootstrap/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,316 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/pl/LC_MESSAGES/django.mo b/apps/bootstrap/locale/pl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..0a5a203a44 Binary files /dev/null and b/apps/bootstrap/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/pl/LC_MESSAGES/django.po b/apps/bootstrap/locale/pl/LC_MESSAGES/django.po new file mode 100644 index 0000000000..63f38b6908 --- /dev/null +++ b/apps/bootstrap/locale/pl/LC_MESSAGES/django.po @@ -0,0 +1,318 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/pt/LC_MESSAGES/django.mo b/apps/bootstrap/locale/pt/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..804143e55e Binary files /dev/null and b/apps/bootstrap/locale/pt/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/pt/LC_MESSAGES/django.po b/apps/bootstrap/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5d49ef07a7 --- /dev/null +++ b/apps/bootstrap/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,317 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.mo b/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..3d480b7ac0 Binary files /dev/null and b/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.po b/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e95d685254 --- /dev/null +++ b/apps/bootstrap/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,317 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/locale/ru/LC_MESSAGES/django.mo b/apps/bootstrap/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..e6ed2aade3 Binary files /dev/null and b/apps/bootstrap/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/bootstrap/locale/ru/LC_MESSAGES/django.po b/apps/bootstrap/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000000..1ac6de42ba --- /dev/null +++ b/apps/bootstrap/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,318 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:20-0400\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" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: forms.py:50 +msgid "Bootstrap setup file" +msgstr "" + +#: forms.py:56 +msgid "Bootstrap setup URL" +msgstr "" + +#: links.py:11 +msgid "bootstrap" +msgstr "" + +#: links.py:12 +msgid "bootstrap setup list" +msgstr "" + +#: links.py:13 +msgid "create new bootstrap setup" +msgstr "" + +#: links.py:14 +msgid "edit" +msgstr "" + +#: links.py:15 +msgid "delete" +msgstr "" + +#: links.py:16 +msgid "details" +msgstr "" + +#: links.py:17 +msgid "execute" +msgstr "" + +#: links.py:18 +msgid "dump current setup" +msgstr "" + +#: links.py:19 +msgid "export" +msgstr "" + +#: links.py:20 +msgid "import from file" +msgstr "" + +#: links.py:21 +msgid "import from URL" +msgstr "" + +#: links.py:22 +msgid "sync with repository" +msgstr "" + +#: links.py:23 +msgid "erase database" +msgstr "" + +#: literals.py:20 +msgid "JSON" +msgstr "" + +#: literals.py:63 +msgid "YAML" +msgstr "" + +#: literals.py:64 +msgid "Better YAML" +msgstr "" + +#: models.py:30 +msgid "name" +msgstr "" + +#: models.py:31 +msgid "slug" +msgstr "" + +#: models.py:32 views.py:34 +msgid "description" +msgstr "" + +#: models.py:33 +msgid "fixture" +msgstr "" + +#: models.py:33 +msgid "These are the actual database structure creation instructions." +msgstr "" + +#: models.py:34 views.py:35 +msgid "type" +msgstr "" + +#: models.py:35 +msgid "creation date and time" +msgstr "" + +#: models.py:104 views.py:90 views.py:119 views.py:144 views.py:172 +msgid "bootstrap setup" +msgstr "" + +#: models.py:105 views.py:31 +msgid "bootstrap setups" +msgstr "" + +#: permissions.py:7 +msgid "Database bootstrap" +msgstr "" + +#: permissions.py:9 +msgid "View bootstrap setups" +msgstr "" + +#: permissions.py:10 +msgid "Create bootstrap setups" +msgstr "" + +#: permissions.py:11 +msgid "Edit bootstrap setups" +msgstr "" + +#: permissions.py:12 +msgid "Delete bootstrap setups" +msgstr "" + +#: permissions.py:13 +msgid "Execute bootstrap setups" +msgstr "" + +#: permissions.py:14 +msgid "Dump the current project\\s setup into a bootstrap setup" +msgstr "" + +#: permissions.py:15 +msgid "Export bootstrap setups as files" +msgstr "" + +#: permissions.py:16 +msgid "Import new bootstrap setups" +msgstr "" + +#: permissions.py:17 +msgid "Sync the local bootstrap setups with a published repository" +msgstr "" + +#: permissions.py:18 +msgid "Erase the entire database and document storage" +msgstr "" + +#: registry.py:7 +msgid "Bootstrap" +msgstr "" + +#: registry.py:8 +msgid "Provides pre configured setups for indexes, document types, tags, etc." +msgstr "" + +#: views.py:50 +msgid "Bootstrap setup created successfully" +msgstr "" + +#: views.py:53 +msgid "Error creating bootstrap setup." +msgstr "" + +#: views.py:58 +msgid "create bootstrap" +msgstr "" + +#: views.py:78 +msgid "Bootstrap setup edited successfully" +msgstr "" + +#: views.py:81 +msgid "Error editing bootstrap setup." +msgstr "" + +#: views.py:86 +#, python-format +msgid "edit bootstrap setup: %s" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Bootstrap setup: %s deleted successfully." +msgstr "" + +#: views.py:113 +#, python-format +msgid "Bootstrap setup: %(bootstrap)s, delete error: %(error)s" +msgstr "" + +#: views.py:124 +#, python-format +msgid "Are you sure you with to delete the bootstrap setup: %s?" +msgstr "" + +#: views.py:164 +msgid "" +"Cannot execute bootstrap setup, there is existing data. Erase all data and " +"try again." +msgstr "" + +#: views.py:166 +#, python-format +msgid "Error executing bootstrap setup; %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Bootstrap setup \"%s\" executed successfully." +msgstr "" + +#: views.py:180 +#, python-format +msgid "" +"Are you sure you wish to execute the database bootstrap setup named: %s?" +msgstr "" + +#: views.py:196 +#, python-format +msgid "Error dumping configuration into a bootstrap setup; %s" +msgstr "" + +#: views.py:200 +msgid "Bootstrap setup created successfully." +msgstr "" + +#: views.py:206 +msgid "dump current configuration into a bootstrap setup" +msgstr "" + +#: views.py:240 views.py:268 +msgid "Bootstrap setup imported successfully." +msgstr "" + +#: views.py:243 +msgid "File is not a bootstrap setup." +msgstr "" + +#: views.py:245 +#, python-format +msgid "Error importing bootstrap setup from file; %s." +msgstr "" + +#: views.py:251 +msgid "Import bootstrap setup from file" +msgstr "" + +#: views.py:271 +msgid "Data from URL is not a bootstrap setup." +msgstr "" + +#: views.py:273 +#, python-format +msgid "Error importing bootstrap setup from URL; %s." +msgstr "" + +#: views.py:279 +msgid "Import bootstrap setup from URL" +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error erasing database; %s" +msgstr "" + +#: views.py:300 +msgid "Database erased successfully." +msgstr "" + +#: views.py:310 +msgid "" +"Are you sure you wish to erase the entire database and document storage?" +msgstr "" + +#: views.py:311 +msgid "" +"All documents, sources, metadata, metadata types, set, tags, indexes and " +"logs will be lost irreversibly!" +msgstr "" + +#: views.py:328 +msgid "Bootstrap repository successfully synchronized." +msgstr "" + +#: views.py:330 +#, python-format +msgid "Bootstrap repository synchronization error: %(error)s" +msgstr "" + +#: views.py:337 +msgid "Are you sure you wish to synchronize with the bootstrap repository?" +msgstr "" diff --git a/apps/bootstrap/management/__init__.py b/apps/bootstrap/management/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/bootstrap/management/commands/__init__.py b/apps/bootstrap/management/commands/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/bootstrap/management/commands/erase_data.py b/apps/bootstrap/management/commands/erase_data.py new file mode 100644 index 0000000000..c53164cbfc --- /dev/null +++ b/apps/bootstrap/management/commands/erase_data.py @@ -0,0 +1,64 @@ +from __future__ import absolute_import + +from optparse import make_option + +from django.db import models, router, connections, DEFAULT_DB_ALIAS +from django.core.management import call_command +from django.core.management.base import NoArgsCommand, CommandError +from django.core.management.color import no_style +from django.core.management.sql import emit_post_sync_signal + +from ...classes import Cleanup + + +class Command(NoArgsCommand): + option_list = NoArgsCommand.option_list + ( + make_option('--noinput', action='store_false', dest='interactive', default=True, + help='Tells Django to NOT prompt the user for input of any kind.'), + make_option('--database', action='store', dest='database', + default=DEFAULT_DB_ALIAS, help='Nominates a database to erase. ' + 'Defaults to the "default" database.'), + ) + help = 'Erases all data in a Mayan EDMS installation.' + + def handle_noargs(self, **options): + db = options.get('database', DEFAULT_DB_ALIAS) + connection = connections[db] + verbosity = int(options.get('verbosity', 1)) + interactive = options.get('interactive') + + self.style = no_style() + + if interactive: + confirm = raw_input("""You have requested a erase all the data in the current Mayan EDMS installation. +This will IRREVERSIBLY ERASE all user data currently in the database, +and return each table to the state it was in after syncdb. +Are you sure you want to do this? + + Type 'yes' to continue, or 'no' to cancel: """) + else: + confirm = 'yes' + + if confirm == 'yes': + try: + Cleanup.execute_all() + except Exception, e: + raise CommandError("""Unable to erase data. Possible reasons: + * The database isn't running or isn't configured correctly. + * At least one of the expected database tables doesn't exist.""") + # Emit the post sync signal. This allows individual + # applications to respond as if the database had been + # sync'd from scratch. + all_models = [] + for app in models.get_apps(): + all_models.extend([ + m for m in models.get_models(app, include_auto_created=True) + if router.allow_syncdb(db, m) + ]) + emit_post_sync_signal(set(all_models), verbosity, interactive, db) + + # Reinstall the initial_data fixture. + kwargs = options.copy() + kwargs['database'] = db + else: + print 'Erase data cancelled.' diff --git a/apps/bootstrap/management/commands/execute_bootstrap.py b/apps/bootstrap/management/commands/execute_bootstrap.py new file mode 100644 index 0000000000..d61c1ade3c --- /dev/null +++ b/apps/bootstrap/management/commands/execute_bootstrap.py @@ -0,0 +1,31 @@ +from __future__ import absolute_import + +from optparse import make_option + +from django.core.management.base import BaseCommand, CommandError + +from ...models import BootstrapSetup +from ...exceptions import ExistingData + + +class Command(BaseCommand): + help = 'Execute a bootstrap setup by the given slug.' + args = '[bootstrap setup slug]' + + def handle(self, bootstrap_setup_slug=None, **options): + if not bootstrap_setup_slug: + raise CommandError('Enter one bootstrap setup slug.') + + # Get corresponding bootstrap setup instance + try: + bootstrap_setup = BootstrapSetup.objects.get(slug=bootstrap_setup_slug) + except BootstrapSetup.DoesNotExist: + raise CommandError('No bootstrap setup with such a slug.') + + # Try to execute bootstrap setup, catch errors + try: + bootstrap_setup.execute() + except ExistingData: + raise CommandError('Cannot execute bootstrap setup, there is existing data. Erase all data and try again.') + except Exception as exception: + raise CommandError('Unhandled exception: %s' % exception) diff --git a/apps/bootstrap/managers.py b/apps/bootstrap/managers.py new file mode 100644 index 0000000000..b5e0bea331 --- /dev/null +++ b/apps/bootstrap/managers.py @@ -0,0 +1,75 @@ +from __future__ import absolute_import + +import logging + +import requests + +from django.db import models +from django.core import serializers +from django.utils.simplejson import loads +from django.db import IntegrityError +from django.db.models import Q + +from .classes import BootstrapModel, FixtureMetadata +from .literals import (FIXTURE_TYPE_FIXTURE_PROCESS, FIXTURE_TYPE_EMPTY_FIXTURE, + BOOTSTRAP_REPOSITORY_URL, BOOTSTRAP_REPOSITORY_INDEX_FILE) + +logger = logging.getLogger(__name__) + + +class BootstrapSetupManager(models.Manager): + def dump(self, serialization_format): + """ + Get the current setup of Mayan in bootstrap format fixture + """ + result = [] + logger.debug('start dumping data') + for bootstrap_model in BootstrapModel.get_all(sort_by_dependencies=True): + logger.debug('dumping model: %s' % bootstrap_model.get_fullname()) + model_fixture = bootstrap_model.dump(serialization_format) + # Only add non empty model fixtures + if not FIXTURE_TYPE_EMPTY_FIXTURE[serialization_format](model_fixture): + result.append(model_fixture) + return FIXTURE_TYPE_FIXTURE_PROCESS[serialization_format]('\n'.join(result)) + + def import_setup(self, file_data, overwrite=False): + BootstrapModel.check_magic_number(file_data) + metadata = FixtureMetadata.read_all(file_data) + instance = self.model(fixture=file_data, **metadata) + try: + instance.save(update_metadata=False) + except IntegrityError: + if not overwrite: + raise + else: + # Delete conflicting bootstrap setups + query = Q() + if 'slug' in metadata: + query = query | Q(slug=metadata['slug']) + + if 'name' in metadata: + query = query | Q(name=metadata['name']) + + self.model.objects.filter(query).delete() + self.import_setup(file_data) + + def import_from_file(self, files): + file_data = files.read() + self.import_setup(file_data) + + def import_from_url(self, url, **kwargs): + response = requests.get(url) + if response.status_code == requests.codes.ok: + self.import_setup(response.text, **kwargs) + else: + response.raise_for_status() + + def repository_sync(self): + response = requests.get('%s/%s' % (BOOTSTRAP_REPOSITORY_URL, BOOTSTRAP_REPOSITORY_INDEX_FILE)) + if response.status_code == requests.codes.ok: + for entry in loads(response.text): + bootstrap_setup_url = '%s/%s' % (BOOTSTRAP_REPOSITORY_URL, entry['filename']) + self.import_from_url(bootstrap_setup_url, overwrite=True) + else: + response.raise_for_status() + diff --git a/apps/bootstrap/migrations/0001_initial.py b/apps/bootstrap/migrations/0001_initial.py new file mode 100644 index 0000000000..74c18d7e81 --- /dev/null +++ b/apps/bootstrap/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'BootstrapSetup' + db.create_table('bootstrap_bootstrapsetup', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(unique=True, max_length=128)), + ('description', self.gf('django.db.models.fields.TextField')(blank=True)), + ('fixture', self.gf('django.db.models.fields.TextField')()), + ('type', self.gf('django.db.models.fields.CharField')(max_length=16)), + )) + db.send_create_signal('bootstrap', ['BootstrapSetup']) + + + def backwards(self, orm): + # Deleting model 'BootstrapSetup' + db.delete_table('bootstrap_bootstrapsetup') + + + models = { + 'bootstrap.bootstrapsetup': { + 'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'}, + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'fixture': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '16'}) + } + } + + complete_apps = ['bootstrap'] \ No newline at end of file diff --git a/apps/bootstrap/migrations/0002_auto__add_field_bootstrapsetup_created.py b/apps/bootstrap/migrations/0002_auto__add_field_bootstrapsetup_created.py new file mode 100644 index 0000000000..5edc9020a0 --- /dev/null +++ b/apps/bootstrap/migrations/0002_auto__add_field_bootstrapsetup_created.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'BootstrapSetup.created' + db.add_column('bootstrap_bootstrapsetup', 'created', + self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2012, 10, 8, 0, 0)), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'BootstrapSetup.created' + db.delete_column('bootstrap_bootstrapsetup', 'created') + + + models = { + 'bootstrap.bootstrapsetup': { + 'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 8, 0, 0)'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'fixture': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '16'}) + } + } + + complete_apps = ['bootstrap'] \ No newline at end of file diff --git a/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py b/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py new file mode 100644 index 0000000000..9ceafa9412 --- /dev/null +++ b/apps/bootstrap/migrations/0003_auto__add_field_bootstrapsetup_slug.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'BootstrapSetup.slug' + db.add_column('bootstrap_bootstrapsetup', 'slug', + self.gf('django.db.models.fields.SlugField')(default='', unique=True, max_length=128, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'BootstrapSetup.slug' + db.delete_column('bootstrap_bootstrapsetup', 'slug') + + + models = { + 'bootstrap.bootstrapsetup': { + 'Meta': {'ordering': "['name']", 'object_name': 'BootstrapSetup'}, + 'created': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 10, 16, 0, 0)'}), + 'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'fixture': ('django.db.models.fields.TextField', [], {}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '128'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '128', 'blank': 'True'}), + 'type': ('django.db.models.fields.CharField', [], {'max_length': '16'}) + } + } + + complete_apps = ['bootstrap'] \ No newline at end of file diff --git a/apps/bootstrap/migrations/__init__.py b/apps/bootstrap/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/bootstrap/models.py b/apps/bootstrap/models.py new file mode 100644 index 0000000000..990f73da4c --- /dev/null +++ b/apps/bootstrap/models.py @@ -0,0 +1,106 @@ +from __future__ import absolute_import + +import os +import tempfile +import re +import datetime + +import slugify + +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO + +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from django.core import management +from django.core.files.uploadedfile import SimpleUploadedFile + +from .literals import (FIXTURE_TYPES_CHOICES, FIXTURE_FILE_TYPE, COMMAND_LOADDATA, + BOOTSTRAP_EXTENSION, FIXTURE_METADATA_REMARK_CHARACTER) +from .managers import BootstrapSetupManager +from .classes import BootstrapModel, FixtureMetadata + + +class BootstrapSetup(models.Model): + """ + Model to store the fixture for a pre configured setup. + """ + name = models.CharField(max_length=128, verbose_name=_(u'name'), unique=True) + slug = models.SlugField(max_length=128, verbose_name=_(u'slug'), unique=True, blank=True) + description = models.TextField(verbose_name=_(u'description'), blank=True) + fixture = models.TextField(verbose_name=_(u'fixture'), help_text=_(u'These are the actual database structure creation instructions.')) + type = models.CharField(max_length=16, verbose_name=_(u'type'), choices=FIXTURE_TYPES_CHOICES) + created = models.DateTimeField(verbose_name=_('creation date and time'), default=lambda: datetime.datetime.now(), editable=False) + + objects = BootstrapSetupManager() + + def __unicode__(self): + return self.name + + def get_extension(self): + """ + Return the fixture file extension based on the fixture type. + """ + return FIXTURE_FILE_TYPE[self.type] + + def execute(self): + """ + Read a bootstrap's fixture and create the corresponding model + instances based on it. + """ + BootstrapModel.check_for_data() + handle, filepath = tempfile.mkstemp() + # Just need the filepath, close the file description + os.close(handle) + + filepath = os.path.extsep.join([filepath, self.get_extension()]) + + with open(filepath, 'w') as file_handle: + file_handle.write(self.cleaned_fixture) + + content = StringIO() + management.call_command(COMMAND_LOADDATA, filepath, verbosity=0, stderr=content) + content.seek(0, os.SEEK_END) + if content.tell(): + content.seek(0) + raise Exception(content.readlines()[-2]) + + os.unlink(filepath) + + @property + def cleaned_fixture(self): + """ + Return the bootstrap setup's fixture without comments. + """ + return re.sub(re.compile('%s.*?\n' % FIXTURE_METADATA_REMARK_CHARACTER), '', self.fixture) + + def get_metadata_string(self): + """ + Return all the metadata for the current bootstrap fixture. + """ + return FixtureMetadata.generate_all(self) + + def get_filename(self): + return os.extsep.join([self.name, BOOTSTRAP_EXTENSION]) + + def as_file(self): + return SimpleUploadedFile(name=self.get_filename(), content=self.fixture) + + def save(self, *args, **kwargs): + update_metadata = kwargs.pop('update_metadata', True) + if update_metadata: + self.fixture = '%s\n%s\n%s' % ( + BootstrapModel.get_magic_number(), + self.get_metadata_string(), + self.cleaned_fixture + ) + if not self.slug: + self.slug = slugify.slugify(self.name) + return super(BootstrapSetup, self).save(*args, **kwargs) + + class Meta: + verbose_name = _(u'bootstrap setup') + verbose_name_plural = _(u'bootstrap setups') + ordering = ['name'] diff --git a/apps/bootstrap/permissions.py b/apps/bootstrap/permissions.py new file mode 100644 index 0000000000..71165fe954 --- /dev/null +++ b/apps/bootstrap/permissions.py @@ -0,0 +1,18 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from permissions.models import PermissionNamespace, Permission + +namespace = PermissionNamespace('bootstrap', _(u'Database bootstrap')) + +PERMISSION_BOOTSTRAP_VIEW = Permission.objects.register(namespace, 'bootstrap_view', _(u'View bootstrap setups')) +PERMISSION_BOOTSTRAP_CREATE = Permission.objects.register(namespace, 'bootstrap_create', _(u'Create bootstrap setups')) +PERMISSION_BOOTSTRAP_EDIT = Permission.objects.register(namespace, 'bootstrap_edit', _(u'Edit bootstrap setups')) +PERMISSION_BOOTSTRAP_DELETE = Permission.objects.register(namespace, 'bootstrap_delete', _(u'Delete bootstrap setups')) +PERMISSION_BOOTSTRAP_EXECUTE = Permission.objects.register(namespace, 'bootstrap_execute', _(u'Execute bootstrap setups')) +PERMISSION_BOOTSTRAP_DUMP = Permission.objects.register(namespace, 'bootstrap_dump', _(u'Dump the current project\s setup into a bootstrap setup')) +PERMISSION_BOOTSTRAP_EXPORT = Permission.objects.register(namespace, 'bootstrap_export', _(u'Export bootstrap setups as files')) +PERMISSION_BOOTSTRAP_IMPORT = Permission.objects.register(namespace, 'bootstrap_import', _(u'Import new bootstrap setups')) +PERMISSION_BOOTSTRAP_REPOSITORY_SYNC = Permission.objects.register(namespace, 'bootstrap_repo_sync', _(u'Sync the local bootstrap setups with a published repository')) +PERMISSION_NUKE_DATABASE = Permission.objects.register(namespace, 'nuke_database', _(u'Erase the entire database and document storage')) diff --git a/apps/bootstrap/post_init.py b/apps/bootstrap/post_init.py new file mode 100644 index 0000000000..3b61c1f0f6 --- /dev/null +++ b/apps/bootstrap/post_init.py @@ -0,0 +1,29 @@ +from __future__ import absolute_import + +import datetime + +from navigation.api import register_links +from main import __version__ + +from .links import (link_bootstrap_setup_create, link_bootstrap_setup_execute, + link_bootstrap_setup_list, link_bootstrap_setup_edit, link_bootstrap_setup_delete, + link_bootstrap_setup_view, link_bootstrap_setup_dump, link_bootstrap_setup_export, + link_bootstrap_setup_import_from_url, link_bootstrap_setup_import_from_file, + link_bootstrap_setup_repository_sync) +from .models import BootstrapSetup +from .classes import FixtureMetadata +from .literals import (FIXTURE_METADATA_CREATED, FIXTURE_METADATA_EDITED, + FIXTURE_METADATA_MAYAN_VERSION, FIXTURE_METADATA_FORMAT, FIXTURE_METADATA_NAME, + FIXTURE_METADATA_DESCRIPTION, DATETIME_STRING_FORMAT, FIXTURE_METADATA_SLUG) + +register_links([BootstrapSetup], [link_bootstrap_setup_view, link_bootstrap_setup_edit, link_bootstrap_setup_delete, link_bootstrap_setup_execute, link_bootstrap_setup_export]) +register_links([BootstrapSetup], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu') +register_links(['bootstrap_setup_list', 'bootstrap_setup_create', 'bootstrap_setup_dump', 'bootstrap_setup_import_from_file', 'bootstrap_setup_import_from_url', 'bootstrap_setup_repository_sync'], [link_bootstrap_setup_list, link_bootstrap_setup_create, link_bootstrap_setup_dump, link_bootstrap_setup_import_from_file, link_bootstrap_setup_import_from_url, link_bootstrap_setup_repository_sync], menu_name='secondary_menu') + +FixtureMetadata(FIXTURE_METADATA_CREATED, generate_function=lambda fixture_instance: fixture_instance.created.strftime(DATETIME_STRING_FORMAT), read_function=lambda x: datetime.datetime.strptime(x, DATETIME_STRING_FORMAT), property_name='created') +FixtureMetadata(FIXTURE_METADATA_EDITED, generate_function=lambda fixture_instance: datetime.datetime.now().strftime(DATETIME_STRING_FORMAT)) +FixtureMetadata(FIXTURE_METADATA_MAYAN_VERSION, generate_function=lambda fixture_instance: __version__) +FixtureMetadata(FIXTURE_METADATA_FORMAT, generate_function=lambda fixture_instance: fixture_instance.type, property_name='type') +FixtureMetadata(FIXTURE_METADATA_NAME, generate_function=lambda fixture_instance: fixture_instance.name, property_name='name') +FixtureMetadata(FIXTURE_METADATA_SLUG, generate_function=lambda fixture_instance: fixture_instance.slug, property_name='slug') +FixtureMetadata(FIXTURE_METADATA_DESCRIPTION, generate_function=lambda fixture_instance: fixture_instance.description, property_name='description') diff --git a/apps/bootstrap/registry.py b/apps/bootstrap/registry.py new file mode 100644 index 0000000000..22fcdc0242 --- /dev/null +++ b/apps/bootstrap/registry.py @@ -0,0 +1,10 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ + +from .links import link_bootstrap_setup_tool, link_erase_database + +label = _(u'Bootstrap') +description = _(u'Provides pre configured setups for indexes, document types, tags, etc.') +dependencies = ['app_registry', 'icons', 'navigation', 'documents', 'indexing', 'metadata', 'tags'] +setup_links = [link_bootstrap_setup_tool, link_erase_database] diff --git a/apps/bootstrap/static/images/icons/lightning.png b/apps/bootstrap/static/images/icons/lightning.png new file mode 100644 index 0000000000..df8dffc658 Binary files /dev/null and b/apps/bootstrap/static/images/icons/lightning.png differ diff --git a/apps/bootstrap/static/images/icons/lightning_delete.png b/apps/bootstrap/static/images/icons/lightning_delete.png new file mode 100644 index 0000000000..9253d67324 Binary files /dev/null and b/apps/bootstrap/static/images/icons/lightning_delete.png differ diff --git a/apps/bootstrap/static/images/icons/lightning_go.png b/apps/bootstrap/static/images/icons/lightning_go.png new file mode 100644 index 0000000000..33833b4cf0 Binary files /dev/null and b/apps/bootstrap/static/images/icons/lightning_go.png differ diff --git a/apps/bootstrap/static/images/icons/radioactivity.png b/apps/bootstrap/static/images/icons/radioactivity.png new file mode 100644 index 0000000000..ad5d5348ff Binary files /dev/null and b/apps/bootstrap/static/images/icons/radioactivity.png differ diff --git a/apps/bootstrap/static/images/icons/world.png b/apps/bootstrap/static/images/icons/world.png new file mode 100755 index 0000000000..644d9d53a7 Binary files /dev/null and b/apps/bootstrap/static/images/icons/world.png differ diff --git a/apps/bootstrap/urls.py b/apps/bootstrap/urls.py new file mode 100644 index 0000000000..1ad28beebf --- /dev/null +++ b/apps/bootstrap/urls.py @@ -0,0 +1,16 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('bootstrap.views', + url(r'^setup/list/$', 'bootstrap_setup_list', (), 'bootstrap_setup_list'), + url(r'^setup/create/$', 'bootstrap_setup_create', (), 'bootstrap_setup_create'), + url(r'^setup/(?P\d+)/edit/$', 'bootstrap_setup_edit', (), 'bootstrap_setup_edit'), + url(r'^setup/(?P\d+)/delete/$', 'bootstrap_setup_delete', (), 'bootstrap_setup_delete'), + url(r'^setup/(?P\d+)/$', 'bootstrap_setup_view', (), 'bootstrap_setup_view'), + url(r'^setup/(?P\d+)/execute/$', 'bootstrap_setup_execute', (), 'bootstrap_setup_execute'), + url(r'^setup/(?P\d+)/export/$', 'bootstrap_setup_export', (), 'bootstrap_setup_export'), + url(r'^setup/dump/$', 'bootstrap_setup_dump', (), 'bootstrap_setup_dump'), + url(r'^setup/import/file/$', 'bootstrap_setup_import_from_file', (), 'bootstrap_setup_import_from_file'), + url(r'^setup/import/url/$', 'bootstrap_setup_import_from_url', (), 'bootstrap_setup_import_from_url'), + url(r'^setup/repository/sync/$', 'bootstrap_setup_repository_sync', (), 'bootstrap_setup_repository_sync'), + url(r'^nuke/$', 'erase_database_view', (), 'erase_database_view'), +) diff --git a/apps/bootstrap/utils.py b/apps/bootstrap/utils.py new file mode 100644 index 0000000000..e68af0fb6f --- /dev/null +++ b/apps/bootstrap/utils.py @@ -0,0 +1,40 @@ +## {{{ http://code.activestate.com/recipes/578272/ (r1) +def toposort2(data): + """Dependencies are expressed as a dictionary whose keys are items +and whose values are a set of dependent items. Output is a list of +sets in topological order. The first set consists of items with no +dependences, each subsequent set consists of items that depend upon +items in the preceeding sets. + +>>> print '\\n'.join(repr(sorted(x)) for x in toposort2({ +... 2: set([11]), +... 9: set([11,8]), +... 10: set([11,3]), +... 11: set([7,5]), +... 8: set([7,3]), +... }) ) +[3, 5, 7] +[8, 11] +[2, 9, 10] + +""" + + from functools import reduce + + # Ignore self dependencies. + for k, v in data.items(): + v.discard(k) + # Find all items that don't depend on anything. + extra_items_in_deps = reduce(set.union, data.itervalues()) - set(data.iterkeys()) + # Add empty dependences where needed + data.update({item:set() for item in extra_items_in_deps}) + while True: + ordered = set(item for item, dep in data.iteritems() if not dep) + if not ordered: + break + yield ordered + data = {item: (dep - ordered) + for item, dep in data.iteritems() + if item not in ordered} + assert not data, "Cyclic dependencies exist among these items:\n%s" % '\n'.join(repr(x) for x in data.iteritems()) +## end of http://code.activestate.com/recipes/578272/ }}} diff --git a/apps/bootstrap/views.py b/apps/bootstrap/views.py new file mode 100644 index 0000000000..1112afb309 --- /dev/null +++ b/apps/bootstrap/views.py @@ -0,0 +1,342 @@ +from __future__ import absolute_import + +from django.utils.translation import ugettext_lazy as _ +from django.http import HttpResponseRedirect +from django.shortcuts import render_to_response, get_object_or_404 +from django.template import RequestContext +from django.contrib import messages +from django.core.urlresolvers import reverse +from django.core.files import File + +from filetransfers.api import serve_file + +from permissions.models import Permission + +from .models import BootstrapSetup +from .classes import Cleanup, BootstrapModel +from .permissions import (PERMISSION_BOOTSTRAP_VIEW, PERMISSION_BOOTSTRAP_CREATE, + PERMISSION_BOOTSTRAP_EDIT, PERMISSION_BOOTSTRAP_DELETE, + PERMISSION_BOOTSTRAP_EXECUTE, PERMISSION_NUKE_DATABASE, PERMISSION_BOOTSTRAP_DUMP, + PERMISSION_BOOTSTRAP_EXPORT, PERMISSION_BOOTSTRAP_IMPORT, PERMISSION_BOOTSTRAP_REPOSITORY_SYNC) +from .forms import (BootstrapSetupForm, BootstrapSetupForm_view, BootstrapSetupForm_dump, + BootstrapSetupForm_edit, BootstrapFileImportForm, BootstrapURLImportForm) +from .exceptions import ExistingData, NotABootstrapSetup + + +def bootstrap_setup_list(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_VIEW]) + + context = { + 'object_list': BootstrapSetup.objects.all(), + 'title': _(u'bootstrap setups'), + 'hide_link': True, + 'extra_columns': [ + {'name': _(u'description'), 'attribute': 'description'}, + {'name': _(u'type'), 'attribute': 'get_type_display'}, + ], + } + + return render_to_response('generic_list.html', context, + context_instance=RequestContext(request)) + + +def bootstrap_setup_create(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_CREATE]) + + if request.method == 'POST': + form = BootstrapSetupForm(request.POST) + if form.is_valid(): + bootstrap = form.save() + messages.success(request, _(u'Bootstrap setup created successfully')) + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + else: + messages.error(request, _(u'Error creating bootstrap setup.')) + else: + form = BootstrapSetupForm() + + return render_to_response('generic_form.html', { + 'title': _(u'create bootstrap'), + 'form': form, + }, + context_instance=RequestContext(request)) + + +def bootstrap_setup_edit(request, bootstrap_setup_pk): + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + + bootstrap = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_EDIT]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_EDIT, request.user, bootstrap) + + if request.method == 'POST': + form = BootstrapSetupForm_edit(instance=bootstrap, data=request.POST) + if form.is_valid(): + form.save() + messages.success(request, _(u'Bootstrap setup edited successfully')) + return HttpResponseRedirect(previous) + else: + messages.error(request, _(u'Error editing bootstrap setup.')) + else: + form = BootstrapSetupForm_edit(instance=bootstrap) + + return render_to_response('generic_form.html', { + 'title': _(u'edit bootstrap setup: %s') % bootstrap, + 'form': form, + 'object': bootstrap, + 'previous': previous, + 'object_name': _(u'bootstrap setup'), + }, + context_instance=RequestContext(request)) + + +def bootstrap_setup_delete(request, bootstrap_setup_pk): + bootstrap = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_DELETE]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_DELETE, request.user, bootstrap) + + post_action_redirect = reverse('bootstrap_setup_list') + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + try: + bootstrap.delete() + messages.success(request, _(u'Bootstrap setup: %s deleted successfully.') % bootstrap) + except Exception, e: + messages.error(request, _(u'Bootstrap setup: %(bootstrap)s, delete error: %(error)s') % { + 'bootstrap': bootstrap, 'error': e}) + + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + + context = { + 'object_name': _(u'bootstrap setup'), + 'delete_view': True, + 'previous': previous, + 'next': next, + 'object': bootstrap, + 'title': _(u'Are you sure you with to delete the bootstrap setup: %s?') % bootstrap, + 'form_icon': 'lightning_delete.png', + } + + return render_to_response('generic_confirm.html', context, + context_instance=RequestContext(request)) + + +def bootstrap_setup_view(request, bootstrap_setup_pk): + bootstrap = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_VIEW]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_VIEW, request.user, bootstrap) + + form = BootstrapSetupForm_view(instance=bootstrap) + context = { + 'form': form, + 'object': bootstrap, + 'object_name': _(u'bootstrap setup'), + } + + return render_to_response('generic_detail.html', context, + context_instance=RequestContext(request)) + + +def bootstrap_setup_execute(request, bootstrap_setup_pk): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_EXECUTE]) + bootstrap_setup = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk) + + post_action_redirect = reverse('bootstrap_setup_list') + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + try: + bootstrap_setup.execute() + except ExistingData: + messages.error(request, _(u'Cannot execute bootstrap setup, there is existing data. Erase all data and try again.')) + except Exception, exc: + messages.error(request, _(u'Error executing bootstrap setup; %s') % exc) + else: + messages.success(request, _(u'Bootstrap setup "%s" executed successfully.') % bootstrap_setup) + return HttpResponseRedirect(next) + + context = { + 'object_name': _(u'bootstrap setup'), + 'delete_view': False, + 'previous': previous, + 'next': next, + 'form_icon': 'lightning_go.png', + 'object': bootstrap_setup, + } + + context['title'] = _(u'Are you sure you wish to execute the database bootstrap setup named: %s?') % bootstrap_setup + + return render_to_response('generic_confirm.html', context, + context_instance=RequestContext(request)) + + +def bootstrap_setup_dump(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_DUMP]) + + if request.method == 'POST': + form = BootstrapSetupForm_dump(request.POST) + if form.is_valid(): + bootstrap = form.save(commit=False) + try: + bootstrap.fixture = BootstrapSetup.objects.dump(serialization_format=bootstrap.type) + except Exception as exception: + messages.error(request, _(u'Error dumping configuration into a bootstrap setup; %s') % exception) + raise + else: + bootstrap.save() + messages.success(request, _(u'Bootstrap setup created successfully.')) + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + else: + form = BootstrapSetupForm_dump() + + return render_to_response('generic_form.html', { + 'title': _(u'dump current configuration into a bootstrap setup'), + 'form': form, + }, + context_instance=RequestContext(request)) + + +def bootstrap_setup_export(request, bootstrap_setup_pk): + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + + bootstrap = get_object_or_404(BootstrapSetup, pk=bootstrap_setup_pk) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_EXPORT]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_BOOTSTRAP_EXPORT, request.user, bootstrap) + + return serve_file( + request, + bootstrap.as_file(), + save_as=u'"%s"' % bootstrap.get_filename(), + content_type='text/plain; charset=us-ascii' + ) + + +def bootstrap_setup_import_from_file(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_IMPORT]) + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + form = BootstrapFileImportForm(request.POST, request.FILES) + if form.is_valid(): + try: + BootstrapSetup.objects.import_from_file(request.FILES['file']) + messages.success(request, _(u'Bootstrap setup imported successfully.')) + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + except NotABootstrapSetup: + messages.error(request, _(u'File is not a bootstrap setup.')) + except Exception as exception: + messages.error(request, _(u'Error importing bootstrap setup from file; %s.') % exception) + return HttpResponseRedirect(previous) + else: + form = BootstrapFileImportForm() + + return render_to_response('generic_form.html', { + 'title': _(u'Import bootstrap setup from file'), + 'form_icon': 'folder.png', + 'form': form, + 'previous': previous, + }, context_instance=RequestContext(request)) + + +def bootstrap_setup_import_from_url(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_IMPORT]) + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + form = BootstrapURLImportForm(request.POST, request.FILES) + if form.is_valid(): + try: + BootstrapSetup.objects.import_from_url(form.cleaned_data['url']) + messages.success(request, _(u'Bootstrap setup imported successfully.')) + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + except NotABootstrapSetup: + messages.error(request, _(u'Data from URL is not a bootstrap setup.')) + except Exception as exception: + messages.error(request, _(u'Error importing bootstrap setup from URL; %s.') % exception) + return HttpResponseRedirect(previous) + else: + form = BootstrapURLImportForm() + + return render_to_response('generic_form.html', { + 'title': _(u'Import bootstrap setup from URL'), + 'form_icon': 'folder.png', + 'form': form, + 'previous': previous, + }, context_instance=RequestContext(request)) + + +def erase_database_view(request): + Permission.objects.check_permissions(request.user, [PERMISSION_NUKE_DATABASE]) + + post_action_redirect = None + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + try: + Cleanup.execute_all() + except Exception, exc: + messages.error(request, _(u'Error erasing database; %s') % exc) + else: + messages.success(request, _(u'Database erased successfully.')) + return HttpResponseRedirect(next) + + context = { + 'delete_view': False, + 'previous': previous, + 'next': next, + 'form_icon': 'radioactivity.png', + } + + context['title'] = _(u'Are you sure you wish to erase the entire database and document storage?') + context['message'] = _(u'All documents, sources, metadata, metadata types, set, tags, indexes and logs will be lost irreversibly!') + + return render_to_response('generic_confirm.html', context, + context_instance=RequestContext(request)) + + +def bootstrap_setup_repository_sync(request): + Permission.objects.check_permissions(request.user, [PERMISSION_BOOTSTRAP_REPOSITORY_SYNC]) + + post_action_redirect = reverse('bootstrap_setup_list') + + previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', '/'))) + next = request.POST.get('next', request.GET.get('next', post_action_redirect if post_action_redirect else request.META.get('HTTP_REFERER', '/'))) + + if request.method == 'POST': + try: + BootstrapSetup.objects.repository_sync() + messages.success(request, _(u'Bootstrap repository successfully synchronized.')) + except Exception, e: + messages.error(request, _(u'Bootstrap repository synchronization error: %(error)s') % {'error': e}) + + return HttpResponseRedirect(reverse('bootstrap_setup_list')) + + context = { + 'previous': previous, + 'next': next, + 'title': _(u'Are you sure you wish to synchronize with the bootstrap repository?'), + 'form_icon': 'world.png', + } + + return render_to_response('generic_confirm.html', context, + context_instance=RequestContext(request)) diff --git a/apps/checkouts/locale/bg/LC_MESSAGES/django.mo b/apps/checkouts/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..d7a6faf3a7 Binary files /dev/null and b/apps/checkouts/locale/bg/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/bg/LC_MESSAGES/django.po b/apps/checkouts/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..50384e9b51 --- /dev/null +++ b/apps/checkouts/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,277 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-10-17 09:35+0000\n" +"Last-Translator: Pavlin Koldamov \n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "Проверете изтеклите за проверки документи и ги регистрирайте отново." + +#: events.py:5 +msgid "Document checked out" +msgstr "Документът е проверен." + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "Докумнетът \"%(document)s\" е проверен от %(fullname)s." + +#: events.py:12 +msgid "Document checked in" +msgstr "Докъментът е регистриран" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "Документът \"%(document)s\" е регистриран от %(fullname)s." + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "Автоматично регистрирани документи" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "Документ \"%(document)s\" е автоматично регистриран." + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "Документът е принудително регистриран" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "Документът \"%(document)s\" принудително регистриран от %(fullname)s." + +#: links.py:18 +msgid "checkouts" +msgstr "проверки" + +#: links.py:19 +msgid "check out document" +msgstr "проверка на документ" + +#: links.py:20 +msgid "check in document" +msgstr "регистриране на документ" + +#: links.py:21 +msgid "check in/out" +msgstr "регистриране/проверяване" + +#: literals.py:14 +msgid "checked out" +msgstr "проверен" + +#: literals.py:15 +msgid "checked in/available" +msgstr "регистриран/наличен" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "документ" + +#: models.py:26 +msgid "check out date and time" +msgstr "дата и час на проверка" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "проверка на срока на валидност, дата и час" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "Време за задържане на проверения документ в минути." + +#: models.py:32 +msgid "block new version upload" +msgstr "блокиране качването на нова версия" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "Забранете качването на нова версия на този документ." + +#: models.py:55 +msgid "document checkout" +msgstr "проверка на документ" + +#: models.py:56 +msgid "document checkouts" +msgstr "проверки на документ" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "Проверка на документ" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "Провери документи" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "Регистрирай документи" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "Регистрирай принудилтелно документи" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "Разреши проверки незвисимо от забрана" + +#: views.py:33 +msgid "checked out documents" +msgstr "проверени документи" + +#: views.py:36 +msgid "checkout user" +msgstr "отписване потребител" + +#: views.py:37 +msgid "checkout time and date" +msgstr "отписване, час и дата" + +#: views.py:38 +msgid "checkout expiration" +msgstr "проверка срок на валидност" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "Потребител: %s" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "Време на отписване: %s" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "Проверка срок на валидност: %s" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "Разрешени нови версии: %s" + +#: views.py:58 +msgid "yes" +msgstr "да" + +#: views.py:58 +msgid "no" +msgstr "не" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "Данни от проверката на документ: %s" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "Грешка при проверка на документ; %s" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "Документ \"%s\" проверен успешно." + +#: views.py:88 +msgid "Document already checked out." +msgstr "Документът вече е проверен." + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "Провери документ: %s" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "Документът не е проверяван." + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "Грешка при регистрация на документ; %s" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "Документ \"%s\" е регистриран успешно." + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" +"Проверката на този документ не е извършвана от Вас. Сигурни ли сте, че " +"искате принудително да регистрирате документа: %s?" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "Сигурни ли сте, че искате да регистрирате този документ: %s?" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "Статус на документа: %(widget)s %(text)s" + +#: widgets.py:30 +msgid "Days" +msgstr "Дни" + +#: widgets.py:31 +msgid "Hours" +msgstr "Часове" + +#: widgets.py:32 +msgid "Minutes" +msgstr "Минути" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "Въведете валиден брой дни." + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "Въведете валиден брой часове." + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "Въведете валиден брой минути." + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "Въведете валидна времева разлика." + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" +"Време за задържане на документа в състояние проверен, в дни, часове и/или " +"минути." + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "Проверете срока на валидност" diff --git a/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo b/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..52e378826d Binary files /dev/null and b/apps/checkouts/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po b/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po new file mode 100644 index 0000000000..3ffcf386bb --- /dev/null +++ b/apps/checkouts/locale/de_DE/LC_MESSAGES/django.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/en/LC_MESSAGES/django.mo b/apps/checkouts/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..28617bcfd5 Binary files /dev/null and b/apps/checkouts/locale/en/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/en/LC_MESSAGES/django.po b/apps/checkouts/locale/en/LC_MESSAGES/django.po new file mode 100644 index 0000000000..47307df855 --- /dev/null +++ b/apps/checkouts/locale/en/LC_MESSAGES/django.po @@ -0,0 +1,271 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\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" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/es/LC_MESSAGES/django.mo b/apps/checkouts/locale/es/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..c369206c91 Binary files /dev/null and b/apps/checkouts/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/es/LC_MESSAGES/django.po b/apps/checkouts/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a39776fa85 --- /dev/null +++ b/apps/checkouts/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,278 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Roberto Rosario , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 16:11+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/" +"language/es/)\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" +"Verifica reservaciones de documentos expiradas y los devuelve " +"estomáticamente." + +#: events.py:5 +msgid "Document checked out" +msgstr "Documento reservado" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "Documento \"%(document)s\" reservado por %(fullname)s." + +#: events.py:12 +msgid "Document checked in" +msgstr "Documento devuelto" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "Documento \"%(document)s\" devuelto por %(fullname)s." + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "Documento devuelto automáticamente" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "Documento \"%(document)s\" devuelto automáticamente." + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "Documento devuelto forzosamente" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "Documento \"%(document)s\" devuelto forzosamente por %(fullname)s." + +#: links.py:18 +msgid "checkouts" +msgstr "reservaciones" + +#: links.py:19 +msgid "check out document" +msgstr "reservar documento" + +#: links.py:20 +msgid "check in document" +msgstr "devolver documento" + +#: links.py:21 +msgid "check in/out" +msgstr "reservas" + +#: literals.py:14 +msgid "checked out" +msgstr "reservado" + +#: literals.py:15 +msgid "checked in/available" +msgstr "devuelto/disponible" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "documento" + +#: models.py:26 +msgid "check out date and time" +msgstr "fecha y hora de la reservación" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "fecha y hora de expiración de reservación" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "Cantidad de tiempo para mantener el documento reservado, en minutos." + +#: models.py:32 +msgid "block new version upload" +msgstr "restringir la subida de nuevas versiones" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "No permitir que nuevas versiones de este documento sean cargadas." + +#: models.py:55 +msgid "document checkout" +msgstr "reservación de documento" + +#: models.py:56 +msgid "document checkouts" +msgstr "reservaciones de documentos" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "Reservación de documentos" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "Reservar documentos" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "Devolver documentos" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "Devolver documentos forzosamente" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "Evadir restricciones de documentos reservados" + +#: views.py:33 +msgid "checked out documents" +msgstr "documentos reservados" + +#: views.py:36 +msgid "checkout user" +msgstr "usuario" + +#: views.py:37 +msgid "checkout time and date" +msgstr "fecha y hora de reservación" + +#: views.py:38 +msgid "checkout expiration" +msgstr "expiración de la reservación" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "Usuario: %s" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "Tiempo de la reservación: %s" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "Expiración de la reservación: %s" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "Nuevas versiones permitidas: %s" + +#: views.py:58 +msgid "yes" +msgstr "sí" + +#: views.py:58 +msgid "no" +msgstr "no" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "Detalles de reservación para el documento: %s" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "Error tratando de reservar documento: %s" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "Document \"%s\" reservador exitosamente." + +#: views.py:88 +msgid "Document already checked out." +msgstr "El documento ya esta reservado." + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "Reservar el documento: %s" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "El documento no ha sido reservado." + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "Error tratando de devolver documento: %s" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "Documento \"%s\" devuelto exitosamente." + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" +"Usted reservo originalemente este document. ¿Está seguro que desea devolver " +"forzosamente el documento: %s?" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "¿Está seguro que desea devolver el documento: %s?" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "Estado del documento: %(widget)s %(text)s" + +#: widgets.py:30 +msgid "Days" +msgstr "Dias" + +#: widgets.py:31 +msgid "Hours" +msgstr "Horas" + +#: widgets.py:32 +msgid "Minutes" +msgstr "Minutos" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "Entre un número de dias válido." + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "Entre un número de horas válido." + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "Entre un número de minutos válido." + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "Entre una diferencia de tiempo válida." + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" +"Cantidad de tiempo para reservar el documento, en días, horas y / o minutos." + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "Fecha y hora de la expiración de la reservación." diff --git a/apps/checkouts/locale/fr/LC_MESSAGES/django.mo b/apps/checkouts/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..0ad1db85d4 Binary files /dev/null and b/apps/checkouts/locale/fr/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/fr/LC_MESSAGES/django.po b/apps/checkouts/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000000..7767b76ee3 --- /dev/null +++ b/apps/checkouts/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,279 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# Pierre Lhoste , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-28 14:44+0000\n" +"Last-Translator: Pierre Lhoste \n" +"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/" +"language/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" +"Vérifier les documents retirés aux modifications, dont la période de verrou " +"expiré, et les remettre dans l'état modifiable." + +#: events.py:5 +msgid "Document checked out" +msgstr "Documents verrouillés" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "Document \"%(document)s\" verrouillé par %(fullname)s." + +#: events.py:12 +msgid "Document checked in" +msgstr "Document déverrouillé" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "Documents \"%(document)s\" déverrouillés par %(fullname)s." + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "Document déverrouillé automatiquement" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "Document \"%(document)s\" déverrouillé automatiquement." + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "Document déverrouillé de force" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "Document \"%(document)s\" dévérouillé de force par %(fullname)s." + +#: links.py:18 +msgid "checkouts" +msgstr "Verrous" + +#: links.py:19 +msgid "check out document" +msgstr "Poser un verrou sur le document" + +#: links.py:20 +msgid "check in document" +msgstr "Déverrouiller le document" + +#: links.py:21 +msgid "check in/out" +msgstr "verrouiller/déverrouiller" + +#: literals.py:14 +msgid "checked out" +msgstr "verrouillé" + +#: literals.py:15 +msgid "checked in/available" +msgstr "déverrouillé/disponible" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "document" + +#: models.py:26 +msgid "check out date and time" +msgstr "date et heure du verrouillage" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "date d'expiration du verrouillage" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "Durée en minutes pendant laquelle le document doit être verrouillé" + +#: models.py:32 +msgid "block new version upload" +msgstr "empêcher import nouvelle version" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "Ne pas autoriser l'importation d'une nouvelle version de ce document" + +#: models.py:55 +msgid "document checkout" +msgstr "verrouillage du document" + +#: models.py:56 +msgid "document checkouts" +msgstr "verrouillages du document" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "Verrouillage du document" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "Verrouiller les documents" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "Déverrouiller les documents" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "Déverrouiller de force les documents" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "Permettre de révoquer le verrouillage" + +#: views.py:33 +msgid "checked out documents" +msgstr "documents verrouillés" + +#: views.py:36 +msgid "checkout user" +msgstr "utilisateur ayant verrouillé" + +#: views.py:37 +msgid "checkout time and date" +msgstr "date et heure du verrou" + +#: views.py:38 +msgid "checkout expiration" +msgstr "expiration du verrou" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "Utilisateur: %s" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "Heure du verrou: %s" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "Expiration du verrou: %s" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "Nouvelles versions autorisées: %s" + +#: views.py:58 +msgid "yes" +msgstr "oui" + +#: views.py:58 +msgid "no" +msgstr "non" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "Détails du verrou pour le document; %s" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "Erreur lors de l'essai de verrouillage du document; %s" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "Document \"%s\" verouillé avec succès." + +#: views.py:88 +msgid "Document already checked out." +msgstr "Document déjà verrouillé." + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "Verrouiller le document: %s" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "Ce document n'a pas été verrouillé." + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "Erreur lors de la tentative de déverrouillage du document; %s " + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "Document \"%s\" déverrouillé avec succès." + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" +"Ce n'est pas vous qui avec posé le verrou sur ce document. Êtes vous certain " +"de vouloir forcer le déverrouillage de: %s?" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "Êtes vous certain de vouloir verrouiller le document: %s?" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "Etat du document:%(widget)s %(text)s" + +#: widgets.py:30 +msgid "Days" +msgstr "Jours" + +#: widgets.py:31 +msgid "Hours" +msgstr "Heures" + +#: widgets.py:32 +msgid "Minutes" +msgstr "Minutes" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "Saisissez un nombre de jours valide." + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "Saisissez un nombre d'heures valide." + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "Saisissez un nombre de minutes valide." + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "Saisissez un intervalle de temps valide." + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" +"Durée pendant laquelle conserver le verrou sur le document en jours, heures " +"et/ou minutes." + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "Date et heure de l'expiration du verrou" diff --git a/apps/checkouts/locale/it/LC_MESSAGES/django.mo b/apps/checkouts/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..5fdaff1a7a Binary files /dev/null and b/apps/checkouts/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/it/LC_MESSAGES/django.po b/apps/checkouts/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..31c966755f --- /dev/null +++ b/apps/checkouts/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/" +"language/it/)\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo b/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..4a22e5ec32 Binary files /dev/null and b/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po b/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 0000000000..66847f1f64 --- /dev/null +++ b/apps/checkouts/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/" +"mayan-edms/language/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/pl/LC_MESSAGES/django.mo b/apps/checkouts/locale/pl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..310950652d Binary files /dev/null and b/apps/checkouts/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/pl/LC_MESSAGES/django.po b/apps/checkouts/locale/pl/LC_MESSAGES/django.po new file mode 100644 index 0000000000..69aa67ac05 --- /dev/null +++ b/apps/checkouts/locale/pl/LC_MESSAGES/django.po @@ -0,0 +1,273 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/" +"language/pl/)\n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/pt/LC_MESSAGES/django.mo b/apps/checkouts/locale/pt/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..1523e20e31 Binary files /dev/null and b/apps/checkouts/locale/pt/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/pt/LC_MESSAGES/django.po b/apps/checkouts/locale/pt/LC_MESSAGES/django.po new file mode 100644 index 0000000000..591160d125 --- /dev/null +++ b/apps/checkouts/locale/pt/LC_MESSAGES/django.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo b/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..134afe3d88 Binary files /dev/null and b/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po b/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000000..53ce1b09b1 --- /dev/null +++ b/apps/checkouts/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,272 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" +"mayan-edms/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/checkouts/locale/ru/LC_MESSAGES/django.mo b/apps/checkouts/locale/ru/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..9683904cf5 Binary files /dev/null and b/apps/checkouts/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/checkouts/locale/ru/LC_MESSAGES/django.po b/apps/checkouts/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000000..4024598fd9 --- /dev/null +++ b/apps/checkouts/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,273 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-10 15:47+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" + +#: __init__.py:43 +msgid "Check expired check out documents and checks them in." +msgstr "" + +#: events.py:5 +msgid "Document checked out" +msgstr "" + +#: events.py:6 +#, python-format +msgid "Document \"%(document)s\" checked out by %(fullname)s." +msgstr "" + +#: events.py:12 +msgid "Document checked in" +msgstr "" + +#: events.py:13 +#, python-format +msgid "Document \"%(document)s\" checked in by %(fullname)s." +msgstr "" + +#: events.py:19 +msgid "Document automatically checked in" +msgstr "" + +#: events.py:20 +#, python-format +msgid "Document \"%(document)s\" automatically checked in." +msgstr "" + +#: events.py:25 +msgid "Document forcefully checked in" +msgstr "" + +#: events.py:26 +#, python-format +msgid "Document \"%(document)s\" forcefully checked in by %(fullname)s." +msgstr "" + +#: links.py:18 +msgid "checkouts" +msgstr "" + +#: links.py:19 +msgid "check out document" +msgstr "" + +#: links.py:20 +msgid "check in document" +msgstr "" + +#: links.py:21 +msgid "check in/out" +msgstr "" + +#: literals.py:14 +msgid "checked out" +msgstr "" + +#: literals.py:15 +msgid "checked in/available" +msgstr "" + +#: models.py:25 views.py:133 +msgid "document" +msgstr "" + +#: models.py:26 +msgid "check out date and time" +msgstr "" + +#: models.py:27 +msgid "check out expiration date and time" +msgstr "" + +#: models.py:27 +msgid "Amount of time to hold the document checked out in minutes." +msgstr "" + +#: models.py:32 +msgid "block new version upload" +msgstr "" + +#: models.py:32 +msgid "Do not allow new version of this document to be uploaded." +msgstr "" + +#: models.py:55 +msgid "document checkout" +msgstr "" + +#: models.py:56 +msgid "document checkouts" +msgstr "" + +#: permissions.py:7 +msgid "Document checkout" +msgstr "" + +#: permissions.py:9 +msgid "Check out documents" +msgstr "" + +#: permissions.py:10 +msgid "Check in documents" +msgstr "" + +#: permissions.py:11 +msgid "Forcefully check in documents" +msgstr "" + +#: permissions.py:12 +msgid "Allow overriding check out restrictions" +msgstr "" + +#: views.py:33 +msgid "checked out documents" +msgstr "" + +#: views.py:36 +msgid "checkout user" +msgstr "" + +#: views.py:37 +msgid "checkout time and date" +msgstr "" + +#: views.py:38 +msgid "checkout expiration" +msgstr "" + +#: views.py:55 +#, python-format +msgid "User: %s" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Check out time: %s" +msgstr "" + +#: views.py:57 +#, python-format +msgid "Check out expiration: %s" +msgstr "" + +#: views.py:58 +#, python-format +msgid "New versions allowed: %s" +msgstr "" + +#: views.py:58 +msgid "yes" +msgstr "" + +#: views.py:58 +msgid "no" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Check out details for document: %s" +msgstr "" + +#: views.py:83 +#, python-format +msgid "Error trying to check out document; %s" +msgstr "" + +#: views.py:85 +#, python-format +msgid "Document \"%s\" checked out successfully." +msgstr "" + +#: views.py:88 +msgid "Document already checked out." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Check out document: %s" +msgstr "" + +#: views.py:125 +msgid "Document has not been checked out." +msgstr "" + +#: views.py:127 +#, python-format +msgid "Error trying to check in document; %s" +msgstr "" + +#: views.py:129 +#, python-format +msgid "Document \"%s\" checked in successfully." +msgstr "" + +#: views.py:142 +#, python-format +msgid "" +"You didn't originally checked out this document. Are you sure you wish to " +"forcefully check in document: %s?" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Are you sure you wish to check in document: %s?" +msgstr "" + +#: widgets.py:18 +#, python-format +msgid "Document status: %(widget)s %(text)s" +msgstr "" + +#: widgets.py:30 +msgid "Days" +msgstr "" + +#: widgets.py:31 +msgid "Hours" +msgstr "" + +#: widgets.py:32 +msgid "Minutes" +msgstr "" + +#: widgets.py:62 +msgid "Enter a valid number of days." +msgstr "" + +#: widgets.py:63 +msgid "Enter a valid number of hours." +msgstr "" + +#: widgets.py:64 +msgid "Enter a valid number of minutes." +msgstr "" + +#: widgets.py:65 +msgid "Enter a valid time difference." +msgstr "" + +#: widgets.py:88 +msgid "" +"Amount of time to hold the document in the checked out state in days, hours " +"and/or minutes." +msgstr "" + +#: widgets.py:89 +msgid "Check out expiration date and time" +msgstr "" diff --git a/apps/common/__init__.py b/apps/common/__init__.py index 915dc928eb..de85ce4b66 100644 --- a/apps/common/__init__.py +++ b/apps/common/__init__.py @@ -10,6 +10,7 @@ from django.contrib.auth.models import User from django.contrib.auth.management import create_superuser from django.dispatch import receiver from django.db.models.signals import post_save +from django.db import transaction, DatabaseError from navigation.api import register_links, register_top_menu @@ -71,10 +72,14 @@ def create_superuser(sender, **kwargs): @receiver(post_save, dispatch_uid='auto_admin_account_passwd_change', sender=User) def auto_admin_account_passwd_change(sender, instance, **kwargs): - auto_admin_properties = AutoAdminSingleton.objects.get() - if instance == auto_admin_properties.account and instance.password != auto_admin_properties.password_hash: - # Only delete the auto admin properties when the password has been changed - auto_admin_properties.delete(force=True) + with transaction.commit_on_success(): + try: + auto_admin_properties = AutoAdminSingleton.objects.get() + if instance == auto_admin_properties.account and instance.password != auto_admin_properties.password_hash: + # Only delete the auto admin properties when the password has been changed + auto_admin_properties.delete(force=True) + except DatabaseError: + transaction.rollback() if (validate_path(TEMPORARY_DIRECTORY) == False) or (not TEMPORARY_DIRECTORY): diff --git a/apps/common/forms.py b/apps/common/forms.py index 95f8a572dd..eafc0bdf24 100644 --- a/apps/common/forms.py +++ b/apps/common/forms.py @@ -49,10 +49,6 @@ class DetailForm(forms.ModelForm): queryset=getattr(field, 'queryset', None), ) self.fields[field_name].help_text = '' - elif isinstance(field.widget, forms.widgets.Textarea): - self.fields[field_name].widget = TextAreaDiv( - attrs=field.widget.attrs, - ) for field_name, field in self.fields.items(): self.fields[field_name].widget.attrs.update({'readonly': 'readonly'}) diff --git a/apps/common/locale/bg/LC_MESSAGES/django.mo b/apps/common/locale/bg/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..2a0896726f Binary files /dev/null and b/apps/common/locale/bg/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/bg/LC_MESSAGES/django.po b/apps/common/locale/bg/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e243e88b47 --- /dev/null +++ b/apps/common/locale/bg/LC_MESSAGES/django.po @@ -0,0 +1,353 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-10-18 05:46+0000\n" +"Last-Translator: Pavlin Koldamov \n" +"Language-Team: Bulgarian (http://www.transifex.com/projects/p/mayan-edms/" +"language/bg/)\n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: __init__.py:27 +msgid "change password" +msgstr "смяна на парола" + +#: __init__.py:28 +msgid "user details" +msgstr "потребителски данни" + +#: __init__.py:29 +msgid "edit details" +msgstr "промяна на данни" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "относно" + +#: __init__.py:34 +msgid "license" +msgstr "лиценз" + +#: forms.py:97 +msgid "Selection" +msgstr "" + +#: forms.py:129 +msgid "Email" +msgstr "Електронна поща" + +#: forms.py:140 +msgid "" +"Please enter a correct email and password. Note that the password fields is " +"case-sensitive." +msgstr "" + +#: forms.py:142 +msgid "This account is inactive." +msgstr "" + +#: literals.py:24 +msgid "A5" +msgstr "A5" + +#: literals.py:25 +msgid "A4" +msgstr "A4" + +#: literals.py:26 +msgid "A3" +msgstr "A3" + +#: literals.py:27 +msgid "B5" +msgstr "B5" + +#: literals.py:28 +msgid "B4" +msgstr "B4" + +#: literals.py:29 +msgid "Letter" +msgstr "Letter" + +#: literals.py:30 +msgid "Legal" +msgstr "Legal" + +#: literals.py:31 +msgid "Ledger" +msgstr "" + +#: literals.py:38 +msgid "Portrait" +msgstr "" + +#: literals.py:39 +msgid "Landscape" +msgstr "" + +#: models.py:17 +msgid "lock field" +msgstr "" + +#: models.py:45 +msgid "Anonymous user" +msgstr "Анонимен потребител" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "анонимен потребител" + +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "парола" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + +#: utils.py:295 +msgid "function found" +msgstr "" + +#: views.py:36 +msgid "No action selected." +msgstr "" + +#: views.py:40 +msgid "Must select at least one item." +msgstr "" + +#: views.py:88 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr "" + +#: views.py:94 views.py:121 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "" + +#: views.py:115 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr "" + +#: views.py:136 +msgid "Add" +msgstr "Добави" + +#: views.py:147 +msgid "Remove" +msgstr "Премахнете" + +#: views.py:170 +msgid "current user details" +msgstr "актуални данни на потребителя" + +#: views.py:187 +msgid "E-mail conflict, another user has that same email." +msgstr "" + +#: views.py:190 +msgid "Current user's details updated." +msgstr "" + +#: views.py:199 +msgid "edit current user details" +msgstr "редактиране на актуалните данни на потребителя" + +#: views.py:230 +msgid "License" +msgstr "Лиценз" + +#: views.py:239 +msgid "Current user password change" +msgstr "Промяна паролата на текущия потребител" + +#: views.py:254 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "Вашата парола е сменена успешно." + +#: widgets.py:58 +msgid "None" +msgstr "Няма" + +#: conf/settings.py:16 +msgid "" +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" + +#: conf/settings.py:66 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "Страницата не е намерена" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "Редактиране" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "" + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "Създаване" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "" + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "Потвърждаване" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "Потвърдете изтриване" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "Да" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "Не" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:56 +msgid "required" +msgstr "" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "Запазване" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "Подаване" + +#: templates/generic_form_subtemplate.html:87 +msgid "Cancel" +msgstr "Отказ" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:23 +#: templates/generic_list_subtemplate.html:24 +#, python-format +msgid "" +"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:25 +#: templates/generic_list_subtemplate.html:26 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "Идентификатор" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "" + +#: templates/login.html:5 +msgid "Login" +msgstr "Влез" + +#: templates/password_change_done.html:3 templates/password_change_form.html:3 +#: templates/password_change_form.html:5 +msgid "Password change" +msgstr "Промяна на паролата" diff --git a/apps/common/locale/de_DE/LC_MESSAGES/django.mo b/apps/common/locale/de_DE/LC_MESSAGES/django.mo index b8c24cfe46..f834092eab 100644 Binary files a/apps/common/locale/de_DE/LC_MESSAGES/django.mo and b/apps/common/locale/de_DE/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/de_DE/LC_MESSAGES/django.po b/apps/common/locale/de_DE/LC_MESSAGES/django.po index d2770fc5e3..be7264171a 100644 --- a/apps/common/locale/de_DE/LC_MESSAGES/django.po +++ b/apps/common/locale/de_DE/LC_MESSAGES/django.po @@ -1,79 +1,83 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: +# , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2011-09-30 04:55+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: German (Germany) (http://www.transifex.net/projects/p/mayan-edms/language/de_DE/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-09-19 22:03+0000\n" +"Last-Translator: Manticor \n" +"Language-Team: German (Germany) (http://www.transifex.com/projects/p/mayan-" +"edms/language/de_DE/)\n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de_DE\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" -msgstr "" +msgstr "Ändere Passwort" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" -msgstr "" - -#: __init__.py:24 -msgid "edit details" -msgstr "" - -#: __init__.py:28 __init__.py:33 -msgid "about" -msgstr "" +msgstr "Benutzerdetails" #: __init__.py:29 +msgid "edit details" +msgstr "Bearbeite Details" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "Über" + +#: __init__.py:34 msgid "license" -msgstr "" +msgstr "Lizenz" -#: forms.py:101 +#: forms.py:97 msgid "Selection" -msgstr "" +msgstr "Auswahl" -#: forms.py:133 +#: forms.py:129 msgid "Email" -msgstr "" +msgstr "E-Mail" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." msgstr "" +"Bitte geben Sie Ihre E-Mailadresse und ein Passwort an. Beachten Sie, dass " +"die Passwortfelder Groß- und Kleinschreibung unterscheiden." -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." -msgstr "" +msgstr "Dieser Account ist inaktiv." #: literals.py:24 msgid "A5" -msgstr "" +msgstr "A5" #: literals.py:25 msgid "A4" -msgstr "" +msgstr "A4" #: literals.py:26 msgid "A3" -msgstr "" +msgstr "A3" #: literals.py:27 msgid "B5" -msgstr "" +msgstr "B5" #: literals.py:28 msgid "B4" -msgstr "" +msgstr "B4" #: literals.py:29 msgid "Letter" @@ -89,22 +93,38 @@ msgstr "" #: literals.py:38 msgid "Portrait" -msgstr "" +msgstr "Hochformat" #: literals.py:39 msgid "Landscape" -msgstr "" +msgstr "Querformat" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" -msgstr "" +msgstr "Anonymer Nutzer" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" +msgstr "anonymer Nutzer" + +#: models.py:53 +msgid "account" +msgstr "Account" + +#: models.py:54 +msgid "password" +msgstr "Passwort" + +#: models.py:55 +msgid "password hash" +msgstr "Passworthash" + +#: models.py:58 +msgid "auto admin properties" msgstr "" #: utils.py:295 @@ -113,16 +133,16 @@ msgstr "" #: views.py:36 msgid "No action selected." -msgstr "" +msgstr "Keine Aktion ausgewählt." #: views.py:40 msgid "Must select at least one item." -msgstr "" +msgstr "Mindestens ein Item auswählen." #: views.py:88 #, python-format msgid "%(selection)s added successfully added to %(right_list_title)s." -msgstr "" +msgstr "%(selection)s erfolgreich zu %(right_list_title)s hinzugefügt." #: views.py:94 views.py:121 #, python-format @@ -136,31 +156,31 @@ msgstr "" #: views.py:136 msgid "Add" -msgstr "" +msgstr "Hinzufügen" #: views.py:147 msgid "Remove" -msgstr "" +msgstr "Entfernen" #: views.py:170 msgid "current user details" -msgstr "" +msgstr "Details des aktuellen Nutzers" #: views.py:187 msgid "E-mail conflict, another user has that same email." -msgstr "" +msgstr "E-Mail-Konflikt! Ein anderer Nutzer hat die selbe E-Mailadresse." #: views.py:190 msgid "Current user's details updated." -msgstr "" +msgstr "Details des aktuellen Nutzers aktualisiert." #: views.py:199 msgid "edit current user details" -msgstr "" +msgstr "BEarbeite Details des aktuellen Nutzers" #: views.py:230 msgid "License" -msgstr "" +msgstr "Lizenz" #: views.py:239 msgid "Current user password change" @@ -168,44 +188,45 @@ msgstr "" #: views.py:254 templates/password_change_done.html:5 msgid "Your password has been successfully changed." -msgstr "" +msgstr "Das Passwort wurde erfolgreich geändert." #: widgets.py:58 msgid "None" msgstr "" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" msgstr "" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" -msgstr "" +msgstr "Gestatte nicht authentifizierten Nutzern Zugriff auf alle Ansichten" #: templates/403.html:3 templates/403.html.py:7 msgid "Insufficient permissions" -msgstr "" +msgstr "Berechtigung reicht nicht aus." #: templates/403.html:9 msgid "You don't have enough permissions for this operation." -msgstr "" +msgstr "Sie haben keine Berechtigung für diesen Vorgang." #: templates/404.html:3 templates/404.html.py:7 msgid "Page not found" -msgstr "" +msgstr "Seite nicht gefunden" #: templates/404.html:9 msgid "Sorry, but the requested page could not be found." msgstr "" +"Tut mir Leid, aber die angeforderte Seite konnte nicht gefunden werden." #: templates/calculate_form_title.html:11 #, python-format @@ -224,16 +245,16 @@ msgstr "" #: templates/calculate_form_title.html:20 msgid "Edit" -msgstr "" +msgstr "Bearbeiten" #: templates/calculate_form_title.html:24 #, python-format msgid "Create new %(object_name)s" -msgstr "" +msgstr "Erstelle neu %(object_name)s" #: templates/calculate_form_title.html:26 msgid "Create" -msgstr "" +msgstr "Erstelle" #: templates/generic_assign_remove.html:3 #, python-format @@ -242,11 +263,11 @@ msgstr "" #: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 msgid "Confirm" -msgstr "" +msgstr "Bestätige" #: templates/generic_confirm.html:16 msgid "Confirm delete" -msgstr "" +msgstr "Bestätige Löschen" #: templates/generic_confirm.html:32 msgid "form icon" @@ -264,16 +285,16 @@ msgstr "" #: templates/generic_confirm.html:50 msgid "Yes" -msgstr "" +msgstr "Ja" #: templates/generic_confirm.html:54 msgid "No" -msgstr "" +msgstr "Nein" #: templates/generic_form_instance.html:37 #: templates/generic_form_subtemplate.html:56 msgid "required" -msgstr "" +msgstr "erforderlich" #: templates/generic_form_subtemplate.html:80 #: templates/generic_form_subtemplate.html:82 @@ -282,7 +303,7 @@ msgstr "" #: templates/generic_list_subtemplate.html:52 #: templates/generic_list_subtemplate.html:178 msgid "Save" -msgstr "" +msgstr "Speichern" #: templates/generic_form_subtemplate.html:80 #: templates/generic_form_subtemplate.html:82 @@ -291,11 +312,11 @@ msgstr "" #: templates/generic_list_subtemplate.html:52 #: templates/generic_list_subtemplate.html:178 msgid "Submit" -msgstr "" +msgstr "Übertragen" #: templates/generic_form_subtemplate.html:87 msgid "Cancel" -msgstr "" +msgstr "Abbrechen" #: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 #, python-format @@ -327,9 +348,9 @@ msgstr "" #: templates/login.html:5 msgid "Login" -msgstr "" +msgstr "Login" #: templates/password_change_done.html:3 templates/password_change_form.html:3 #: templates/password_change_form.html:5 msgid "Password change" -msgstr "" +msgstr "Passwort ändern" diff --git a/apps/common/locale/en/LC_MESSAGES/django.mo b/apps/common/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..28617bcfd5 Binary files /dev/null and b/apps/common/locale/en/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/en/LC_MESSAGES/django.po b/apps/common/locale/en/LC_MESSAGES/django.po index c99a52fa6d..20785d7bf6 100644 --- a/apps/common/locale/en/LC_MESSAGES/django.po +++ b/apps/common/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-06-17 19:02-0400\n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,41 +17,41 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" msgstr "" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." msgstr "" -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "" @@ -95,18 +95,34 @@ msgstr "" msgid "Landscape" msgstr "" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" msgstr "" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" msgstr "" +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + #: utils.py:295 msgid "function found" msgstr "" @@ -174,20 +190,20 @@ msgstr "" msgid "None" msgstr "" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " "temporary files. If none is specified, one will be created using tempfile." "mkdtemp()" msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" msgstr "" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" msgstr "" diff --git a/apps/common/locale/es/LC_MESSAGES/django.mo b/apps/common/locale/es/LC_MESSAGES/django.mo index 6b3e33b030..add5942d93 100644 Binary files a/apps/common/locale/es/LC_MESSAGES/django.mo and b/apps/common/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/es/LC_MESSAGES/django.po b/apps/common/locale/es/LC_MESSAGES/django.po index 754e8f2fb5..0b47697c08 100644 --- a/apps/common/locale/es/LC_MESSAGES/django.po +++ b/apps/common/locale/es/LC_MESSAGES/django.po @@ -1,58 +1,62 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: -# Roberto Rosario , 2011, 2012. +# Roberto Rosario , 2011-2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2012-02-02 18:39+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-12-12 06:12+0000\n" "Last-Translator: Roberto Rosario \n" -"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/language/es/)\n" +"Language-Team: Spanish (http://www.transifex.com/projects/p/mayan-edms/" +"language/es/)\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: es\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "cambiar contraseña" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" msgstr "detalles de usuario" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "editar detalles" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "sobre" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "licencia" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "Selección" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "E-mail" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." -msgstr "Por favor entre la dirección de correo electrónico y la contraseña correctas. Tenga en cuenta que los campos de contraseña distingue entre mayúsculas y minúsculas." +msgstr "" +"Por favor entre la dirección de correo electrónico y la contraseña " +"correctas. Tenga en cuenta que los campos de contraseña distingue entre " +"mayúsculas y minúsculas." -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "Esta cuenta está inactiva." @@ -96,18 +100,34 @@ msgstr "Retrato" msgid "Landscape" msgstr "Paisaje" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "campo de bloqueo" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" msgstr "Usuario anónimo" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" msgstr "usuario anónimo" +#: models.py:53 +msgid "account" +msgstr "cuenta" + +#: models.py:54 +msgid "password" +msgstr "contraseña" + +#: models.py:55 +msgid "password hash" +msgstr "huella de la contraseña" + +#: models.py:58 +msgid "auto admin properties" +msgstr "propiedades de administrador automático" + #: utils.py:295 msgid "function found" msgstr "función encontrada" @@ -149,7 +169,9 @@ msgstr "detalles del usuario corriente" #: views.py:187 msgid "E-mail conflict, another user has that same email." -msgstr "Conflicto de correo electrónica, otro usuario tiene ese mismo correo electrónico." +msgstr "" +"Conflicto de correo electrónica, otro usuario tiene ese mismo correo " +"electrónico." #: views.py:190 msgid "Current user's details updated." @@ -175,22 +197,28 @@ msgstr "Su contraseña se ha modificado correctamente." msgid "None" msgstr "Ninguno" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" -msgstr "Directorio temporal utilizado por todo el sitio para almacenar imágenes en miniatura, vistas previas y los archivos temporales. Si no se especifica ninguno, se creará utilizando tempfile.mkdtemp ()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" +"El directorio temporero es usado para almacenar miniaturas, " +"previsualizaciones y archivos temporales. Si no se especifica ninguno, se " +"creará utilizando tempfile.mkdtemp()" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" -msgstr "Controla el mecanismo utilizado para el usuario autenticado. Las opciones son: 'username' nombre de usuario, 'email' correo electrónico" +msgstr "" +"Controla el mecanismo utilizado para el usuario autenticado. Las opciones " +"son: 'username' nombre de usuario, 'email' correo electrónico" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" -msgstr "Permita a los usuarios no autenticados, el acceso a todas las pantallas" +msgstr "" +"Permita a los usuarios no autenticados, el acceso a todas las pantallas" #: templates/403.html:3 templates/403.html.py:7 msgid "Insufficient permissions" @@ -309,7 +337,9 @@ msgstr "Lista de %(stripped_title)s " msgid "" "List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " "%(page_number)s of %(total_pages)s)" -msgstr "Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Página %(page_number)s de %(total_pages)s)" +msgstr "" +"Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Página " +"%(page_number)s de %(total_pages)s)" #: templates/generic_list_horizontal_subtemplate.html:25 #: templates/generic_list_subtemplate.html:26 diff --git a/apps/common/locale/fr/LC_MESSAGES/django.mo b/apps/common/locale/fr/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..2a3a830e36 Binary files /dev/null and b/apps/common/locale/fr/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/fr/LC_MESSAGES/django.po b/apps/common/locale/fr/LC_MESSAGES/django.po new file mode 100644 index 0000000000..935f1292f7 --- /dev/null +++ b/apps/common/locale/fr/LC_MESSAGES/django.po @@ -0,0 +1,374 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2012. +# Pierre Lhoste , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-28 13:49+0000\n" +"Last-Translator: Pierre Lhoste \n" +"Language-Team: French (http://www.transifex.com/projects/p/mayan-edms/" +"language/fr/)\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: __init__.py:27 +msgid "change password" +msgstr "modifier le mot de passe" + +#: __init__.py:28 +msgid "user details" +msgstr "détails de l'utilisateur" + +#: __init__.py:29 +msgid "edit details" +msgstr "modifier les détails" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "à propos" + +#: __init__.py:34 +msgid "license" +msgstr "licence" + +#: forms.py:97 +msgid "Selection" +msgstr "Sélection" + +#: forms.py:129 +msgid "Email" +msgstr "adresse électronique" + +#: forms.py:140 +msgid "" +"Please enter a correct email and password. Note that the password fields is " +"case-sensitive." +msgstr "" +"S'il vous plaît veuillez entrer une adresse électronique et un mot de passe. " +"Notez que les champs de mot de passe sont sensibles à la casse." + +#: forms.py:142 +msgid "This account is inactive." +msgstr "Ce compte est inactif." + +#: literals.py:24 +msgid "A5" +msgstr "A5" + +#: literals.py:25 +msgid "A4" +msgstr "A4" + +#: literals.py:26 +msgid "A3" +msgstr "A3" + +#: literals.py:27 +msgid "B5" +msgstr "B5" + +#: literals.py:28 +msgid "B4" +msgstr "B4" + +#: literals.py:29 +msgid "Letter" +msgstr "Lettre" + +#: literals.py:30 +msgid "Legal" +msgstr "Légal" + +#: literals.py:31 +msgid "Ledger" +msgstr "Ledger" + +#: literals.py:38 +msgid "Portrait" +msgstr "Portrait" + +#: literals.py:39 +msgid "Landscape" +msgstr "Paysage" + +#: models.py:17 +msgid "lock field" +msgstr "Champ verrouiller" + +#: models.py:45 +msgid "Anonymous user" +msgstr "Utilisateur anonyme" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "utilisateur anonyme" + +#: models.py:53 +msgid "account" +msgstr "compte" + +#: models.py:54 +msgid "password" +msgstr "mot de passe" + +#: models.py:55 +msgid "password hash" +msgstr "hachage de mot de passe" + +#: models.py:58 +msgid "auto admin properties" +msgstr "propriétés de l'administration automatique" + +#: utils.py:295 +msgid "function found" +msgstr "fonction trouvée" + +#: views.py:36 +msgid "No action selected." +msgstr "Aucune action sélectionnée." + +#: views.py:40 +msgid "Must select at least one item." +msgstr "Vous devez sélectionner au moins un élément." + +#: views.py:88 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr " %(selection)s a été ajouté avec succès à %(right_list_title)s ." + +#: views.py:94 views.py:121 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "Impossible d'ajouter %(selection)s à %(right_list_title)s ." + +#: views.py:115 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr " %(selection)s a été supprimé avec succès de %(right_list_title)s ." + +#: views.py:136 +msgid "Add" +msgstr "Ajouter" + +#: views.py:147 +msgid "Remove" +msgstr "Supprimer" + +#: views.py:170 +msgid "current user details" +msgstr "détails de l'utilisateur courant" + +#: views.py:187 +msgid "E-mail conflict, another user has that same email." +msgstr "Conflit d'adresse électronique: un autre utilisateur a cette adresse." + +#: views.py:190 +msgid "Current user's details updated." +msgstr "Les détails de l'utilisateur actuel ont été mis à jour." + +#: views.py:199 +msgid "edit current user details" +msgstr "modifier les détails des utilisateurs actuels" + +#: views.py:230 +msgid "License" +msgstr "Licence" + +#: views.py:239 +msgid "Current user password change" +msgstr "Modifier le mot de passe de l'utilisateur courant" + +#: views.py:254 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "Votre mot de passe a été modifié avec succès." + +#: widgets.py:58 +msgid "None" +msgstr "Aucun" + +#: conf/settings.py:16 +#, fuzzy +msgid "" +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" +"Le répertoire temporaire utilisé pour stocker les miniatures, des " +"prévisualisation ainsi que les fichiers temporaires. Si aucun n'est " +"spécifié, celui-ci sera créé à l'aide de la fonction tempfile.mkdtemp()." + +#: conf/settings.py:66 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" +"Mécanisme utilisé pour l'authentification. Les options sont: username, email" + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "Autoriser les utilisateurs non-authentifiés, à accéder à tous les vues" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "Permissions insuffisantes" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "Vous n'avez pas les permissions requises pour cette opération." + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "Page non trouvée" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "Désolé, la page demandée n'a pu être trouvée." + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "Détails de %(object_name)s : %(object)s " + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "Détails de: %(object)s " + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "Modifier %(object_name)s :" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "Modifier" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "Créer un nouveau %(object_name)s " + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "Créer" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "Attribuer %(title)s à %(object)s" + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "Confirmer" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "Confirmer la suppression" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "icône du formulaire" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "" +"Etes-vous certain de vouloir supprimer l'élément %(object_name)s : " +"%(object)s ?" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "Etes-vous certain de vouloir supprimer l'élément: %(object)s ?" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "Oui" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "Non" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:56 +msgid "required" +msgstr "requis" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "Sauvegarder" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "Envoyer" + +#: templates/generic_form_subtemplate.html:87 +msgid "Cancel" +msgstr "Annuler" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "Liste des %(stripped_title)s " + +#: templates/generic_list_horizontal_subtemplate.html:23 +#: templates/generic_list_subtemplate.html:24 +#, python-format +msgid "" +"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" +msgstr "" +"Liste des %(title)s (%(start)s - %(end)s sur %(total)s) (Page " +"%(page_number)s de %(total_pages)s)" + +#: templates/generic_list_horizontal_subtemplate.html:25 +#: templates/generic_list_subtemplate.html:26 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "Liste des %(title)s (%(total)s )" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "Identifiant" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "Aucun %(stripped_title)s trouvé" + +#: templates/login.html:5 +msgid "Login" +msgstr "Connexion" + +#: templates/password_change_done.html:3 templates/password_change_form.html:3 +#: templates/password_change_form.html:5 +msgid "Password change" +msgstr "Modifier le mot de passe" + +#~ msgid "sentry" +#~ msgstr "sentinelle" + +#~ msgid "admin site" +#~ msgstr "site d'admin" + +#~ msgid "Common" +#~ msgstr "Commun" diff --git a/apps/common/locale/it/LC_MESSAGES/django.mo b/apps/common/locale/it/LC_MESSAGES/django.mo index 6c3ef094dd..f9b9112f8c 100644 Binary files a/apps/common/locale/it/LC_MESSAGES/django.mo and b/apps/common/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/it/LC_MESSAGES/django.po b/apps/common/locale/it/LC_MESSAGES/django.po index bdd66dda51..3cdd4ab06a 100644 --- a/apps/common/locale/it/LC_MESSAGES/django.po +++ b/apps/common/locale/it/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Carlo Zanatto <>, 2012. # , 2011. @@ -10,52 +10,55 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2012-06-08 07:46+0000\n" -"Last-Translator: Carlo Zanatto <>\n" -"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/language/it/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Italian (http://www.transifex.com/projects/p/mayan-edms/" +"language/it/)\n" +"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "cambia password" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" msgstr "dettaglio utente" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "modifica dettagli" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "informazioni" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "licenza" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "Selezione" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "Email" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." -msgstr "Inserisci un'indirizzo mail valido e una password. Ricorda che il campo password è case-sensitive" +msgstr "" +"Inserisci un'indirizzo mail valido e una password. Ricorda che il campo " +"password è case-sensitive" -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "Questo account è inattivo" @@ -99,18 +102,34 @@ msgstr "Verticale" msgid "Landscape" msgstr "Orizontale" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "blocca campo" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" msgstr "Utente anonimo" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" msgstr "utente anonimo" +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + #: utils.py:295 msgid "function found" msgstr "trovata funzione" @@ -178,20 +197,22 @@ msgstr "La tua password è stata cambiata con successo" msgid "None" msgstr "Nessuno" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" -msgstr "Directory temporanea utilizzata a livello di sito per thumbnails, anteprime e file temporanei. Se non viene specificato, ne verrà creata utilizzando tempfile.mkdtemp()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" -msgstr "Controllo del meccanismo di autenticazione. Le opzioni possibili sono:username,email" +msgstr "" +"Controllo del meccanismo di autenticazione. Le opzioni possibili sono:" +"username,email" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" msgstr "Consentire agli utenti non autenticati, l'accesso a tutte le viste" @@ -312,7 +333,9 @@ msgstr "Lista di %(stripped_title)s" msgid "" "List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " "%(page_number)s of %(total_pages)s)" -msgstr "Lista di %(title)s (%(start)s - %(end)s fuori %(total)s) (Page %(page_number)s of %(total_pages)s)" +msgstr "" +"Lista di %(title)s (%(start)s - %(end)s fuori %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" #: templates/generic_list_horizontal_subtemplate.html:25 #: templates/generic_list_subtemplate.html:26 diff --git a/apps/common/locale/nl_NL/LC_MESSAGES/django.mo b/apps/common/locale/nl_NL/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..bb1be0d8cc Binary files /dev/null and b/apps/common/locale/nl_NL/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/nl_NL/LC_MESSAGES/django.po b/apps/common/locale/nl_NL/LC_MESSAGES/django.po new file mode 100644 index 0000000000..2b9d73f0cf --- /dev/null +++ b/apps/common/locale/nl_NL/LC_MESSAGES/django.po @@ -0,0 +1,352 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Dutch (Netherlands) (http://www.transifex.com/projects/p/" +"mayan-edms/language/nl_NL/)\n" +"Language: nl_NL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: __init__.py:27 +msgid "change password" +msgstr "" + +#: __init__.py:28 +msgid "user details" +msgstr "" + +#: __init__.py:29 +msgid "edit details" +msgstr "" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "" + +#: __init__.py:34 +msgid "license" +msgstr "" + +#: forms.py:97 +msgid "Selection" +msgstr "" + +#: forms.py:129 +msgid "Email" +msgstr "" + +#: forms.py:140 +msgid "" +"Please enter a correct email and password. Note that the password fields is " +"case-sensitive." +msgstr "" + +#: forms.py:142 +msgid "This account is inactive." +msgstr "" + +#: literals.py:24 +msgid "A5" +msgstr "" + +#: literals.py:25 +msgid "A4" +msgstr "" + +#: literals.py:26 +msgid "A3" +msgstr "" + +#: literals.py:27 +msgid "B5" +msgstr "" + +#: literals.py:28 +msgid "B4" +msgstr "" + +#: literals.py:29 +msgid "Letter" +msgstr "" + +#: literals.py:30 +msgid "Legal" +msgstr "" + +#: literals.py:31 +msgid "Ledger" +msgstr "" + +#: literals.py:38 +msgid "Portrait" +msgstr "" + +#: literals.py:39 +msgid "Landscape" +msgstr "" + +#: models.py:17 +msgid "lock field" +msgstr "" + +#: models.py:45 +msgid "Anonymous user" +msgstr "" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "" + +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + +#: utils.py:295 +msgid "function found" +msgstr "" + +#: views.py:36 +msgid "No action selected." +msgstr "" + +#: views.py:40 +msgid "Must select at least one item." +msgstr "" + +#: views.py:88 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr "" + +#: views.py:94 views.py:121 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "" + +#: views.py:115 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr "" + +#: views.py:136 +msgid "Add" +msgstr "" + +#: views.py:147 +msgid "Remove" +msgstr "" + +#: views.py:170 +msgid "current user details" +msgstr "" + +#: views.py:187 +msgid "E-mail conflict, another user has that same email." +msgstr "" + +#: views.py:190 +msgid "Current user's details updated." +msgstr "" + +#: views.py:199 +msgid "edit current user details" +msgstr "" + +#: views.py:230 +msgid "License" +msgstr "" + +#: views.py:239 +msgid "Current user password change" +msgstr "" + +#: views.py:254 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "" + +#: widgets.py:58 +msgid "None" +msgstr "" + +#: conf/settings.py:16 +msgid "" +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" + +#: conf/settings.py:66 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "" + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "" + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:56 +msgid "required" +msgstr "" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "" + +#: templates/generic_form_subtemplate.html:87 +msgid "Cancel" +msgstr "" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:23 +#: templates/generic_list_subtemplate.html:24 +#, python-format +msgid "" +"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:25 +#: templates/generic_list_subtemplate.html:26 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "" + +#: templates/login.html:5 +msgid "Login" +msgstr "" + +#: templates/password_change_done.html:3 templates/password_change_form.html:3 +#: templates/password_change_form.html:5 +msgid "Password change" +msgstr "" diff --git a/apps/common/locale/pl/LC_MESSAGES/django.mo b/apps/common/locale/pl/LC_MESSAGES/django.mo index 4bcf21038a..59582f5287 100644 Binary files a/apps/common/locale/pl/LC_MESSAGES/django.mo and b/apps/common/locale/pl/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/pl/LC_MESSAGES/django.po b/apps/common/locale/pl/LC_MESSAGES/django.po index a91c223310..38d2f4c0aa 100644 --- a/apps/common/locale/pl/LC_MESSAGES/django.po +++ b/apps/common/locale/pl/LC_MESSAGES/django.po @@ -1,7 +1,7 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # mic, 2012. # mic , 2012. @@ -10,52 +10,56 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2012-02-21 15:17+0000\n" -"Last-Translator: mic \n" -"Language-Team: Polish (http://www.transifex.net/projects/p/mayan-edms/language/pl/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Polish (http://www.transifex.com/projects/p/mayan-edms/" +"language/pl/)\n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\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" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "zmień hasło" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" msgstr "szczegóły konta użytkownika" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "edytuj szczegóły" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "informacje o" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "licencja" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "Zaznaczenie" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "E-mail" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." -msgstr "Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma znaczenie." +msgstr "" +"Proszę wpisać poprawną nazwę użytkownika i hasło. Uwaga: wielkość liter ma " +"znaczenie." -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "To konto jest nieaktywne." @@ -99,18 +103,34 @@ msgstr "Portrait" msgid "Landscape" msgstr "Landscape" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "zablokować pole" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" msgstr "Użytkownik anonimowy" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" msgstr "użytkownik anonimowy" +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + #: utils.py:295 msgid "function found" msgstr "znaleźć funkcję" @@ -178,20 +198,20 @@ msgstr "Twoje hasło zostało pomyślnie zmienione." msgid "None" msgstr "Brak" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" -msgstr "Katalog tymczasowy używany do przechowywania całej witryny, miniatur, podglądów i plików tymczasowych. Jeśli nie zostanie określony, zostanie utworzony za pomocą tempfile.mkdtemp ()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" msgstr "" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" msgstr "" @@ -312,7 +332,9 @@ msgstr "Wykaz %(stripped_title)s" msgid "" "List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " "%(page_number)s of %(total_pages)s)" -msgstr "Wykaz %(title)s (%(start)s - %(end)s z %(total)s) (Page %(page_number)s z %(total_pages)s)" +msgstr "" +"Wykaz %(title)s (%(start)s - %(end)s z %(total)s) (Page %(page_number)s z " +"%(total_pages)s)" #: templates/generic_list_horizontal_subtemplate.html:25 #: templates/generic_list_subtemplate.html:26 diff --git a/apps/common/locale/pt/LC_MESSAGES/django.mo b/apps/common/locale/pt/LC_MESSAGES/django.mo index 0eee63f31a..e4bb52742d 100644 Binary files a/apps/common/locale/pt/LC_MESSAGES/django.mo and b/apps/common/locale/pt/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/pt/LC_MESSAGES/django.po b/apps/common/locale/pt/LC_MESSAGES/django.po index 49c450cac2..6fafb35776 100644 --- a/apps/common/locale/pt/LC_MESSAGES/django.po +++ b/apps/common/locale/pt/LC_MESSAGES/django.po @@ -1,59 +1,63 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # , 2011. # Roberto Rosario , 2012. +# Vítor Figueiró , 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2012-02-21 15:07+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" "Last-Translator: Roberto Rosario \n" -"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/language/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.com/projects/p/mayan-edms/" +"language/pt/)\n" +"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "alterar a senha" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" -msgstr "detalhes do usuário" +msgstr "detalhes do utilizador" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "editar detalhes" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "sobre" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "licença" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "Seleção" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "E-mail" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." -msgstr "Por favor insira o e-mail e senha corretos. Note que os campos de senha são case-sensitive." +msgstr "" +"Insira um e-mail e senha corretos, por favor. Note que o campo da senha é " +"sensível a minúsculas e maiúsculas." -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "Esta conta está inativa." @@ -79,7 +83,7 @@ msgstr "B4" #: literals.py:29 msgid "Letter" -msgstr "Carta" +msgstr "Letter" #: literals.py:30 msgid "Legal" @@ -97,17 +101,33 @@ msgstr "Retrato" msgid "Landscape" msgstr "Paisagem" -#: models.py:16 +#: models.py:17 msgid "lock field" +msgstr "campo de bloqueio" + +#: models.py:45 +msgid "Anonymous user" +msgstr "Utilizador anónimo" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "utilizador anónimo" + +#: models.py:53 +msgid "account" msgstr "" -#: models.py:43 -msgid "Anonymous user" -msgstr "Usuário anônimo" +#: models.py:54 +msgid "password" +msgstr "" -#: models.py:46 models.py:47 -msgid "anonymous user" -msgstr "usuário anônimo" +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" #: utils.py:295 msgid "function found" @@ -129,12 +149,12 @@ msgstr "%(selection)s adicionadas com sucesso a %(right_list_title)s ." #: views.py:94 views.py:121 #, python-format msgid "Unable to add %(selection)s to %(right_list_title)s." -msgstr "Não foi possível adicionar %(selection)s para %(right_list_title)s ." +msgstr "Não foi possível adicionar %(selection)s a %(right_list_title)s ." #: views.py:115 #, python-format msgid "%(selection)s added successfully removed from %(right_list_title)s." -msgstr " %(selection)s adicionado com sucesso removidos %(right_list_title)s." +msgstr " %(selection)s removido com sucesso de %(right_list_title)s." #: views.py:136 msgid "Add" @@ -146,19 +166,19 @@ msgstr "Remover" #: views.py:170 msgid "current user details" -msgstr "detalhes atuais do usuário" +msgstr "detalhes do utilizador atual" #: views.py:187 msgid "E-mail conflict, another user has that same email." -msgstr "E-mail conflito, outro usuário que tem mesmo e-mail." +msgstr "Conflito de E-mail; outro utilizador tem o mesmo e-mail." #: views.py:190 msgid "Current user's details updated." -msgstr "Detalhes do usuário atual atualizados." +msgstr "Detalhes do utilizador atual atualizados." #: views.py:199 msgid "edit current user details" -msgstr "editar os detalhes do usuário atual" +msgstr "editar os detalhes do utilizador atual" #: views.py:230 msgid "License" @@ -166,32 +186,34 @@ msgstr "Licença" #: views.py:239 msgid "Current user password change" -msgstr "Alteração de senha do usuário atual" +msgstr "Alteração da senha do utilizador atual" #: views.py:254 templates/password_change_done.html:5 msgid "Your password has been successfully changed." -msgstr "Sua senha foi alterada com êxito." +msgstr "A sua senha foi alterada com êxito." #: widgets.py:58 msgid "None" msgstr "Nenhum" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" -msgstr "Diretório temporário usado para armazenar miniaturas, previews e arquivos temporários. Se nenhum for especificado, um será criado usando tempfile.mkdtemp()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" -msgstr "Controla o mecanismo usado para usuário autenticado. As opções são: e-mail, nome de usuário," - -#: conf/settings.py:74 -msgid "Allow non authenticated users, access to all views" msgstr "" +"Controla o mecanismo usado para autenticar o utilizador. As opções são: " +"username, email" + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "Permitir acesso a todas as vistas aos utilizadores não autenticados" #: templates/403.html:3 templates/403.html.py:7 msgid "Insufficient permissions" @@ -199,7 +221,7 @@ msgstr "Permissões insuficientes" #: templates/403.html:9 msgid "You don't have enough permissions for this operation." -msgstr "Você não tem permissões suficientes para esta operação." +msgstr "Não possui permissões suficientes para esta operação." #: templates/404.html:3 templates/404.html.py:7 msgid "Page not found" @@ -207,7 +229,7 @@ msgstr "Página não encontrada" #: templates/404.html:9 msgid "Sorry, but the requested page could not be found." -msgstr "Desculpe, mas a página solicitada não pôde ser encontrada." +msgstr "Desculpe, mas a página solicitada não foi encontrada." #: templates/calculate_form_title.html:11 #, python-format @@ -231,7 +253,7 @@ msgstr "Editar" #: templates/calculate_form_title.html:24 #, python-format msgid "Create new %(object_name)s" -msgstr "Criar novas %(object_name)s " +msgstr "Criar novo %(object_name)s " #: templates/calculate_form_title.html:26 msgid "Create" @@ -262,7 +284,7 @@ msgstr "Tem certeza de que deseja excluir %(object_name)s: %(object)s ?" #: templates/generic_confirm.html:42 #, python-format msgid "Are you sure you wish to delete: %(object)s?" -msgstr "Tem certeza de que deseja excluir: %(object)s ?" +msgstr "Tem a certeza de que deseja excluir: %(object)s ?" #: templates/generic_confirm.html:50 msgid "Yes" @@ -310,7 +332,9 @@ msgstr "Lista de %(stripped_title)s " msgid "" "List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " "%(page_number)s of %(total_pages)s)" -msgstr "Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Page %(page_number)s of %(total_pages)s)" +msgstr "" +"Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Página " +"%(page_number)s de %(total_pages)s)" #: templates/generic_list_horizontal_subtemplate.html:25 #: templates/generic_list_subtemplate.html:26 @@ -334,4 +358,4 @@ msgstr "Login" #: templates/password_change_done.html:3 templates/password_change_form.html:3 #: templates/password_change_form.html:5 msgid "Password change" -msgstr "Alterar a senha" +msgstr "Alteração da senha" diff --git a/apps/common/locale/pt_BR/LC_MESSAGES/django.mo b/apps/common/locale/pt_BR/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..9ea5d812fc Binary files /dev/null and b/apps/common/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/pt_BR/LC_MESSAGES/django.po b/apps/common/locale/pt_BR/LC_MESSAGES/django.po new file mode 100644 index 0000000000..68cd77ec4f --- /dev/null +++ b/apps/common/locale/pt_BR/LC_MESSAGES/django.po @@ -0,0 +1,360 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +# , 2011. +# Roberto Rosario , 2012. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" +"mayan-edms/language/pt_BR/)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: __init__.py:27 +msgid "change password" +msgstr "alterar a senha" + +#: __init__.py:28 +msgid "user details" +msgstr "detalhes do usuário" + +#: __init__.py:29 +msgid "edit details" +msgstr "editar detalhes" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "sobre" + +#: __init__.py:34 +msgid "license" +msgstr "licença" + +#: forms.py:97 +msgid "Selection" +msgstr "Seleção" + +#: forms.py:129 +msgid "Email" +msgstr "E-mail" + +#: forms.py:140 +msgid "" +"Please enter a correct email and password. Note that the password fields is " +"case-sensitive." +msgstr "" +"Por favor insira o e-mail e senha corretos. Note que os campos de senha são " +"case-sensitive." + +#: forms.py:142 +msgid "This account is inactive." +msgstr "Esta conta está inativa." + +#: literals.py:24 +msgid "A5" +msgstr "A5" + +#: literals.py:25 +msgid "A4" +msgstr "A4" + +#: literals.py:26 +msgid "A3" +msgstr "A3" + +#: literals.py:27 +msgid "B5" +msgstr "B5" + +#: literals.py:28 +msgid "B4" +msgstr "B4" + +#: literals.py:29 +msgid "Letter" +msgstr "Carta" + +#: literals.py:30 +msgid "Legal" +msgstr "Legal" + +#: literals.py:31 +msgid "Ledger" +msgstr "Livro-razão" + +#: literals.py:38 +msgid "Portrait" +msgstr "Retrato" + +#: literals.py:39 +msgid "Landscape" +msgstr "Paisagem" + +#: models.py:17 +msgid "lock field" +msgstr "" + +#: models.py:45 +msgid "Anonymous user" +msgstr "Usuário anônimo" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "usuário anônimo" + +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + +#: utils.py:295 +msgid "function found" +msgstr "função encontrada" + +#: views.py:36 +msgid "No action selected." +msgstr "Nenhuma ação selecionada." + +#: views.py:40 +msgid "Must select at least one item." +msgstr "Deve selecionar pelo menos um item." + +#: views.py:88 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr "%(selection)s adicionadas com sucesso a %(right_list_title)s ." + +#: views.py:94 views.py:121 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "Não foi possível adicionar %(selection)s para %(right_list_title)s ." + +#: views.py:115 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr " %(selection)s adicionado com sucesso removidos %(right_list_title)s." + +#: views.py:136 +msgid "Add" +msgstr "Adicionar" + +#: views.py:147 +msgid "Remove" +msgstr "Remover" + +#: views.py:170 +msgid "current user details" +msgstr "detalhes atuais do usuário" + +#: views.py:187 +msgid "E-mail conflict, another user has that same email." +msgstr "E-mail conflito, outro usuário que tem mesmo e-mail." + +#: views.py:190 +msgid "Current user's details updated." +msgstr "Detalhes do usuário atual atualizados." + +#: views.py:199 +msgid "edit current user details" +msgstr "editar os detalhes do usuário atual" + +#: views.py:230 +msgid "License" +msgstr "Licença" + +#: views.py:239 +msgid "Current user password change" +msgstr "Alteração de senha do usuário atual" + +#: views.py:254 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "Sua senha foi alterada com êxito." + +#: widgets.py:58 +msgid "None" +msgstr "Nenhum" + +#: conf/settings.py:16 +msgid "" +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" + +#: conf/settings.py:66 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" +"Controla o mecanismo usado para usuário autenticado. As opções são: e-mail, " +"nome de usuário," + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "Permissões insuficientes" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "Você não tem permissões suficientes para esta operação." + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "Página não encontrada" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "Desculpe, mas a página solicitada não pôde ser encontrada." + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "Detalhes para %(object_name)s : %(object)s " + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "Detalhes para: %(object)s " + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "Editar %(object_name)s:" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "Editar" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "Criar novas %(object_name)s " + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "Criar" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "Atribuir %(title)s %(object)s " + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "Confirmar" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "Confirmar exclusão" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "ícone de formulário" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "Tem certeza de que deseja excluir %(object_name)s: %(object)s ?" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "Tem certeza de que deseja excluir: %(object)s ?" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "Sim" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "Não" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:56 +msgid "required" +msgstr "exigido" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "Salvar" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "Submeter" + +#: templates/generic_form_subtemplate.html:87 +msgid "Cancel" +msgstr "Cancelar" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "Lista de %(stripped_title)s " + +#: templates/generic_list_horizontal_subtemplate.html:23 +#: templates/generic_list_subtemplate.html:24 +#, python-format +msgid "" +"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" +msgstr "" +"Lista de %(title)s (%(start)s - %(end)s de %(total)s) (Page %(page_number)s " +"of %(total_pages)s)" + +#: templates/generic_list_horizontal_subtemplate.html:25 +#: templates/generic_list_subtemplate.html:26 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "Lista de %(title)s (%(total)s)" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "Identificador" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "Não há %(stripped_title)s " + +#: templates/login.html:5 +msgid "Login" +msgstr "Login" + +#: templates/password_change_done.html:3 templates/password_change_form.html:3 +#: templates/password_change_form.html:5 +msgid "Password change" +msgstr "Alterar a senha" diff --git a/apps/common/locale/ru/LC_MESSAGES/django.mo b/apps/common/locale/ru/LC_MESSAGES/django.mo index eccb60a887..8d9c967a42 100644 Binary files a/apps/common/locale/ru/LC_MESSAGES/django.mo and b/apps/common/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/common/locale/ru/LC_MESSAGES/django.po b/apps/common/locale/ru/LC_MESSAGES/django.po index 22e93a7f5f..da51e6a9c6 100644 --- a/apps/common/locale/ru/LC_MESSAGES/django.po +++ b/apps/common/locale/ru/LC_MESSAGES/django.po @@ -1,58 +1,62 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# +# # Translators: # Sergey Glita , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" -"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2012-06-17 18:08-0400\n" -"PO-Revision-Date: 2012-02-03 06:36+0000\n" -"Last-Translator: Sergey Glita \n" -"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/language/ru/)\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-12 03:19-0400\n" +"PO-Revision-Date: 2012-07-27 04:09+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Russian (http://www.transifex.com/projects/p/mayan-edms/" +"language/ru/)\n" +"Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: __init__.py:22 +#: __init__.py:27 msgid "change password" msgstr "Изменение пароля" -#: __init__.py:23 +#: __init__.py:28 msgid "user details" msgstr "сведения о пользователе" -#: __init__.py:24 +#: __init__.py:29 msgid "edit details" msgstr "изменение сведений" -#: __init__.py:28 __init__.py:33 +#: __init__.py:33 __init__.py:38 msgid "about" msgstr "инфо" -#: __init__.py:29 +#: __init__.py:34 msgid "license" msgstr "лицензия" -#: forms.py:101 +#: forms.py:97 msgid "Selection" msgstr "Выбор" -#: forms.py:133 +#: forms.py:129 msgid "Email" msgstr "Email" -#: forms.py:144 +#: forms.py:140 msgid "" "Please enter a correct email and password. Note that the password fields is " "case-sensitive." -msgstr "Пожалуйста, введите правильный адрес электронной почты и пароль с учетом регистра." +msgstr "" +"Пожалуйста, введите правильный адрес электронной почты и пароль с учетом " +"регистра." -#: forms.py:146 +#: forms.py:142 msgid "This account is inactive." msgstr "Эта учетная запись неактивна." @@ -96,18 +100,34 @@ msgstr "Портрет" msgid "Landscape" msgstr "Пейзаж" -#: models.py:16 +#: models.py:17 msgid "lock field" msgstr "блокировка поля" -#: models.py:43 +#: models.py:45 msgid "Anonymous user" msgstr "Анонимный пользователь" -#: models.py:46 models.py:47 +#: models.py:48 models.py:49 msgid "anonymous user" msgstr "анонимный пользователь" +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + #: utils.py:295 msgid "function found" msgstr "функция найдена" @@ -175,22 +195,25 @@ msgstr "Ваш пароль был изменен." msgid "None" msgstr "Ни один" -#: conf/settings.py:15 +#: conf/settings.py:16 msgid "" "Temporary directory used site wide to store thumbnails, previews and " -"temporary files. If none is specified, one will be created using " -"tempfile.mkdtemp()" -msgstr "Временный каталог, используемый сайтом для хранения миниатюр, превью и временных файлов. Если он не указан, он будет создан с использованием tempfile.mkdtemp ()" +"temporary files. If none is specified, one will be created using tempfile." +"mkdtemp()" +msgstr "" -#: conf/settings.py:65 +#: conf/settings.py:66 msgid "" "Controls the mechanism used to authenticated user. Options are: username, " "email" -msgstr "Управление механизмом, используемым для аутентификации пользователя. Возможные варианты: имя пользователя, адрес электронной почты" +msgstr "" +"Управление механизмом, используемым для аутентификации пользователя. " +"Возможные варианты: имя пользователя, адрес электронной почты" -#: conf/settings.py:74 +#: conf/settings.py:75 msgid "Allow non authenticated users, access to all views" -msgstr "Разрешить, не прошедшим проверку, пользователям доступ ко всем представлениям" +msgstr "" +"Разрешить, не прошедшим проверку, пользователям доступ ко всем представлениям" #: templates/403.html:3 templates/403.html.py:7 msgid "Insufficient permissions" @@ -309,7 +332,9 @@ msgstr "Список \"%(stripped_title)s\"" msgid "" "List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " "%(page_number)s of %(total_pages)s)" -msgstr "Список %(title)s (%(start)s - %(end)s из %(total)s) (Page %(page_number)s из %(total_pages)s)" +msgstr "" +"Список %(title)s (%(start)s - %(end)s из %(total)s) (Page %(page_number)s из " +"%(total_pages)s)" #: templates/generic_list_horizontal_subtemplate.html:25 #: templates/generic_list_subtemplate.html:26 diff --git a/apps/common/locale/sl_SI/LC_MESSAGES/django.po b/apps/common/locale/sl_SI/LC_MESSAGES/django.po new file mode 100644 index 0000000000..3307b03496 --- /dev/null +++ b/apps/common/locale/sl_SI/LC_MESSAGES/django.po @@ -0,0 +1,351 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2012-12-12 01:48-0400\n" +"PO-Revision-Date: 2012-12-12 06:05+0000\n" +"Last-Translator: Roberto Rosario \n" +"Language-Team: Slovenian (Slovenia) (http://www.transifex.com/projects/p/mayan-edms/language/sl_SI/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl_SI\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#: __init__.py:27 +msgid "change password" +msgstr "" + +#: __init__.py:28 +msgid "user details" +msgstr "" + +#: __init__.py:29 +msgid "edit details" +msgstr "" + +#: __init__.py:33 __init__.py:38 +msgid "about" +msgstr "" + +#: __init__.py:34 +msgid "license" +msgstr "" + +#: forms.py:97 +msgid "Selection" +msgstr "" + +#: forms.py:129 +msgid "Email" +msgstr "" + +#: forms.py:140 +msgid "" +"Please enter a correct email and password. Note that the password fields is " +"case-sensitive." +msgstr "" + +#: forms.py:142 +msgid "This account is inactive." +msgstr "" + +#: literals.py:24 +msgid "A5" +msgstr "" + +#: literals.py:25 +msgid "A4" +msgstr "" + +#: literals.py:26 +msgid "A3" +msgstr "" + +#: literals.py:27 +msgid "B5" +msgstr "" + +#: literals.py:28 +msgid "B4" +msgstr "" + +#: literals.py:29 +msgid "Letter" +msgstr "" + +#: literals.py:30 +msgid "Legal" +msgstr "" + +#: literals.py:31 +msgid "Ledger" +msgstr "" + +#: literals.py:38 +msgid "Portrait" +msgstr "" + +#: literals.py:39 +msgid "Landscape" +msgstr "" + +#: models.py:17 +msgid "lock field" +msgstr "" + +#: models.py:45 +msgid "Anonymous user" +msgstr "" + +#: models.py:48 models.py:49 +msgid "anonymous user" +msgstr "" + +#: models.py:53 +msgid "account" +msgstr "" + +#: models.py:54 +msgid "password" +msgstr "" + +#: models.py:55 +msgid "password hash" +msgstr "" + +#: models.py:58 +msgid "auto admin properties" +msgstr "" + +#: utils.py:295 +msgid "function found" +msgstr "" + +#: views.py:36 +msgid "No action selected." +msgstr "" + +#: views.py:40 +msgid "Must select at least one item." +msgstr "" + +#: views.py:88 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr "" + +#: views.py:94 views.py:121 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "" + +#: views.py:115 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr "" + +#: views.py:136 +msgid "Add" +msgstr "" + +#: views.py:147 +msgid "Remove" +msgstr "" + +#: views.py:170 +msgid "current user details" +msgstr "" + +#: views.py:187 +msgid "E-mail conflict, another user has that same email." +msgstr "" + +#: views.py:190 +msgid "Current user's details updated." +msgstr "" + +#: views.py:199 +msgid "edit current user details" +msgstr "" + +#: views.py:230 +msgid "License" +msgstr "" + +#: views.py:239 +msgid "Current user password change" +msgstr "" + +#: views.py:254 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "" + +#: widgets.py:58 +msgid "None" +msgstr "" + +#: conf/settings.py:16 +msgid "" +"Temporary directory used site wide to store thumbnails, previews and " +"temporary files. If none is specified, one will be created using " +"tempfile.mkdtemp()" +msgstr "" + +#: conf/settings.py:66 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" + +#: conf/settings.py:75 +msgid "Allow non authenticated users, access to all views" +msgstr "" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "" + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "" + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "" + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "" + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "" + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:56 +msgid "required" +msgstr "" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "" + +#: templates/generic_form_subtemplate.html:80 +#: templates/generic_form_subtemplate.html:82 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:90 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "" + +#: templates/generic_form_subtemplate.html:87 +msgid "Cancel" +msgstr "" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:23 +#: templates/generic_list_subtemplate.html:24 +#, python-format +msgid "" +"List of %(title)s (%(start)s - %(end)s out of %(total)s) (Page " +"%(page_number)s of %(total_pages)s)" +msgstr "" + +#: templates/generic_list_horizontal_subtemplate.html:25 +#: templates/generic_list_subtemplate.html:26 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "" + +#: templates/login.html:5 +msgid "Login" +msgstr "" + +#: templates/password_change_done.html:3 templates/password_change_form.html:3 +#: templates/password_change_form.html:5 +msgid "Password change" +msgstr "" diff --git a/apps/common/serializers/__init__.py b/apps/common/serializers/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/common/serializers/better_yaml.py b/apps/common/serializers/better_yaml.py new file mode 100644 index 0000000000..330053f270 --- /dev/null +++ b/apps/common/serializers/better_yaml.py @@ -0,0 +1,103 @@ +# better_yaml.py + +""" +Customized YAML serializer, with more condensed and readable output. +Rather than producing a flat list of objects with the same three attributes: + + - fields: {...} + model: modelname + pk: 123 + +This serializer nests the data, grouping by model name, then indexing by +primary key. For example, instead of this output, as produced by the default +YAML serializer: + + - fields: {name: blue} + model: app.firstmodel + pk: 3 + - fields: {name: red} + model: app.firstmodel + pk: 1 + - fields: {name: green} + model: app.firstmodel + pk: 2 + - fields: {name: crumbly} + model: app.secondmodel + pk: 2 + - fields: {name: squishy} + model: app.secondmodel + pk: 1 + +You'll get this output: + + app.firstmodel: + 1: {name: red} + 2: {name: green} + 3: {name: blue} + app.secondmodel: + 1: {name: squishy} + 2: {name: crumbly} + +To use this customized serializer and deserializer, save this file +somewhere in your Django project, then add this to your settings.py: + + SERIALIZATION_MODULES = { + 'yaml': 'path.to.better_yaml', + } + +Note that this serializer is NOT compatible with the default Django +YAML serializer; this one uses nested dictionaries, while the default +one uses a flat list of object dicts. + +Requires PyYaml (http://pyyaml.org/), of course. +""" + +from StringIO import StringIO +import yaml + +from django.core.serializers.pyyaml import Serializer as YamlSerializer +from django.core.serializers.python import Deserializer as PythonDeserializer +from django.utils.encoding import smart_unicode + +class Serializer (YamlSerializer): + """ + Serialize database objects as nested dicts, indexed first by + model name, then by primary key. + """ + def start_serialization(self): + self._current = None + self.objects = {} + + def end_object(self, obj): + model = smart_unicode(obj._meta) + pk = obj._get_pk_val() + + if model not in self.objects: + self.objects[model] = {} + + self.objects[model][pk] = self._current + self._current = None + + +def Deserializer(stream_or_string, **options): + """ + Deserialize a stream or string of YAML data, + as written by the Serializer above. + """ + if isinstance(stream_or_string, basestring): + stream = StringIO(stream_or_string) + else: + stream = stream_or_string + + # Reconstruct the flat object list as PythonDeserializer expects + # NOTE: This could choke on large data sets, since it + # constructs the flattened data list in memory + data = [] + for model, objects in yaml.load(stream).iteritems(): + # Add the model name back into each object dict + for pk, fields in objects.iteritems(): + data.append({'model': model, 'pk': pk, 'fields': fields}) + + # Deserialize the flattened data + for obj in PythonDeserializer(data, **options): + yield obj diff --git a/apps/common/templates/generic_list_subtemplate.html b/apps/common/templates/generic_list_subtemplate.html index d1494312bf..81dfa73983 100644 --- a/apps/common/templates/generic_list_subtemplate.html +++ b/apps/common/templates/generic_list_subtemplate.html @@ -30,15 +30,15 @@
{% endif %} -
+ {% if object_list %} {% if multi_select or multi_select_as_buttons %} {% if multi_select_as_buttons %} {% get_multi_item_links as multi_item_links %} -