diff --git a/.tx/config b/.tx/config index acbc95abba..0ee87646bb 100644 --- a/.tx/config +++ b/.tx/config @@ -4,6 +4,7 @@ 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 [mayan-edms.apps-common] source_file = apps/common/locale/en/LC_MESSAGES/django.po @@ -11,6 +12,7 @@ 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 [mayan-edms.apps-permissions] source_file = apps/permissions/locale/en/LC_MESSAGES/django.po @@ -18,6 +20,7 @@ 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 [mayan-edms.apps-sources] source_file = apps/sources/locale/en/LC_MESSAGES/django.po @@ -25,6 +28,7 @@ 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 [mayan-edms.apps-document_indexing] source_file = apps/document_indexing/locale/en/LC_MESSAGES/django.po @@ -32,6 +36,7 @@ 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 [mayan-edms.apps-user_management] source_file = apps/user_management/locale/en/LC_MESSAGES/django.po @@ -39,6 +44,7 @@ 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 [mayan-edms.apps-main] source_file = apps/main/locale/en/LC_MESSAGES/django.po @@ -46,6 +52,7 @@ 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 [mayan-edms.apps-ocr] source_file = apps/ocr/locale/en/LC_MESSAGES/django.po @@ -53,6 +60,7 @@ 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 [mayan-edms.apps-project_setup] source_file = apps/project_setup/locale/en/LC_MESSAGES/django.po @@ -60,6 +68,7 @@ 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 [main] host = https://www.transifex.net @@ -70,6 +79,7 @@ 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 [mayan-edms.apps-history] source_file = apps/history/locale/en/LC_MESSAGES/django.po @@ -77,6 +87,7 @@ 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 [mayan-edms.apps-dynamic_search] source_file = apps/dynamic_search/locale/en/LC_MESSAGES/django.po @@ -84,6 +95,7 @@ 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 [mayan-edms.apps-smart_settings] source_file = apps/smart_settings/locale/en/LC_MESSAGES/django.po @@ -91,6 +103,7 @@ 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 [mayan-edms.apps-navigation] source_file = apps/navigation/locale/en/LC_MESSAGES/django.po @@ -98,6 +111,7 @@ 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 [mayan-edms.apps-tags] source_file = apps/tags/locale/en/LC_MESSAGES/django.po @@ -105,6 +119,7 @@ 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 [mayan-edms.apps-documents] source_file = apps/documents/locale/en/LC_MESSAGES/django.po @@ -112,6 +127,7 @@ 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 [mayan-edms.apps-project_tools] source_file = apps/project_tools/locale/en/LC_MESSAGES/django.po @@ -119,6 +135,7 @@ 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 [mayan-edms.apps-linking] source_file = apps/linking/locale/en/LC_MESSAGES/django.po @@ -126,6 +143,7 @@ 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 [mayan-edms.apps-document_comments] source_file = apps/document_comments/locale/en/LC_MESSAGES/django.po @@ -133,6 +151,7 @@ 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 [mayan-edms.apps-metadata] source_file = apps/metadata/locale/en/LC_MESSAGES/django.po @@ -140,6 +159,7 @@ 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 [mayan-edms.apps-web_theme] source_file = apps/web_theme/locale/en/LC_MESSAGES/django.po @@ -147,6 +167,7 @@ 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 [mayan-edms.apps-django_gpg] source_file = apps/django_gpg/locale/en/LC_MESSAGES/django.po @@ -154,3 +175,4 @@ 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 diff --git a/apps/common/locale/it/LC_MESSAGES/django.mo b/apps/common/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..5ac939ecbb Binary files /dev/null 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 new file mode 100644 index 0000000000..dd5bb70aee --- /dev/null +++ b/apps/common/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,333 @@ +# 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. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-12-07 18:22+0000\n" +"Last-Translator: pippo64 \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:17 +msgid "change password" +msgstr "cambia password" + +#: __init__.py:18 +msgid "user details" +msgstr "dettaglio utente" + +#: __init__.py:19 +msgid "edit details" +msgstr "modifica dettagli" + +#: __init__.py:23 __init__.py:29 +msgid "about" +msgstr "a rigurdo" + +#: __init__.py:24 +msgid "changelog" +msgstr "changelog" + +#: __init__.py:25 +msgid "license" +msgstr "licenza" + +#: forms.py:99 +msgid "Selection" +msgstr "Selezione" + +#: forms.py:131 +msgid "Email" +msgstr "Email" + +#: forms.py:142 +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" + +#: forms.py:144 +msgid "This account is inactive." +msgstr "Questo account è inattivo" + +#: 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 "Mastro" + +#: literals.py:38 +msgid "Portrait" +msgstr "Verticale" + +#: literals.py:39 +msgid "Landscape" +msgstr "Orizontale" + +#: utils.py:291 +msgid "function found" +msgstr "trovata funzione" + +#: utils.py:293 utils.py:295 +#, python-format +msgid "class found: %s" +msgstr "classe trovata:%s" + +#: views.py:24 templates/password_change_done.html:5 +msgid "Your password has been successfully changed." +msgstr "La tua password è stata cambiata con successo" + +#: views.py:41 +msgid "No action selected." +msgstr "Nessuna azione selezionata" + +#: views.py:45 +msgid "Must select at least one item." +msgstr "Devi selezionare un item" + +#: views.py:86 +#, python-format +msgid "%(selection)s added successfully added to %(right_list_title)s." +msgstr "%(selection)s aggiunto con successo a %(right_list_title)s." + +#: views.py:89 views.py:106 +#, python-format +msgid "Unable to add %(selection)s to %(right_list_title)s." +msgstr "Impossibile aggiungere %(selection)s a %(right_list_title)s." + +#: views.py:103 +#, python-format +msgid "%(selection)s added successfully removed from %(right_list_title)s." +msgstr "" +"%(selection)s aggiunto correttamente rimosso dal %(right_list_title)s." + +#: views.py:121 +msgid "Add" +msgstr "Aggiungi" + +#: views.py:132 +msgid "Remove" +msgstr "Rimuovi" + +#: views.py:155 +msgid "current user details" +msgstr "dettagli dell'utente corrente" + +#: views.py:172 +msgid "Current user's details updated." +msgstr "Dettagli dell'utente corrente aggiornati" + +#: views.py:181 +msgid "edit current user details" +msgstr "modifica i dettagli dell'utente corrente" + +#: views.py:207 +msgid "Changelog" +msgstr "Changelog" + +#: views.py:220 +msgid "License" +msgstr "Licenza" + +#: widgets.py:58 +msgid "None" +msgstr "Nessuno" + +#: conf/settings.py:15 +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()" + +#: conf/settings.py:65 +msgid "" +"Controls the mechanism used to authenticated user. Options are: username, " +"email" +msgstr "" +"Controllo del meccanismo di autenticazione. Le opzioni possibili " +"sono:username,email" + +#: templates/403.html:3 templates/403.html.py:7 +msgid "Insufficient permissions" +msgstr "Permessi insufficienti" + +#: templates/403.html:9 +msgid "You don't have enough permissions for this operation." +msgstr "Non hai i permessi per effettuare questa operazione." + +#: templates/404.html:3 templates/404.html.py:7 +msgid "Page not found" +msgstr "Pagina non trovata" + +#: templates/404.html:9 +msgid "Sorry, but the requested page could not be found." +msgstr "Scusa ma la pagina richiesta non è disponibile" + +#: templates/calculate_form_title.html:11 +#, python-format +msgid "Details for %(object_name)s: %(object)s" +msgstr "Dettagli per %(object_name)s: %(object)s" + +#: templates/calculate_form_title.html:13 +#, python-format +msgid "Details for: %(object)s" +msgstr "Detaglio per: %(object)s" + +#: templates/calculate_form_title.html:18 +#, python-format +msgid "Edit %(object_name)s:" +msgstr "Modifica %(object_name)s:" + +#: templates/calculate_form_title.html:20 +msgid "Edit" +msgstr "Modifica" + +#: templates/calculate_form_title.html:24 +#, python-format +msgid "Create new %(object_name)s" +msgstr "Crea nuovo %(object_name)s" + +#: templates/calculate_form_title.html:26 +msgid "Create" +msgstr "Crea" + +#: templates/generic_assign_remove.html:3 +#, python-format +msgid "Assign %(title)s %(object)s" +msgstr "Assigna %(title)s %(object)s" + +#: templates/generic_confirm.html:3 templates/generic_confirm.html.py:18 +msgid "Confirm" +msgstr "Conferma" + +#: templates/generic_confirm.html:16 +msgid "Confirm delete" +msgstr "Conferma la cancellazione" + +#: templates/generic_confirm.html:32 +msgid "form icon" +msgstr "icona del modulo" + +#: templates/generic_confirm.html:40 +#, python-format +msgid "Are you sure you wish to delete %(object_name)s: %(object)s?" +msgstr "Sei sicuro di voler cancellare %(object_name)s: %(object)s?" + +#: templates/generic_confirm.html:42 +#, python-format +msgid "Are you sure you wish to delete: %(object)s?" +msgstr "Sei sicuro di volr cancellare: %(object)s?" + +#: templates/generic_confirm.html:50 +msgid "Yes" +msgstr "Si" + +#: templates/generic_confirm.html:54 +msgid "No" +msgstr "No" + +#: templates/generic_form_instance.html:37 +#: templates/generic_form_subtemplate.html:52 +msgid "required" +msgstr "richiesto" + +#: templates/generic_form_subtemplate.html:76 +#: templates/generic_form_subtemplate.html:78 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:178 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Save" +msgstr "Salva" + +#: templates/generic_form_subtemplate.html:76 +#: templates/generic_form_subtemplate.html:78 +#: templates/generic_list_horizontal_subtemplate.html:51 +#: templates/generic_list_horizontal_subtemplate.html:178 +#: templates/generic_list_subtemplate.html:52 +#: templates/generic_list_subtemplate.html:178 +msgid "Submit" +msgstr "Sottometti" + +#: templates/generic_list.html:6 templates/generic_list_horizontal.html:6 +#, python-format +msgid "List of %(stripped_title)s" +msgstr "Lista di %(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 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 +#, python-format +msgid "List of %(title)s (%(total)s)" +msgstr "Lista di %(title)s (%(total)s)" + +#: templates/generic_list_subtemplate.html:72 +msgid "Identifier" +msgstr "Identificatore" + +#: templates/generic_list_subtemplate.html:152 +#, python-format +msgid "There are no %(stripped_title)s" +msgstr "Non ci sono %(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 "Cambia password" + + diff --git a/apps/converter/locale/es/LC_MESSAGES/django.mo b/apps/converter/locale/es/LC_MESSAGES/django.mo index 30ce640c0d..e0c200c67c 100644 Binary files a/apps/converter/locale/es/LC_MESSAGES/django.mo and b/apps/converter/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/converter/locale/es/LC_MESSAGES/django.po b/apps/converter/locale/es/LC_MESSAGES/django.po index 68d184d9c0..710d29bd7a 100644 --- a/apps/converter/locale/es/LC_MESSAGES/django.po +++ b/apps/converter/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" "POT-Creation-Date: 2011-11-22 11:26-0400\n" -"PO-Revision-Date: 2011-11-22 21:01+0000\n" +"PO-Revision-Date: 2011-12-06 06:17+0000\n" "Last-Translator: rosarior \n" "Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/es/)\n" "MIME-Version: 1.0\n" @@ -557,11 +557,11 @@ msgstr "" #: literals.py:205 literals.py:206 msgid "Photo CD" -msgstr "" +msgstr "Photo CD" #: literals.py:207 msgid "Page Control Language" -msgstr "" +msgstr "Page Control Language" #: literals.py:208 literals.py:221 msgid "Apple Macintosh QuickDraw/PICT" @@ -577,11 +577,11 @@ msgstr "" #: literals.py:211 msgid "Portable Document Format" -msgstr "" +msgstr "Formato portatil de documento" #: literals.py:212 msgid "Portable Document Archive Format" -msgstr "" +msgstr "Format portatil de archivo de documento" #: literals.py:213 msgid "Pentax Electronic File" diff --git a/apps/converter/locale/it/LC_MESSAGES/django.mo b/apps/converter/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..72cbfdd28e Binary files /dev/null and b/apps/converter/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/converter/locale/it/LC_MESSAGES/django.po b/apps/converter/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5e8e9ffb0a --- /dev/null +++ b/apps/converter/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,934 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:55+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:10 +msgid "file formats" +msgstr "" + +#: literals.py:19 +msgid "Resize" +msgstr "" + +#: literals.py:20 +msgid "Resize." +msgstr "" + +#: literals.py:22 literals.py:37 +msgid "width" +msgstr "" + +#: literals.py:23 literals.py:38 +msgid "height" +msgstr "" + +#: literals.py:27 +msgid "Rotate" +msgstr "" + +#: literals.py:28 +msgid "Rotate by n degress." +msgstr "" + +#: literals.py:30 +msgid "degrees" +msgstr "" + +#: literals.py:34 +msgid "Density" +msgstr "" + +#: literals.py:35 +msgid "Change the resolution (ie: DPI) without resizing." +msgstr "" + +#: literals.py:42 +msgid "Zoom" +msgstr "" + +#: literals.py:43 +msgid "Zoom by n percent." +msgstr "" + +#: literals.py:45 +msgid "percent" +msgstr "" + +#: literals.py:51 +msgid "Hasselblad Photo RAW, CFV/H3D39II" +msgstr "" + +#: literals.py:52 literals.py:53 +msgid "Photoshop resource format" +msgstr "" + +#: literals.py:54 +msgid "Photoshop resource text format" +msgstr "" + +#: literals.py:55 +msgid "Photoshop resource wide text format" +msgstr "" + +#: literals.py:57 +msgid "Raw alpha samples" +msgstr "" + +#: literals.py:58 +msgid "Adobe Illustrator CS2" +msgstr "" + +#: literals.py:59 +msgid "Raw application information" +msgstr "" + +#: literals.py:60 +msgid "Raw JPEG binary data" +msgstr "" + +#: literals.py:61 +msgid "PFS: 1st Publisher Clip Art" +msgstr "" + +#: literals.py:62 +msgid "Sony Alpha DSLR Raw Image Format" +msgstr "" + +#: literals.py:63 +msgid "Microsoft Audio/Visual Interleaved" +msgstr "" + +#: literals.py:64 +msgid "AVS X image" +msgstr "" + +#: literals.py:66 +msgid "Raw blue samples" +msgstr "" + +#: literals.py:67 +msgid "Raw blue, green, and red samples" +msgstr "" + +#: literals.py:68 +msgid "Raw blue, green, red and alpha samples" +msgstr "" + +#: literals.py:69 +msgid "Microsoft Windows bitmap image" +msgstr "" + +#: literals.py:70 +msgid "Microsoft Windows bitmap image version 2" +msgstr "" + +#: literals.py:71 +msgid "Microsoft Windows bitmap image version 3" +msgstr "" + +#: literals.py:72 +msgid "BRF ASCII Braille format" +msgstr "" + +#: literals.py:73 +msgid "Raw blue, red, and green samples" +msgstr "" + +#: literals.py:75 +msgid "Raw cyan samples" +msgstr "" + +#: literals.py:76 literals.py:181 +msgid "Magick Persistent Cache image format" +msgstr "" + +#: literals.py:77 literals.py:78 +msgid "Continuous Acquisition and Life-cycle Support Type 1 image" +msgstr "" + +#: literals.py:79 +msgid "Image caption" +msgstr "" + +#: literals.py:80 +msgid "Cineon Image File" +msgstr "" + +#: literals.py:81 +msgid "Cisco IP phone image format" +msgstr "" + +#: literals.py:82 +msgid "Image Clip Mask" +msgstr "" + +#: literals.py:83 +msgid "Raw cyan, magenta, yellow, and black samples" +msgstr "" + +#: literals.py:84 +msgid "Raw cyan, magenta, yellow, black, and opacity samples" +msgstr "" + +#: literals.py:85 literals.py:86 +msgid "Canon Digital Camera Raw Image Format" +msgstr "" + +#: literals.py:87 +msgid "Microsoft Cursor Icon" +msgstr "" + +#: literals.py:88 +msgid "DR Halo" +msgstr "" + +#: literals.py:90 +msgid "Digital Imaging and Communications in Medicine image" +msgstr "" + +#: literals.py:91 +msgid "Kodak Digital Camera Raw Image File" +msgstr "" + +#: literals.py:92 +msgid "ZSoft IBM PC multi-page Paintbrush" +msgstr "" + +#: literals.py:93 +msgid "Microsoft DirectDraw Surface" +msgstr "" + +#: literals.py:94 +msgid "Multi-face font package (Freetype 2.4.2)" +msgstr "" + +#: literals.py:95 +msgid "Déjà vu" +msgstr "" + +#: literals.py:96 +msgid "Adobe Digital Negative" +msgstr "" + +#: literals.py:97 +msgid "Graphviz" +msgstr "" + +#: literals.py:98 +msgid "SMPTE 268M-2003 (DPX 2.0)" +msgstr "" + +#: literals.py:100 +msgid "Encapsulated Portable Document Format" +msgstr "" + +#: literals.py:101 literals.py:106 +msgid "Adobe Encapsulated PostScript Interchange format" +msgstr "" + +#: literals.py:102 literals.py:105 +msgid "Adobe Encapsulated PostScript" +msgstr "" + +#: literals.py:103 +msgid "Adobe Level II Encapsulated PostScript" +msgstr "" + +#: literals.py:104 +msgid "Adobe Level III Encapsulated PostScript" +msgstr "" + +#: literals.py:107 +msgid "Adobe Encapsulated PostScript with TIFF preview" +msgstr "" + +#: literals.py:108 +msgid "Adobe Level II Encapsulated PostScript with TIFF preview" +msgstr "" + +#: literals.py:109 +msgid "Adobe Level III Encapsulated PostScript with TIFF preview" +msgstr "" + +#: literals.py:110 +msgid "Epson RAW Format" +msgstr "" + +#: literals.py:111 +msgid "Exif digital camera binary data" +msgstr "" + +#: literals.py:112 +msgid "High Dynamic-range (HDR)" +msgstr "" + +#: literals.py:114 +msgid "Group 3 FAX (Not TIFF Group3 FAX)" +msgstr "" + +#: literals.py:115 +msgid "Autodesk FLI animations file" +msgstr "" + +#: literals.py:116 +msgid "Autodesk FLC animations file" +msgstr "" + +#: literals.py:117 literals.py:120 +msgid "Flexible Image Transport System" +msgstr "" + +#: literals.py:118 +msgid "Kodak FlashPix file" +msgstr "" + +#: literals.py:119 literals.py:225 +msgid "Plasma fractal image" +msgstr "" + +#: literals.py:122 +msgid "Raw green samples" +msgstr "" + +#: literals.py:123 +msgid "Group 3 FAX" +msgstr "" + +#: literals.py:124 +msgid "Raw green, blue, and red samples" +msgstr "" + +#: literals.py:125 +msgid "GIMP brush file" +msgstr "" + +#: literals.py:126 +msgid "CompuServe graphics interchange format (version 89a)" +msgstr "" + +#: literals.py:127 +msgid "CompuServe graphics interchange format (version 87a)" +msgstr "" + +#: literals.py:128 +msgid "Gradual passing from one shade to another" +msgstr "" + +#: literals.py:129 +msgid "Raw gray samples" +msgstr "" + +#: literals.py:130 +msgid "Raw green, red, and blue samples" +msgstr "" + +#: literals.py:131 +msgid "Raw CCITT Group4" +msgstr "" + +#: literals.py:133 +msgid "Histogram of the image" +msgstr "" + +#: literals.py:134 +msgid "HRZ: Slow scan TV" +msgstr "" + +#: literals.py:135 literals.py:136 literals.py:255 +msgid "Hypertext Markup Language and a client-side image map" +msgstr "" + +#: literals.py:138 literals.py:264 literals.py:279 literals.py:283 +msgid "Truevision Targa image" +msgstr "" + +#: literals.py:139 literals.py:140 +msgid "ICC Color Profile" +msgstr "" + +#: literals.py:141 literals.py:142 +msgid "Microsoft Icon" +msgstr "" + +#: literals.py:143 +msgid "Hald CLUT identity image" +msgstr "" + +#: literals.py:144 +msgid "LabEye image format" +msgstr "" + +#: literals.py:145 +msgid "GraphicsMagick Embedded Image" +msgstr "" + +#: literals.py:146 +msgid "The image format and characteristics" +msgstr "" + +#: literals.py:147 +msgid "Base64-encoded inline images" +msgstr "" + +#: literals.py:148 +msgid "IPL Image Sequence" +msgstr "" + +#: literals.py:149 +msgid "IPTC Newsphoto" +msgstr "" + +#: literals.py:150 literals.py:151 +msgid "IPTC Newsphoto text format" +msgstr "" + +#: literals.py:152 +msgid "ISO/TR 11548-1 format" +msgstr "" + +#: literals.py:154 literals.py:157 +msgid "JPEG-2000 Code Stream Syntax" +msgstr "" + +#: literals.py:155 +msgid "JPEG Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:156 +msgid "JPEG-2000 JP2 File Format Syntax" +msgstr "" + +#: literals.py:158 literals.py:159 +msgid "Joint Photographic Experts Group JFIF format (IJG JPEG 62)" +msgstr "" + +#: literals.py:160 +msgid "JPEG-2000 File Format Syntax" +msgstr "" + +#: literals.py:162 +msgid "Raw black samples" +msgstr "" + +#: literals.py:163 literals.py:164 +msgid "Kodak Digital Camera Raw Image Format" +msgstr "" + +#: literals.py:166 +msgid "Image label" +msgstr "" + +#: literals.py:168 +msgid "Raw magenta samples" +msgstr "" + +#: literals.py:169 literals.py:179 literals.py:182 literals.py:183 +msgid "MPEG Video Stream" +msgstr "" + +#: literals.py:170 +msgid "Raw MPEG-4 Video" +msgstr "" + +#: literals.py:171 +msgid "Colormap intensities and indices" +msgstr "" + +#: literals.py:172 +msgid "MATLAB image format" +msgstr "" + +#: literals.py:173 +msgid "MATTE raw opacity format" +msgstr "" + +#: literals.py:174 +msgid "8-bit McIdas area file" +msgstr "" + +#: literals.py:175 +msgid "Microsoft Image Composer (MIC) file" +msgstr "" + +#: literals.py:176 +msgid "Magick Image File Format" +msgstr "" + +#: literals.py:177 +msgid "" +"Multiple-image Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:178 +msgid "Raw Bi-level bitmap in least-significant-byte first order" +msgstr "" + +#: literals.py:180 +msgid "MPEG-4 Video Stream" +msgstr "" + +#: literals.py:184 +msgid "Sony (Minolta) Raw Image File" +msgstr "" + +#: literals.py:185 +msgid "Magick Scripting Language" +msgstr "" + +#: literals.py:186 +msgid "Windows 1 and 2 MSP file format" +msgstr "" + +#: literals.py:187 +msgid "ImageMagick's own SVG internal renderer" +msgstr "" + +#: literals.py:188 +msgid "MTV Raytracing image format" +msgstr "" + +#: literals.py:189 +msgid "Magick Vector Graphics" +msgstr "" + +#: literals.py:191 +msgid "Nikon Digital SLR Camera Raw Image File" +msgstr "" + +#: literals.py:192 +msgid "Constant image of uniform color" +msgstr "" + +#: literals.py:194 +msgid "Raw opacity samples" +msgstr "" + +#: literals.py:195 +msgid "Olympus Digital Camera Raw Image File" +msgstr "" + +#: literals.py:196 +msgid "On-the-air bitmap" +msgstr "" + +#: literals.py:197 +msgid "Open Type font (Freetype 2.4.2)" +msgstr "" + +#: literals.py:199 +msgid "Xv thumbnail format" +msgstr "" + +#: literals.py:200 literals.py:277 +msgid "16bit/pixel interleaved YUV" +msgstr "" + +#: literals.py:201 +msgid "Palm pixmap" +msgstr "" + +#: literals.py:202 +msgid "Common 2-dimensional bitmap format" +msgstr "" + +#: literals.py:203 +msgid "Predefined pattern" +msgstr "" + +#: literals.py:204 +msgid "Portable bitmap format (black and white)" +msgstr "" + +#: literals.py:205 literals.py:206 +msgid "Photo CD" +msgstr "" + +#: literals.py:207 +msgid "Page Control Language" +msgstr "" + +#: literals.py:208 literals.py:221 +msgid "Apple Macintosh QuickDraw/PICT" +msgstr "" + +#: literals.py:209 +msgid "ZSoft IBM PC Paintbrush" +msgstr "" + +#: literals.py:210 +msgid "Palm Database ImageViewer Format" +msgstr "" + +#: literals.py:211 +msgid "Portable Document Format" +msgstr "" + +#: literals.py:212 +msgid "Portable Document Archive Format" +msgstr "" + +#: literals.py:213 +msgid "Pentax Electronic File" +msgstr "" + +#: literals.py:214 +msgid "Embrid Embroidery Format" +msgstr "" + +#: literals.py:215 +msgid "Postscript Type 1 font (ASCII) (Freetype 2.4.2)" +msgstr "" + +#: literals.py:216 +msgid "Postscript Type 1 font (binary) (Freetype 2.4.2)" +msgstr "" + +#: literals.py:217 +msgid "Portable float format" +msgstr "" + +#: literals.py:218 +msgid "Portable graymap format (gray scale)" +msgstr "" + +#: literals.py:219 +msgid "JPEG-2000 VM Format" +msgstr "" + +#: literals.py:220 +msgid "Personal Icon" +msgstr "" + +#: literals.py:222 +msgid "Alias/Wavefront RLE image format" +msgstr "" + +#: literals.py:223 +msgid "PIXAR raster file" +msgstr "" + +#: literals.py:224 +msgid "Joint Photographic Experts Group JFIF format (62)" +msgstr "" + +#: literals.py:226 +msgid "Portable Network Graphics (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:227 +msgid "" +"24-bit RGB PNG, opaque only (libpng 1.2.42,1.2.44, zlib 1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:228 +msgid "" +"32-bit RGBA PNG, semitransparency OK (libpng 1.2.42,1.2.44, zlib " +"1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:229 +msgid "" +"8-bit indexed PNG, binary transparency only (libpng 1.2.42,1.2.44, zlib " +"1.2.3.3,1.2.3.4)" +msgstr "" + +#: literals.py:230 +msgid "Portable anymap" +msgstr "" + +#: literals.py:231 +msgid "Portable pixmap format (color)" +msgstr "" + +#: literals.py:232 +msgid "Show a preview an image enhancement, effect, or f/x" +msgstr "" + +#: literals.py:233 +msgid "Adobe PostScript" +msgstr "" + +#: literals.py:234 +msgid "Adobe Level II PostScript" +msgstr "" + +#: literals.py:235 +msgid "Adobe Level III PostScript" +msgstr "" + +#: literals.py:236 +msgid "Adobe Large Document Format" +msgstr "" + +#: literals.py:237 +msgid "Adobe Photoshop bitmap" +msgstr "" + +#: literals.py:238 +msgid "Pyramid encoded TIFF" +msgstr "" + +#: literals.py:239 literals.py:253 +msgid "Seattle Film Works" +msgstr "" + +#: literals.py:241 +msgid "Raw red samples" +msgstr "" + +#: literals.py:242 +msgid "Fuji CCD-RAW Graphic File" +msgstr "" + +#: literals.py:243 literals.py:259 +msgid "SUN Rasterfile" +msgstr "" + +#: literals.py:244 +msgid "Raw red, blue, and green samples" +msgstr "" + +#: literals.py:245 +msgid "Raw red, green, and blue samples" +msgstr "" + +#: literals.py:246 +msgid "Raw red, green, blue, and matte samples" +msgstr "" + +#: literals.py:247 +msgid "Raw red, green, blue, and opacity samples" +msgstr "" + +#: literals.py:248 +msgid "Alias/Wavefront image" +msgstr "" + +#: literals.py:249 +msgid "Utah Run length encoded image" +msgstr "" + +#: literals.py:251 +msgid "ZX-Spectrum SCREEN$" +msgstr "" + +#: literals.py:252 +msgid "Scitex HandShake" +msgstr "" + +#: literals.py:254 +msgid "Irix RGB image" +msgstr "" + +#: literals.py:256 +msgid "Sony Raw Format 2" +msgstr "" + +#: literals.py:257 +msgid "Sony Raw Format" +msgstr "" + +#: literals.py:258 +msgid "Steganographic image" +msgstr "" + +#: literals.py:260 +msgid "Scalable Vector Graphics (XML 2.7.6, RSVG 2.32.0)" +msgstr "" + +#: literals.py:261 +msgid "Scalable Vector Graphics (ZIP compressed) (XML 2.7.6, RSVG 2.32.0)" +msgstr "" + +#: literals.py:263 literals.py:273 +msgid "Text" +msgstr "" + +#: literals.py:265 +msgid "EXIF Profile Thumbnail" +msgstr "" + +#: literals.py:266 +msgid "Tagged Image File Format (LIBTIFF, Version 3.9.4)" +msgstr "" + +#: literals.py:267 +msgid "Tagged Image File Format (64-bit) (LIBTIFF, Version 3.9.4)" +msgstr "" + +#: literals.py:268 +msgid "Tile image with a texture" +msgstr "" + +#: literals.py:269 +msgid "PSX TIM" +msgstr "" + +#: literals.py:270 +msgid "TOPOL X Image" +msgstr "" + +#: literals.py:271 +msgid "TrueType font collection (Freetype 2.4.2)" +msgstr "" + +#: literals.py:272 +msgid "TrueType font (Freetype 2.4.2)" +msgstr "" + +#: literals.py:275 +msgid "Unicode Text format" +msgstr "" + +#: literals.py:276 +msgid "X-Motif UIL table" +msgstr "" + +#: literals.py:280 +msgid "VICAR rasterfile format" +msgstr "" + +#: literals.py:281 +msgid "Visual Image Directory" +msgstr "" + +#: literals.py:282 literals.py:299 +msgid "Khoros Visualization image" +msgstr "" + +#: literals.py:285 +msgid "Wireless Bitmap (level 0) image" +msgstr "" + +#: literals.py:286 +msgid "Windows Meta File" +msgstr "" + +#: literals.py:287 +msgid "Word Perfect Graphics" +msgstr "" + +#: literals.py:288 +msgid "Windows Media Video" +msgstr "" + +#: literals.py:289 +msgid "Compressed Windows Meta File" +msgstr "" + +#: literals.py:291 +msgid "X Window System" +msgstr "" + +#: literals.py:292 +msgid "Foveon X3 (Sigma/Polaroid) Raw picture file" +msgstr "" + +#: literals.py:293 +msgid "X Windows system bitmap (black and white)" +msgstr "" + +#: literals.py:294 +msgid "Constant image uniform color" +msgstr "" + +#: literals.py:295 +msgid "GIMP image" +msgstr "" + +#: literals.py:296 +msgid "Adobe XML metadata" +msgstr "" + +#: literals.py:297 +msgid "X Windows system pixmap (color)" +msgstr "" + +#: literals.py:298 +msgid "Microsoft XML Paper Specification" +msgstr "" + +#: literals.py:300 +msgid "XV thumbnail file" +msgstr "" + +#: literals.py:301 +msgid "X Windows system window dump (color)" +msgstr "" + +#: literals.py:303 +msgid "Raw yellow samples" +msgstr "" + +#: literals.py:304 +msgid "CCIR 601 4:1:1 or 4:2:2 (8-bit only)" +msgstr "" + +#: views.py:15 +msgid "suported file formats" +msgstr "" + +#: views.py:20 +msgid "name" +msgstr "" + +#: views.py:24 +msgid "description" +msgstr "" + +#: conf/settings.py:11 +msgid "File path to imagemagick's convert program." +msgstr "" + +#: conf/settings.py:12 +msgid "File path to imagemagick's identify program." +msgstr "" + +#: conf/settings.py:13 +msgid "File path to graphicsmagick's program." +msgstr "" + +#: conf/settings.py:15 +msgid "" +"Graphics conversion backend to use. Options are: " +"converter.backends.imagemagick, converter.backends.graphicsmagick and " +"converter.backends.python." +msgstr "" + +#: conf/settings.py:16 +msgid "Path to the unoconv program." +msgstr "" + +#: conf/settings.py:17 +msgid "" +"Use alternate method of connection to LibreOffice using a pipe, it is slower" +" but less prone to segmentation faults." +msgstr "" + +#: templates/converter_file_formats_help.html:3 +msgid "Help" +msgstr "" + +#: templates/converter_file_formats_help.html:4 +#, python-format +msgid "" +"These are the file formats supported by the currently selected converter " +"backend. In this case: '%(backend)s'" +msgstr "" + + diff --git a/apps/django_gpg/__init__.py b/apps/django_gpg/__init__.py index 7fe12a221c..e45ae78165 100644 --- a/apps/django_gpg/__init__.py +++ b/apps/django_gpg/__init__.py @@ -16,6 +16,8 @@ PERMISSION_KEY_VIEW = {'namespace': 'django_gpg', 'name': 'key_view', 'label': _ PERMISSION_KEY_DELETE = {'namespace': 'django_gpg', 'name': 'key_delete', 'label': _(u'Delete keys')} PERMISSION_KEYSERVER_QUERY = {'namespace': 'django_gpg', 'name': 'keyserver_query', 'label': _(u'Query keyservers')} PERMISSION_KEY_RECEIVE = {'namespace': 'django_gpg', 'name': 'key_receive', 'label': _(u'Import key from keyservers')} +PERMISSION_SIGNATURE_UPLOAD = {'namespace': 'django_gpg', 'name': 'signature_upload', 'label': _(u'Upload detached signatures')} +PERMISSION_SIGNATURE_DOWNLOAD = {'namespace': 'django_gpg', 'name': 'key_receive', 'label': _(u'Download detached signatures')} # Permission setup set_namespace_title('django_gpg', _(u'Signatures')) @@ -24,23 +26,39 @@ register_permission(PERMISSION_KEY_VIEW) register_permission(PERMISSION_KEY_DELETE) register_permission(PERMISSION_KEYSERVER_QUERY) register_permission(PERMISSION_KEY_RECEIVE) +register_permission(PERMISSION_SIGNATURE_UPLOAD) +register_permission(PERMISSION_SIGNATURE_DOWNLOAD) + +def has_embedded_signature(context): + return context['object'].signature_state + +def doesnt_have_detached_signature(context): + return context['object'].has_detached_signature() == False # Setup views private_keys = {'text': _(u'private keys'), 'view': 'key_private_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]} public_keys = {'text': _(u'public keys'), 'view': 'key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]} key_delete = {'text': _(u'delete'), 'view': 'key_delete', 'args': ['object.fingerprint', 'object.type'], 'famfam': 'key_delete', 'permissions': [PERMISSION_KEY_DELETE]} -key_query = {'text': _(u'Query keyservers'), 'view': 'key_query', 'famfam': 'zoom', 'permissions': [PERMISSION_KEYSERVER_QUERY]} -key_receive = {'text': _(u'Import'), 'view': 'key_receive', 'args': 'object.keyid', 'famfam': 'key_add', 'keep_query': True, 'permissions': [PERMISSION_KEY_RECEIVE]} +key_query = {'text': _(u'query keyservers'), 'view': 'key_query', 'famfam': 'zoom', 'permissions': [PERMISSION_KEYSERVER_QUERY]} +key_receive = {'text': _(u'import'), 'view': 'key_receive', 'args': 'object.keyid', 'famfam': 'key_add', 'keep_query': True, 'permissions': [PERMISSION_KEY_RECEIVE]} +document_signature_upload = {'text': _(u'upload signature'), 'view': 'document_signature_upload', 'args': 'object.pk', 'famfam': 'pencil_add', 'permissions': [PERMISSION_SIGNATURE_UPLOAD], 'conditional_disable': has_embedded_signature} +document_signature_download = {'text': _(u'download signature'), 'view': 'document_signature_download', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_SIGNATURE_DOWNLOAD], 'conditional_disable': doesnt_have_detached_signature} +key_setup = {'text': _(u'key management'), 'view': 'key_public_list', 'args': 'object.pk', 'famfam': 'key', 'icon': 'key.png', 'permissions': [PERMISSION_KEY_VIEW]} # Document views document_verify = {'text': _(u'signatures'), 'view': 'document_verify', 'args': 'object.pk', 'famfam': 'text_signature', 'permissions': [PERMISSION_DOCUMENT_VERIFY]} register_links(Document, [document_verify], menu_name='form_header') -register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar') +register_links(['document_verify', 'document_signature_upload', 'document_signature_download'], [document_signature_upload, document_signature_download], menu_name='sidebar') + +#register_links(['key_delete', 'key_private_list', 'key_public_list', 'key_query'], [private_keys, public_keys, key_query], menu_name='sidebar') +register_links(['key_delete', 'key_public_list', 'key_query'], [public_keys, key_query], menu_name='sidebar') register_links(Key, [key_delete]) register_links(KeyServerKey, [key_receive]) -register_setup(private_keys) -register_setup(public_keys) +register_setup(key_setup) + + + diff --git a/apps/django_gpg/api.py b/apps/django_gpg/api.py index 50ca3d564c..8d9f2e2b4b 100644 --- a/apps/django_gpg/api.py +++ b/apps/django_gpg/api.py @@ -2,6 +2,8 @@ import types from StringIO import StringIO from pickle import dumps import logging +import tempfile +import os from django.core.files.base import File from django.utils.translation import ugettext_lazy as _ @@ -164,7 +166,7 @@ class GPG(object): self.gpg = gnupg.GPG(**kwargs) - def verify_w_retry(self, file_input): + def verify_w_retry(self, file_input, detached_signature=None): if isinstance(file_input, types.StringTypes): input_descriptor = open(file_input, 'rb') elif isinstance(file_input, types.FileType) or isinstance(file_input, File): @@ -175,12 +177,12 @@ class GPG(object): raise ValueError('Invalid file_input argument type') try: - verify = self.verify_file(input_descriptor) + verify = self.verify_file(input_descriptor, detached_signature) if verify.status == 'no public key': # Try to fetch the public key from the keyservers try: self.receive_key(verify.key_id) - return self.verify_w_retry(file_input) + return self.verify_w_retry(file_input, detached_signature) except KeyFetchingError: return verify else: @@ -188,7 +190,7 @@ class GPG(object): except IOError: return False - def verify_file(self, file_input): + def verify_file(self, file_input, detached_signature=None): """ Verify the signature of a file. """ @@ -199,7 +201,17 @@ class GPG(object): else: raise ValueError('Invalid file_input argument type') - verify = self.gpg.verify_file(descriptor) + if detached_signature: + # Save the original data and invert the argument order + # Signature first, file second + file_descriptor, filename = tempfile.mkstemp(prefix='django_gpg') + file_data = file_input.read() + file_input.close() + os.write(file_descriptor, file_data) + os.close(file_descriptor) + verify = self.gpg.verify_file(detached_signature, data_filename=filename) + else: + verify = self.gpg.verify_file(descriptor) descriptor.close() if verify: diff --git a/apps/django_gpg/forms.py b/apps/django_gpg/forms.py index 619035fd5d..b961daf037 100644 --- a/apps/django_gpg/forms.py +++ b/apps/django_gpg/forms.py @@ -11,3 +11,9 @@ class KeySearchForm(forms.Form): label=_(u'Term'), help_text=_(u'Name, e-mail, key ID or key fingerprint to look for.') ) + + +class DetachedSignatureForm(forms.Form): + file = forms.FileField( + label=_(u'Signature file'), + ) diff --git a/apps/django_gpg/locale/en/LC_MESSAGES/django.po b/apps/django_gpg/locale/en/LC_MESSAGES/django.po index 22a9e34631..bb2d01367b 100644 --- a/apps/django_gpg/locale/en/LC_MESSAGES/django.po +++ b/apps/django_gpg/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: 2011-12-05 13:40-0400\n" +"POT-Creation-Date: 2011-12-06 02:06-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,7 @@ msgstr "" msgid "Delete keys" msgstr "" -#: __init__.py:17 __init__.py:32 +#: __init__.py:17 msgid "Query keyservers" msgstr "" @@ -37,75 +37,99 @@ msgstr "" msgid "Import key from keyservers" msgstr "" -#: __init__.py:21 +#: __init__.py:19 +msgid "Upload detached signatures" +msgstr "" + +#: __init__.py:20 +msgid "Download detached signatures" +msgstr "" + +#: __init__.py:23 msgid "Signatures" msgstr "" -#: __init__.py:29 views.py:65 +#: __init__.py:39 views.py:67 msgid "private keys" msgstr "" -#: __init__.py:30 views.py:68 +#: __init__.py:40 views.py:70 msgid "public keys" msgstr "" -#: __init__.py:31 +#: __init__.py:41 msgid "delete" msgstr "" -#: __init__.py:33 -msgid "Import" +#: __init__.py:42 +msgid "query keyservers" msgstr "" -#: __init__.py:36 +#: __init__.py:43 +msgid "import" +msgstr "" + +#: __init__.py:44 +msgid "upload signature" +msgstr "" + +#: __init__.py:45 +msgid "download signature" +msgstr "" + +#: __init__.py:46 +msgid "key management" +msgstr "" + +#: __init__.py:49 msgid "signatures" msgstr "" -#: api.py:20 +#: api.py:22 msgid "Public" msgstr "" -#: api.py:21 +#: api.py:23 msgid "Secret" msgstr "" -#: api.py:29 api.py:34 +#: api.py:31 api.py:36 msgid "RSA" msgstr "" -#: api.py:30 +#: api.py:32 msgid "DSA" msgstr "" -#: api.py:35 +#: api.py:37 msgid "Elgamal" msgstr "" -#: api.py:49 +#: api.py:51 msgid "Bad signature." msgstr "" -#: api.py:53 +#: api.py:55 msgid "Document not signed or invalid signature." msgstr "" -#: api.py:57 +#: api.py:59 msgid "Signature error." msgstr "" -#: api.py:61 +#: api.py:63 msgid "Document is signed but no public key is available for verification." msgstr "" -#: api.py:65 +#: api.py:67 msgid "Document is signed, and signature is good." msgstr "" -#: api.py:69 +#: api.py:71 msgid "Document is signed with a valid signature." msgstr "" -#: api.py:142 +#: api.py:144 msgid "unknown" msgstr "" @@ -117,43 +141,47 @@ msgstr "" msgid "Name, e-mail, key ID or key fingerprint to look for." msgstr "" -#: views.py:43 +#: forms.py:18 +msgid "Signature file" +msgstr "" + +#: views.py:45 #, python-format msgid "Key: %s, imported successfully." msgstr "" -#: views.py:46 +#: views.py:48 #, python-format msgid "Unable to import key id: %s" msgstr "" -#: views.py:50 +#: views.py:52 msgid "Import key" msgstr "" -#: views.py:51 +#: views.py:53 #, python-format msgid "Are you sure you wish to import key id: %s?" msgstr "" -#: views.py:76 +#: views.py:78 msgid "Key ID" msgstr "" -#: views.py:80 +#: views.py:82 msgid "Owner" msgstr "" -#: views.py:100 +#: views.py:102 #, python-format msgid "Key: %s, deleted successfully." msgstr "" -#: views.py:107 +#: views.py:109 msgid "Delete key" msgstr "" -#: views.py:109 +#: views.py:111 #, python-format msgid "" "Are you sure you wish to delete key: %s? If you try to delete a public key " @@ -161,47 +189,47 @@ msgid "" "well." msgstr "" -#: views.py:127 +#: views.py:129 msgid "Query key server" msgstr "" -#: views.py:140 +#: views.py:142 msgid "results" msgstr "" -#: views.py:145 +#: views.py:147 msgid "ID" msgstr "" -#: views.py:149 +#: views.py:151 msgid "type" msgstr "" -#: views.py:153 +#: views.py:155 msgid "creation date" msgstr "" -#: views.py:157 +#: views.py:159 msgid "disabled" msgstr "" -#: views.py:161 +#: views.py:163 msgid "expiration date" msgstr "" -#: views.py:165 +#: views.py:167 msgid "expired" msgstr "" -#: views.py:169 +#: views.py:171 msgid "length" msgstr "" -#: views.py:173 +#: views.py:175 msgid "revoked" msgstr "" -#: views.py:178 +#: views.py:180 msgid "Identifies" msgstr "" @@ -248,6 +276,15 @@ msgstr "" msgid "signature properties for: %s" msgstr "" +#: views.py:250 +msgid "Detached signature uploaded successfully." +msgstr "" + +#: views.py:259 +#, python-format +msgid "Upload detached signature for: %s" +msgstr "" + #: conf/settings.py:13 msgid "List of keyservers to be queried for unknown keys." msgstr "" diff --git a/apps/django_gpg/locale/es/LC_MESSAGES/django.mo b/apps/django_gpg/locale/es/LC_MESSAGES/django.mo index 578eb2056e..e37a8ed1ed 100644 Binary files a/apps/django_gpg/locale/es/LC_MESSAGES/django.mo and b/apps/django_gpg/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/django_gpg/locale/es/LC_MESSAGES/django.po b/apps/django_gpg/locale/es/LC_MESSAGES/django.po index 9d384e4241..7517475856 100644 --- a/apps/django_gpg/locale/es/LC_MESSAGES/django.po +++ b/apps/django_gpg/locale/es/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" -"POT-Creation-Date: 2011-12-05 13:40-0400\n" -"PO-Revision-Date: 2011-12-05 17:52+0000\n" +"POT-Creation-Date: 2011-12-06 02:06-0400\n" +"PO-Revision-Date: 2011-12-06 06:14+0000\n" "Last-Translator: rosarior \n" "Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/es/)\n" "MIME-Version: 1.0\n" @@ -30,7 +30,7 @@ msgstr "Ver llaves" msgid "Delete keys" msgstr "Borrar llaves" -#: __init__.py:17 __init__.py:32 +#: __init__.py:17 msgid "Query keyservers" msgstr "Hacer búsquedas en servidores de llaves" @@ -38,77 +38,103 @@ msgstr "Hacer búsquedas en servidores de llaves" msgid "Import key from keyservers" msgstr "Importar llaves de los servidores de llaves" -#: __init__.py:21 +#: __init__.py:19 +msgid "Upload detached signatures" +msgstr "Subir una firma a parte" + +#: __init__.py:20 +msgid "Download detached signatures" +msgstr "Descargar la fima" + +#: __init__.py:23 msgid "Signatures" msgstr "Firmas" -#: __init__.py:29 views.py:65 +#: __init__.py:39 views.py:67 msgid "private keys" msgstr "llaves privadas" -#: __init__.py:30 views.py:68 +#: __init__.py:40 views.py:70 msgid "public keys" msgstr "llaves públicas" -#: __init__.py:31 +#: __init__.py:41 msgid "delete" msgstr "borrar" -#: __init__.py:33 -msgid "Import" -msgstr "Importar" +#: __init__.py:42 +msgid "query keyservers" +msgstr "consultar servidor de llaves" -#: __init__.py:36 +#: __init__.py:43 +msgid "import" +msgstr "importar" + +#: __init__.py:44 +msgid "upload signature" +msgstr "subir firma" + +#: __init__.py:45 +msgid "download signature" +msgstr "descargar firma" + +#: __init__.py:46 +msgid "key management" +msgstr "manejo de llaves" + +#: __init__.py:49 msgid "signatures" msgstr "firmas" -#: api.py:20 +#: api.py:22 msgid "Public" -msgstr "" +msgstr "Pública" -#: api.py:21 +#: api.py:23 msgid "Secret" -msgstr "" +msgstr "Secreta" -#: api.py:29 api.py:34 +#: api.py:31 api.py:36 msgid "RSA" msgstr "RSA" -#: api.py:30 +#: api.py:32 msgid "DSA" msgstr "DSA" -#: api.py:35 +#: api.py:37 msgid "Elgamal" -msgstr "" +msgstr "Elgamal" -#: api.py:49 +#: api.py:51 msgid "Bad signature." -msgstr "" +msgstr "Firma invalida." -#: api.py:53 +#: api.py:55 msgid "Document not signed or invalid signature." -msgstr "" +msgstr "Documento no firmado o firma invalida." -#: api.py:57 +#: api.py:59 msgid "Signature error." -msgstr "" +msgstr "Error de firma." -#: api.py:61 +#: api.py:63 msgid "Document is signed but no public key is available for verification." msgstr "" +"El document ha sido firmado pero no hay llave pública disponible para " +"verificación." -#: api.py:65 +#: api.py:67 msgid "Document is signed, and signature is good." -msgstr "" +msgstr "El document ha sido firmado y la firma esta es buen estado." -#: api.py:69 +#: api.py:71 msgid "Document is signed with a valid signature." -msgstr "" +msgstr "El document ha sido firmado y la firma ha sido validada." -#: api.py:142 +#: api.py:144 msgid "unknown" -msgstr "" +msgstr "desconocida" #: forms.py:11 msgid "Term" @@ -117,140 +143,160 @@ msgstr "Término" #: forms.py:12 msgid "Name, e-mail, key ID or key fingerprint to look for." msgstr "" +"Nombre, dirección de correo electrónico, identificador de llave or huella " +"digital de llave a buscar." -#: views.py:43 +#: forms.py:18 +msgid "Signature file" +msgstr "Archivo de firma" + +#: views.py:45 #, python-format msgid "Key: %s, imported successfully." -msgstr "" +msgstr "Llave: %s, importada exitosamente." -#: views.py:46 +#: views.py:48 #, python-format msgid "Unable to import key id: %s" -msgstr "" +msgstr "No se pudo importa la llave: %s" -#: views.py:50 +#: views.py:52 msgid "Import key" -msgstr "" +msgstr "Importar llave" -#: views.py:51 +#: views.py:53 #, python-format msgid "Are you sure you wish to import key id: %s?" msgstr "¿Esta seguro que desea importar la llave: %s?" -#: views.py:76 +#: views.py:78 msgid "Key ID" -msgstr "" +msgstr "Identificador de llave" -#: views.py:80 +#: views.py:82 msgid "Owner" msgstr "Dueño" -#: views.py:100 +#: views.py:102 #, python-format msgid "Key: %s, deleted successfully." msgstr "Llave: %s, borrada exitosamente." -#: views.py:107 +#: views.py:109 msgid "Delete key" msgstr "Borrar llave" -#: views.py:109 +#: views.py:111 #, python-format msgid "" "Are you sure you wish to delete key: %s? If you try to delete a public key " "that is part of a public/private pair the private key will be deleted as " "well." msgstr "" +"¿Esta seguro que desea borrar la llave: %s? Si trata de borrar una llave " +"pública que es parte de un par público/privado la llave privada será borrada" +" también." -#: views.py:127 +#: views.py:129 msgid "Query key server" -msgstr "" +msgstr "Consultar servidor de llaves" -#: views.py:140 +#: views.py:142 msgid "results" msgstr "resultados" -#: views.py:145 +#: views.py:147 msgid "ID" -msgstr "" +msgstr "ID" -#: views.py:149 +#: views.py:151 msgid "type" msgstr "tipo" -#: views.py:153 +#: views.py:155 msgid "creation date" msgstr "fecha de creación" -#: views.py:157 +#: views.py:159 msgid "disabled" -msgstr "" +msgstr "desactivada" -#: views.py:161 +#: views.py:163 msgid "expiration date" -msgstr "" +msgstr "fecha de expiración" -#: views.py:165 +#: views.py:167 msgid "expired" -msgstr "" +msgstr "expirada" -#: views.py:169 +#: views.py:171 msgid "length" -msgstr "" +msgstr "tamaño" -#: views.py:173 +#: views.py:175 msgid "revoked" -msgstr "" +msgstr "revocada" -#: views.py:178 +#: views.py:180 msgid "Identifies" -msgstr "" +msgstr "Identidades" #: views.py:205 #, python-format msgid "Signature status: %(widget)s %(text)s" -msgstr "" +msgstr "Estado de la firma: %(widget)s %(text)s" #: views.py:212 msgid "embedded" -msgstr "" +msgstr "integrada" #: views.py:214 msgid "detached" -msgstr "" +msgstr "a parte" #: views.py:219 #, python-format msgid "Signature ID: %s" -msgstr "" +msgstr "ID de la firma: %s" #: views.py:220 #, python-format msgid "Signature type: %s" -msgstr "" +msgstr "Tipo de firma: %s" #: views.py:221 #, python-format msgid "Key ID: %s" -msgstr "" +msgstr "ID de la llave: %s" #: views.py:222 #, python-format msgid "Timestamp: %s" -msgstr "" +msgstr "Fecha y hora: %s" #: views.py:223 #, python-format msgid "Signee: %s" -msgstr "" +msgstr "Firmantes: %s" #: views.py:228 #, python-format msgid "signature properties for: %s" -msgstr "" +msgstr "propiedades de firma para: %s" + +#: views.py:250 +msgid "Detached signature uploaded successfully." +msgstr "El archivo de firma fue subido exitosamente." + +#: views.py:259 +#, python-format +msgid "Upload detached signature for: %s" +msgstr "Subir firma a parte para: %s" #: conf/settings.py:13 msgid "List of keyservers to be queried for unknown keys." msgstr "" +"Lista de servidores de llaves a ser utilizados para buscar llaves " +"desconocidas." diff --git a/apps/django_gpg/locale/it/LC_MESSAGES/django.mo b/apps/django_gpg/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..78fac47634 Binary files /dev/null and b/apps/django_gpg/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/django_gpg/locale/it/LC_MESSAGES/django.po b/apps/django_gpg/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5fc3342cd5 --- /dev/null +++ b/apps/django_gpg/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,292 @@ +# 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: 2011-12-06 02:06-0400\n" +"PO-Revision-Date: 2011-12-06 06:07+0000\n" +"Last-Translator: rosarior \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:14 +msgid "Verify document signatures" +msgstr "" + +#: __init__.py:15 +msgid "View keys" +msgstr "" + +#: __init__.py:16 +msgid "Delete keys" +msgstr "" + +#: __init__.py:17 +msgid "Query keyservers" +msgstr "" + +#: __init__.py:18 +msgid "Import key from keyservers" +msgstr "" + +#: __init__.py:19 +msgid "Upload detached signatures" +msgstr "" + +#: __init__.py:20 +msgid "Download detached signatures" +msgstr "" + +#: __init__.py:23 +msgid "Signatures" +msgstr "" + +#: __init__.py:39 views.py:67 +msgid "private keys" +msgstr "" + +#: __init__.py:40 views.py:70 +msgid "public keys" +msgstr "" + +#: __init__.py:41 +msgid "delete" +msgstr "" + +#: __init__.py:42 +msgid "query keyservers" +msgstr "" + +#: __init__.py:43 +msgid "import" +msgstr "" + +#: __init__.py:44 +msgid "upload signature" +msgstr "" + +#: __init__.py:45 +msgid "download signature" +msgstr "" + +#: __init__.py:46 +msgid "key management" +msgstr "" + +#: __init__.py:49 +msgid "signatures" +msgstr "" + +#: api.py:22 +msgid "Public" +msgstr "" + +#: api.py:23 +msgid "Secret" +msgstr "" + +#: api.py:31 api.py:36 +msgid "RSA" +msgstr "" + +#: api.py:32 +msgid "DSA" +msgstr "" + +#: api.py:37 +msgid "Elgamal" +msgstr "" + +#: api.py:51 +msgid "Bad signature." +msgstr "" + +#: api.py:55 +msgid "Document not signed or invalid signature." +msgstr "" + +#: api.py:59 +msgid "Signature error." +msgstr "" + +#: api.py:63 +msgid "Document is signed but no public key is available for verification." +msgstr "" + +#: api.py:67 +msgid "Document is signed, and signature is good." +msgstr "" + +#: api.py:71 +msgid "Document is signed with a valid signature." +msgstr "" + +#: api.py:144 +msgid "unknown" +msgstr "" + +#: forms.py:11 +msgid "Term" +msgstr "" + +#: forms.py:12 +msgid "Name, e-mail, key ID or key fingerprint to look for." +msgstr "" + +#: forms.py:18 +msgid "Signature file" +msgstr "" + +#: views.py:45 +#, python-format +msgid "Key: %s, imported successfully." +msgstr "" + +#: views.py:48 +#, python-format +msgid "Unable to import key id: %s" +msgstr "" + +#: views.py:52 +msgid "Import key" +msgstr "" + +#: views.py:53 +#, python-format +msgid "Are you sure you wish to import key id: %s?" +msgstr "" + +#: views.py:78 +msgid "Key ID" +msgstr "" + +#: views.py:82 +msgid "Owner" +msgstr "" + +#: views.py:102 +#, python-format +msgid "Key: %s, deleted successfully." +msgstr "" + +#: views.py:109 +msgid "Delete key" +msgstr "" + +#: views.py:111 +#, python-format +msgid "" +"Are you sure you wish to delete key: %s? If you try to delete a public key " +"that is part of a public/private pair the private key will be deleted as " +"well." +msgstr "" + +#: views.py:129 +msgid "Query key server" +msgstr "" + +#: views.py:142 +msgid "results" +msgstr "" + +#: views.py:147 +msgid "ID" +msgstr "" + +#: views.py:151 +msgid "type" +msgstr "" + +#: views.py:155 +msgid "creation date" +msgstr "" + +#: views.py:159 +msgid "disabled" +msgstr "" + +#: views.py:163 +msgid "expiration date" +msgstr "" + +#: views.py:167 +msgid "expired" +msgstr "" + +#: views.py:171 +msgid "length" +msgstr "" + +#: views.py:175 +msgid "revoked" +msgstr "" + +#: views.py:180 +msgid "Identifies" +msgstr "" + +#: views.py:205 +#, python-format +msgid "Signature status: %(widget)s %(text)s" +msgstr "" + +#: views.py:212 +msgid "embedded" +msgstr "" + +#: views.py:214 +msgid "detached" +msgstr "" + +#: views.py:219 +#, python-format +msgid "Signature ID: %s" +msgstr "" + +#: views.py:220 +#, python-format +msgid "Signature type: %s" +msgstr "" + +#: views.py:221 +#, python-format +msgid "Key ID: %s" +msgstr "" + +#: views.py:222 +#, python-format +msgid "Timestamp: %s" +msgstr "" + +#: views.py:223 +#, python-format +msgid "Signee: %s" +msgstr "" + +#: views.py:228 +#, python-format +msgid "signature properties for: %s" +msgstr "" + +#: views.py:250 +msgid "Detached signature uploaded successfully." +msgstr "" + +#: views.py:259 +#, python-format +msgid "Upload detached signature for: %s" +msgstr "" + +#: conf/settings.py:13 +msgid "List of keyservers to be queried for unknown keys." +msgstr "" + + diff --git a/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo b/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo index 7fae94e56b..9aea042e15 100644 Binary files a/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo and b/apps/django_gpg/locale/pt/LC_MESSAGES/django.mo differ diff --git a/apps/django_gpg/locale/pt/LC_MESSAGES/django.po b/apps/django_gpg/locale/pt/LC_MESSAGES/django.po index 00d912b06e..7b89397c22 100644 --- a/apps/django_gpg/locale/pt/LC_MESSAGES/django.po +++ b/apps/django_gpg/locale/pt/LC_MESSAGES/django.po @@ -1,20 +1,21 @@ # 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: 2011-12-05 13:40-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-12-06 02:06-0400\n" "PO-Revision-Date: 2011-12-05 17:43+0000\n" "Last-Translator: rosarior \n" -"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/team/pt/)\n" +"Language-Team: Portuguese (http://www.transifex.net/projects/p/mayan-edms/" +"team/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" #: __init__.py:14 @@ -29,7 +30,7 @@ msgstr "" msgid "Delete keys" msgstr "" -#: __init__.py:17 __init__.py:32 +#: __init__.py:17 msgid "Query keyservers" msgstr "" @@ -37,75 +38,99 @@ msgstr "" msgid "Import key from keyservers" msgstr "" -#: __init__.py:21 +#: __init__.py:19 +msgid "Upload detached signatures" +msgstr "" + +#: __init__.py:20 +msgid "Download detached signatures" +msgstr "" + +#: __init__.py:23 msgid "Signatures" msgstr "" -#: __init__.py:29 views.py:65 +#: __init__.py:39 views.py:67 msgid "private keys" msgstr "" -#: __init__.py:30 views.py:68 +#: __init__.py:40 views.py:70 msgid "public keys" msgstr "" -#: __init__.py:31 +#: __init__.py:41 msgid "delete" msgstr "" -#: __init__.py:33 -msgid "Import" +#: __init__.py:42 +msgid "query keyservers" msgstr "" -#: __init__.py:36 +#: __init__.py:43 +msgid "import" +msgstr "" + +#: __init__.py:44 +msgid "upload signature" +msgstr "" + +#: __init__.py:45 +msgid "download signature" +msgstr "" + +#: __init__.py:46 +msgid "key management" +msgstr "" + +#: __init__.py:49 msgid "signatures" msgstr "" -#: api.py:20 +#: api.py:22 msgid "Public" msgstr "" -#: api.py:21 +#: api.py:23 msgid "Secret" msgstr "" -#: api.py:29 api.py:34 +#: api.py:31 api.py:36 msgid "RSA" msgstr "" -#: api.py:30 +#: api.py:32 msgid "DSA" msgstr "" -#: api.py:35 +#: api.py:37 msgid "Elgamal" msgstr "" -#: api.py:49 +#: api.py:51 msgid "Bad signature." msgstr "" -#: api.py:53 +#: api.py:55 msgid "Document not signed or invalid signature." msgstr "" -#: api.py:57 +#: api.py:59 msgid "Signature error." msgstr "" -#: api.py:61 +#: api.py:63 msgid "Document is signed but no public key is available for verification." msgstr "" -#: api.py:65 +#: api.py:67 msgid "Document is signed, and signature is good." msgstr "" -#: api.py:69 +#: api.py:71 msgid "Document is signed with a valid signature." msgstr "" -#: api.py:142 +#: api.py:144 msgid "unknown" msgstr "" @@ -117,43 +142,47 @@ msgstr "" msgid "Name, e-mail, key ID or key fingerprint to look for." msgstr "" -#: views.py:43 +#: forms.py:18 +msgid "Signature file" +msgstr "" + +#: views.py:45 #, python-format msgid "Key: %s, imported successfully." msgstr "" -#: views.py:46 +#: views.py:48 #, python-format msgid "Unable to import key id: %s" msgstr "" -#: views.py:50 +#: views.py:52 msgid "Import key" msgstr "" -#: views.py:51 +#: views.py:53 #, python-format msgid "Are you sure you wish to import key id: %s?" msgstr "" -#: views.py:76 +#: views.py:78 msgid "Key ID" msgstr "" -#: views.py:80 +#: views.py:82 msgid "Owner" msgstr "" -#: views.py:100 +#: views.py:102 #, python-format msgid "Key: %s, deleted successfully." msgstr "" -#: views.py:107 +#: views.py:109 msgid "Delete key" msgstr "" -#: views.py:109 +#: views.py:111 #, python-format msgid "" "Are you sure you wish to delete key: %s? If you try to delete a public key " @@ -161,47 +190,47 @@ msgid "" "well." msgstr "" -#: views.py:127 +#: views.py:129 msgid "Query key server" msgstr "" -#: views.py:140 +#: views.py:142 msgid "results" msgstr "" -#: views.py:145 +#: views.py:147 msgid "ID" msgstr "" -#: views.py:149 +#: views.py:151 msgid "type" msgstr "" -#: views.py:153 +#: views.py:155 msgid "creation date" msgstr "" -#: views.py:157 +#: views.py:159 msgid "disabled" msgstr "" -#: views.py:161 +#: views.py:163 msgid "expiration date" msgstr "" -#: views.py:165 +#: views.py:167 msgid "expired" msgstr "" -#: views.py:169 +#: views.py:171 msgid "length" msgstr "" -#: views.py:173 +#: views.py:175 msgid "revoked" msgstr "" -#: views.py:178 +#: views.py:180 msgid "Identifies" msgstr "" @@ -248,8 +277,15 @@ msgstr "" msgid "signature properties for: %s" msgstr "" +#: views.py:250 +msgid "Detached signature uploaded successfully." +msgstr "" + +#: views.py:259 +#, python-format +msgid "Upload detached signature for: %s" +msgstr "" + #: conf/settings.py:13 msgid "List of keyservers to be queried for unknown keys." msgstr "" - - diff --git a/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo b/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo index 2541ca14bf..93a6b82858 100644 Binary files a/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo and b/apps/django_gpg/locale/ru/LC_MESSAGES/django.mo differ diff --git a/apps/django_gpg/locale/ru/LC_MESSAGES/django.po b/apps/django_gpg/locale/ru/LC_MESSAGES/django.po index 54d387774b..fdc8b3cca2 100644 --- a/apps/django_gpg/locale/ru/LC_MESSAGES/django.po +++ b/apps/django_gpg/locale/ru/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: 2011-12-05 13:40-0400\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-12-06 02:06-0400\n" "PO-Revision-Date: 2011-12-05 17:43+0000\n" "Last-Translator: rosarior \n" -"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/ru/)\n" +"Language-Team: Russian (http://www.transifex.net/projects/p/mayan-edms/team/" +"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 "Verify document signatures" @@ -29,7 +31,7 @@ msgstr "" msgid "Delete keys" msgstr "" -#: __init__.py:17 __init__.py:32 +#: __init__.py:17 msgid "Query keyservers" msgstr "" @@ -37,75 +39,99 @@ msgstr "" msgid "Import key from keyservers" msgstr "" -#: __init__.py:21 +#: __init__.py:19 +msgid "Upload detached signatures" +msgstr "" + +#: __init__.py:20 +msgid "Download detached signatures" +msgstr "" + +#: __init__.py:23 msgid "Signatures" msgstr "" -#: __init__.py:29 views.py:65 +#: __init__.py:39 views.py:67 msgid "private keys" msgstr "" -#: __init__.py:30 views.py:68 +#: __init__.py:40 views.py:70 msgid "public keys" msgstr "" -#: __init__.py:31 +#: __init__.py:41 msgid "delete" msgstr "" -#: __init__.py:33 -msgid "Import" +#: __init__.py:42 +msgid "query keyservers" msgstr "" -#: __init__.py:36 +#: __init__.py:43 +msgid "import" +msgstr "" + +#: __init__.py:44 +msgid "upload signature" +msgstr "" + +#: __init__.py:45 +msgid "download signature" +msgstr "" + +#: __init__.py:46 +msgid "key management" +msgstr "" + +#: __init__.py:49 msgid "signatures" msgstr "" -#: api.py:20 +#: api.py:22 msgid "Public" msgstr "" -#: api.py:21 +#: api.py:23 msgid "Secret" msgstr "" -#: api.py:29 api.py:34 +#: api.py:31 api.py:36 msgid "RSA" msgstr "" -#: api.py:30 +#: api.py:32 msgid "DSA" msgstr "" -#: api.py:35 +#: api.py:37 msgid "Elgamal" msgstr "" -#: api.py:49 +#: api.py:51 msgid "Bad signature." msgstr "" -#: api.py:53 +#: api.py:55 msgid "Document not signed or invalid signature." msgstr "" -#: api.py:57 +#: api.py:59 msgid "Signature error." msgstr "" -#: api.py:61 +#: api.py:63 msgid "Document is signed but no public key is available for verification." msgstr "" -#: api.py:65 +#: api.py:67 msgid "Document is signed, and signature is good." msgstr "" -#: api.py:69 +#: api.py:71 msgid "Document is signed with a valid signature." msgstr "" -#: api.py:142 +#: api.py:144 msgid "unknown" msgstr "" @@ -117,43 +143,47 @@ msgstr "" msgid "Name, e-mail, key ID or key fingerprint to look for." msgstr "" -#: views.py:43 +#: forms.py:18 +msgid "Signature file" +msgstr "" + +#: views.py:45 #, python-format msgid "Key: %s, imported successfully." msgstr "" -#: views.py:46 +#: views.py:48 #, python-format msgid "Unable to import key id: %s" msgstr "" -#: views.py:50 +#: views.py:52 msgid "Import key" msgstr "" -#: views.py:51 +#: views.py:53 #, python-format msgid "Are you sure you wish to import key id: %s?" msgstr "" -#: views.py:76 +#: views.py:78 msgid "Key ID" msgstr "" -#: views.py:80 +#: views.py:82 msgid "Owner" msgstr "" -#: views.py:100 +#: views.py:102 #, python-format msgid "Key: %s, deleted successfully." msgstr "" -#: views.py:107 +#: views.py:109 msgid "Delete key" msgstr "" -#: views.py:109 +#: views.py:111 #, python-format msgid "" "Are you sure you wish to delete key: %s? If you try to delete a public key " @@ -161,47 +191,47 @@ msgid "" "well." msgstr "" -#: views.py:127 +#: views.py:129 msgid "Query key server" msgstr "" -#: views.py:140 +#: views.py:142 msgid "results" msgstr "" -#: views.py:145 +#: views.py:147 msgid "ID" msgstr "" -#: views.py:149 +#: views.py:151 msgid "type" msgstr "" -#: views.py:153 +#: views.py:155 msgid "creation date" msgstr "" -#: views.py:157 +#: views.py:159 msgid "disabled" msgstr "" -#: views.py:161 +#: views.py:163 msgid "expiration date" msgstr "" -#: views.py:165 +#: views.py:167 msgid "expired" msgstr "" -#: views.py:169 +#: views.py:171 msgid "length" msgstr "" -#: views.py:173 +#: views.py:175 msgid "revoked" msgstr "" -#: views.py:178 +#: views.py:180 msgid "Identifies" msgstr "" @@ -248,8 +278,15 @@ msgstr "" msgid "signature properties for: %s" msgstr "" +#: views.py:250 +msgid "Detached signature uploaded successfully." +msgstr "" + +#: views.py:259 +#, python-format +msgid "Upload detached signature for: %s" +msgstr "" + #: conf/settings.py:13 msgid "List of keyservers to be queried for unknown keys." msgstr "" - - diff --git a/apps/django_gpg/urls.py b/apps/django_gpg/urls.py index 20c4c69360..4a22882d06 100644 --- a/apps/django_gpg/urls.py +++ b/apps/django_gpg/urls.py @@ -5,7 +5,8 @@ urlpatterns = patterns('django_gpg.views', url(r'^list/private/$', 'key_list', {'secret': True}, 'key_private_list'), url(r'^list/public/$', 'key_list', {'secret': False}, 'key_public_list'), url(r'^verify/(?P\d+)/$', 'document_verify', (), 'document_verify'), + url(r'^upload/signature/(?P\d+)/$', 'document_signature_upload', (), 'document_signature_upload'), + url(r'^download/signature/(?P\d+)/$', 'document_signature_download', (), 'document_signature_download'), url(r'^query/$', 'key_query', (), 'key_query'), url(r'^receive/(?P.+)/$', 'key_receive', (), 'key_receive'), - ) diff --git a/apps/django_gpg/views.py b/apps/django_gpg/views.py index 31bad2c530..6fe629dbe8 100644 --- a/apps/django_gpg/views.py +++ b/apps/django_gpg/views.py @@ -15,14 +15,17 @@ from documents.models import Document, RecentDocument from permissions.api import check_permissions from common.utils import pretty_size, parse_range, urlquote, \ return_diff, encapsulate - +from filetransfers.api import serve_file + from django_gpg.api import Key, SIGNATURE_STATES from django_gpg.runtime import gpg -from django_gpg.exceptions import GPGVerificationError, KeyFetchingError +from django_gpg.exceptions import (GPGVerificationError, KeyFetchingError, + KeyImportError) from django_gpg import (PERMISSION_DOCUMENT_VERIFY, PERMISSION_KEY_VIEW, PERMISSION_KEY_DELETE, PERMISSION_KEYSERVER_QUERY, - PERMISSION_KEY_RECEIVE) -from django_gpg.forms import KeySearchForm + PERMISSION_KEY_RECEIVE, PERMISSION_SIGNATURE_UPLOAD, + PERMISSION_SIGNATURE_DOWNLOAD) +from django_gpg.forms import KeySearchForm, DetachedSignatureForm logger = logging.getLogger(__name__) @@ -42,7 +45,7 @@ def key_receive(request, key_id): key = gpg.import_key(keys_dict[key_id].key) messages.success(request, _(u'Key: %s, imported successfully.') % key) return HttpResponseRedirect(next) - except (KeyFetchingError, KeyError, TypeError): + except (KeyImportError, KeyError, TypeError): messages.error(request, _(u'Unable to import key id: %s') % key_id) return HttpResponseRedirect(previous) @@ -193,10 +196,8 @@ def document_verify(request, document_pk): document = get_object_or_404(Document, pk=document_pk) RecentDocument.objects.add_document_for_user(request.user, document) - try: - signature = gpg.verify_w_retry(document.open(raw=True)) - except GPGVerificationError: - signature = None + + signature = document.verify_signature() signature_state = SIGNATURE_STATES.get(getattr(signature, 'status', None)) @@ -230,3 +231,56 @@ def document_verify(request, document_pk): 'document': document, 'paragraphs': paragraphs, }, context_instance=RequestContext(request)) + + +def document_signature_upload(request, document_pk): + check_permissions(request.user, [PERMISSION_SIGNATURE_UPLOAD]) + document = get_object_or_404(Document, pk=document_pk) + + RecentDocument.objects.add_document_for_user(request.user, document) + + 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': + form = DetachedSignatureForm(request.POST, request.FILES) + if form.is_valid(): + try: + document.add_detached_signature(request.FILES['file']) + messages.success(request, _(u'Detached signature uploaded successfully.')) + return HttpResponseRedirect(next) + except Exception, msg: + messages.error(request, msg) + return HttpResponseRedirect(previous) + else: + form = DetachedSignatureForm() + + return render_to_response('generic_form.html', { + 'title': _(u'Upload detached signature for: %s') % document, + 'form_icon': 'key_delete.png', + 'next': next, + 'form': form, + 'previous': previous, + 'object': document, + }, context_instance=RequestContext(request)) + + +def document_signature_download(request, document_pk): + check_permissions(request.user, [PERMISSION_SIGNATURE_DOWNLOAD]) + document = get_object_or_404(Document, pk=document_pk) + + try: + if document.has_detached_signature(): + signature = document.detached_signature() + return serve_file( + request, + signature, + save_as=u'"%s.sig"' % document.filename, + content_type=u'application/octet-stream' + ) + except Exception, e: + messages.error(request, e) + return HttpResponseRedirect(request.META['HTTP_REFERER']) + + return HttpResponseRedirect(request.META['HTTP_REFERER']) diff --git a/apps/document_comments/locale/it/LC_MESSAGES/django.mo b/apps/document_comments/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..518cede71b Binary files /dev/null and b/apps/document_comments/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/document_comments/locale/it/LC_MESSAGES/django.po b/apps/document_comments/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5de0b4f4f6 --- /dev/null +++ b/apps/document_comments/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,102 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:33+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:15 +msgid "Create new comments" +msgstr "" + +#: __init__.py:16 +msgid "Delete comments" +msgstr "" + +#: __init__.py:17 +msgid "Edit comments" +msgstr "" + +#: __init__.py:18 +msgid "View comments" +msgstr "" + +#: __init__.py:20 +msgid "Comments" +msgstr "" + +#: __init__.py:26 __init__.py:27 +msgid "delete" +msgstr "" + +#: __init__.py:28 +msgid "add comment" +msgstr "" + +#: __init__.py:29 utils.py:14 +msgid "comments" +msgstr "" + +#: __init__.py:33 +msgid "date" +msgstr "" + +#: __init__.py:37 +msgid "user" +msgstr "" + +#: __init__.py:41 +msgid "comment" +msgstr "" + +#: views.py:27 +msgid "Must provide at least one comment." +msgstr "" + +#: views.py:37 +#, python-format +msgid "Comment \"%s\" deleted successfully." +msgstr "" + +#: views.py:39 +#, python-format +msgid "Error deleting comment \"%(comment)s\": %(error)s" +msgstr "" + +#: views.py:54 +#, python-format +msgid "Are you sure you wish to delete the comment: %s?" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Are you sure you wish to delete the comments: %s?" +msgstr "" + +#: views.py:86 +msgid "Comment added successfully." +msgstr "" + +#: views.py:93 +#, python-format +msgid "Add comment to document: %s" +msgstr "" + +#: views.py:109 +#, python-format +msgid "comments: %s" +msgstr "" + + diff --git a/apps/document_indexing/locale/it/LC_MESSAGES/django.mo b/apps/document_indexing/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..d0eb804bd1 Binary files /dev/null and b/apps/document_indexing/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/document_indexing/locale/it/LC_MESSAGES/django.po b/apps/document_indexing/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..063bc16e02 --- /dev/null +++ b/apps/document_indexing/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,205 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:42+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:12 +msgid "View document indexes" +msgstr "" + +#: __init__.py:13 +msgid "Rebuild document indexes" +msgstr "" + +#: __init__.py:15 +msgid "Indexing" +msgstr "" + +#: __init__.py:19 +msgid "index list" +msgstr "" + +#: __init__.py:20 +msgid "go up one level" +msgstr "" + +#: __init__.py:21 __init__.py:23 models.py:26 +msgid "indexes" +msgstr "" + +#: __init__.py:25 +msgid "rebuild indexes" +msgstr "" + +#: __init__.py:25 +msgid "Deletes and creates from scratch all the document indexes." +msgstr "" + +#: __init__.py:27 +msgid "Indexes" +msgstr "" + +#: api.py:83 +msgid "root" +msgstr "" + +#: api.py:139 +#, python-format +msgid "Maximum suffix (%s) count reached." +msgstr "" + +#: api.py:175 +#, python-format +msgid "" +"Error in document indexing update expression: %(expression)s; %(exception)s" +msgstr "" + +#: api.py:178 +#, python-format +msgid "" +"Error updating document index, expression: %(expression)s; %(exception)s" +msgstr "" + +#: api.py:209 +#, python-format +msgid "Unable to delete document indexing node; %s" +msgstr "" + +#: filesystem.py:34 +#, python-format +msgid "Unable to create indexing directory; %s" +msgstr "" + +#: filesystem.py:52 +#, python-format +msgid "" +"Unable to create symbolic link, file exists and could not be deleted: " +"%(filepath)s; %(exc)s" +msgstr "" + +#: filesystem.py:54 +#, python-format +msgid "Unable to create symbolic link: %(filepath)s; %(exc)s" +msgstr "" + +#: filesystem.py:71 +#, python-format +msgid "Unable to delete document symbolic link; %s" +msgstr "" + +#: filesystem.py:83 +#, python-format +msgid "Unable to delete indexing directory; %s" +msgstr "" + +#: models.py:11 +#, python-format +msgid "Available functions: %s" +msgstr "" + +#: models.py:16 +msgid "indexing expression" +msgstr "" + +#: models.py:16 +msgid "Enter a python string expression to be evaluated." +msgstr "" + +#: models.py:18 +msgid "enabled" +msgstr "" + +#: models.py:19 +msgid "link documents" +msgstr "" + +#: models.py:25 models.py:31 views.py:56 +msgid "index" +msgstr "" + +#: models.py:32 +msgid "value" +msgstr "" + +#: models.py:33 +msgid "documents" +msgstr "" + +#: models.py:46 models.py:51 +msgid "index instance" +msgstr "" + +#: models.py:47 +msgid "indexes instances" +msgstr "" + +#: models.py:52 +msgid "document" +msgstr "" + +#: models.py:59 +msgid "document rename count" +msgstr "" + +#: models.py:60 +msgid "documents rename count" +msgstr "" + +#: utils.py:19 +msgid "document indexes" +msgstr "" + +#: views.py:38 +#, python-format +msgid "contents for index: %s" +msgstr "" + +#: views.py:60 +msgid "items" +msgstr "" + +#: views.py:82 +msgid "Are you sure you wish to rebuild all indexes?" +msgstr "" + +#: views.py:83 +msgid "On large databases this operation may take some time to execute." +msgstr "" + +#: views.py:89 +msgid "Index rebuild completed successfully." +msgstr "" + +#: views.py:94 +#, python-format +msgid "Index rebuild error: %s" +msgstr "" + +#: views.py:109 +#, python-format +msgid "indexes containing: %s" +msgstr "" + +#: templates/indexing_help.html:3 +msgid "What are indexes?" +msgstr "" + +#: templates/indexing_help.html:4 +msgid "Indexes group documents into a tree like hierarchical structure." +msgstr "" + + diff --git a/apps/documents/forms.py b/apps/documents/forms.py index 991b6488e8..63e4470a55 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -235,6 +235,7 @@ class DocumentForm_edit(DocumentForm): self.fields.pop('release_level') self.fields.pop('version_update') self.fields.pop('comment') + self.fields.pop('use_file_name') class DocumentPropertiesForm(DetailForm): diff --git a/apps/documents/locale/it/LC_MESSAGES/django.mo b/apps/documents/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..e3790f1128 Binary files /dev/null and b/apps/documents/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/documents/locale/it/LC_MESSAGES/django.po b/apps/documents/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..ac50b2183a --- /dev/null +++ b/apps/documents/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,977 @@ +# 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. +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-12-07 11:57+0000\n" +"Last-Translator: pippo64 \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:49 __init__.py:159 +msgid "Documents" +msgstr "Documenti" + +#: __init__.py:60 +msgid "Documents setup" +msgstr "Setup Documenti" + +#: __init__.py:70 +msgid "all documents" +msgstr "tutti i documenti" + +#: __init__.py:71 models.py:415 views.py:709 +msgid "recent documents" +msgstr "documenti recenti" + +#: __init__.py:72 +msgid "upload new documents" +msgstr "upload nuovi documenti" + +#: __init__.py:73 +msgid "clone metadata" +msgstr "clona i metadati" + +#: __init__.py:74 +msgid "details" +msgstr "dettagli" + +#: __init__.py:75 +msgid "properties" +msgstr "proprietà" + +#: __init__.py:76 __init__.py:77 __init__.py:92 __init__.py:114 +#: __init__.py:120 +msgid "delete" +msgstr "cancella" + +#: __init__.py:78 __init__.py:91 __init__.py:113 __init__.py:119 +msgid "edit" +msgstr "edita" + +#: __init__.py:79 +msgid "preview" +msgstr "anteprima" + +#: __init__.py:80 +msgid "download" +msgstr "scarica" + +#: __init__.py:81 +msgid "find duplicates" +msgstr "trova duplicati" + +#: __init__.py:82 +msgid "find all duplicates" +msgstr "trova tutti i duplicati" + +#: __init__.py:82 +msgid "" +"Search all the documents' checksums and return a list of the exact matches." +msgstr "" +"Cerca tutti i documenti con il checksum e restituisci una lista delle " +"corrispondenze esatte." + +#: __init__.py:83 +msgid "update office documents' page count" +msgstr "update documenti di office numero di pagine" + +#: __init__.py:83 +msgid "" +"Update the page count of the office type documents. This is useful when " +"enabling office document support after there were already office type " +"documents in the database." +msgstr "" +"Update the page count of the office type documents. This is useful when " +"enabling office document support after there were already office type " +"documents in the database." + +#: __init__.py:84 __init__.py:85 +msgid "clear transformations" +msgstr "ripulisci le trasformazioni" + +#: __init__.py:86 +msgid "print" +msgstr "stampa" + +#: __init__.py:87 +msgid "history" +msgstr "versioni" + +#: __init__.py:89 +msgid "page transformations" +msgstr "trasformazioni della pagina" + +#: __init__.py:90 +msgid "create new transformation" +msgstr "crea una nuova trasformazione" + +#: __init__.py:94 +msgid "page image" +msgstr "immagine della pagina" + +#: __init__.py:95 +msgid "page text" +msgstr "testo della pagina" + +#: __init__.py:96 +msgid "edit page text" +msgstr "modifica il testo nella pagina" + +#: __init__.py:97 +msgid "next page" +msgstr "pagina successiva" + +#: __init__.py:98 +msgid "previous page" +msgstr "pagina precedente" + +#: __init__.py:99 +msgid "first page" +msgstr "prima pagina" + +#: __init__.py:100 +msgid "last page" +msgstr "ultima pagina" + +#: __init__.py:101 +msgid "zoom in" +msgstr "zoom in" + +#: __init__.py:102 +msgid "zoom out" +msgstr "zoom out" + +#: __init__.py:103 +msgid "rotate right" +msgstr "ruotate a destra" + +#: __init__.py:104 +msgid "rotate left" +msgstr "ruotate a sinistra" + +#: __init__.py:105 +msgid "reset view" +msgstr "ripristino della vista" + +#: __init__.py:107 +msgid "Find missing document files" +msgstr "Trovare i file di documenti mancanti" + +#: __init__.py:110 +msgid "document type list" +msgstr "lista in base al tipo di documento" + +#: __init__.py:111 views.py:877 +msgid "document types" +msgstr "tipi di documenti" + +#: __init__.py:112 +msgid "documents of this type" +msgstr "documenti di questo tipo" + +#: __init__.py:115 views.py:990 +msgid "create document type" +msgstr "crea il tipo di documenti" + +#: __init__.py:117 +msgid "filenames" +msgstr "nome file" + +#: __init__.py:118 +msgid "add filename to document type" +msgstr "aggiungi il nome file al tipo di documento" + +#: __init__.py:161 __init__.py:186 models.py:101 views.py:69 +msgid "documents" +msgstr "documenti" + +#: __init__.py:173 +msgid "thumbnail" +msgstr "thumbnail" + +#: __init__.py:176 +msgid "tags" +msgstr "etichette" + +#: __init__.py:179 +msgid "metadata" +msgstr "metadata" + +#: forms.py:60 +msgid "Page image" +msgstr "Immagine della pagina" + +#: forms.py:70 forms.py:209 +msgid "Contents" +msgstr "Contenuti" + +#: forms.py:116 +msgid "Details" +msgstr "Dettagli" + +#: forms.py:121 +msgid "Click on the image for full size preview" +msgstr "Click sull'immagine per l'anteprima" + +#: forms.py:131 +#, python-format +msgid "Document pages (%s)" +msgstr "Pagine nel documento (%s)" + +#: forms.py:166 +msgid "Quick document rename" +msgstr "Rinomina del documento veloce" + +#: forms.py:169 +msgid "New document filename" +msgstr "Nuovo nome documento" + +#: forms.py:223 +msgid "Page size" +msgstr "Dimensioni di pagina" + +#: forms.py:224 +msgid "Custom page width" +msgstr "Personalizza larghezza pagina" + +#: forms.py:225 +msgid "Custom page height" +msgstr "Personalizza altezza pagina" + +#: forms.py:226 +msgid "Page orientation" +msgstr "Orientamento pagina" + +#: forms.py:227 +msgid "Page range" +msgstr "Intervallo pagina" + +#: literals.py:8 +msgid "Create documents" +msgstr "Crea documenti" + +#: literals.py:9 +msgid "Edit document properties" +msgstr "Modifica proprietà documento" + +#: literals.py:10 +msgid "Edit documents" +msgstr "Modifica documenti" + +#: literals.py:11 +msgid "View documents" +msgstr "Visualizza documenti" + +#: literals.py:12 +msgid "Delete documents" +msgstr "Cancella documenti" + +#: literals.py:13 +msgid "Download documents" +msgstr "Scarica documenti" + +#: literals.py:14 +msgid "Transform documents" +msgstr "Trasforma documenti" + +#: literals.py:15 +msgid "Execute document modifying tools" +msgstr "Esegui i tools per la modifica dei documenti" + +#: literals.py:17 +msgid "Edit document types" +msgstr "Modifica il tipo di documento" + +#: literals.py:18 +msgid "Delete document types" +msgstr "Cancella il tipo di documento" + +#: literals.py:19 +msgid "Create document types" +msgstr "Crea tipo di documento" + +#: literals.py:23 +msgid "Document creation" +msgstr "Creazione documento" + +#: literals.py:24 +#, python-format +msgid "Document \"%(content_object)s\" created by %(fullname)s." +msgstr "Documento \"%(content_object)s\" creato da by %(fullname)s." + +#: literals.py:25 +#, python-format +msgid "Document \"%(content_object)s\" created on %(datetime)s by %(fullname)s." +msgstr "Documento \"%(content_object)s\" creato il %(datetime)s da %(fullname)s." + +#: literals.py:31 +msgid "Document edited" +msgstr "Documento modificato" + +#: literals.py:32 +#, python-format +msgid "Document \"%(content_object)s\" edited by %(fullname)s." +msgstr "Documento \"%(content_object)s\" modificato da %(fullname)s." + +#: literals.py:33 +#, python-format +msgid "" +"Document \"%(content_object)s\" was edited on %(datetime)s by %(fullname)s." +" The following changes took place: %(changes)s." +msgstr "" +"Documento \"%(content_object)s\" è stato modificato il %(datetime)s da " +"%(fullname)s. Queste le seguenti modifiche: %(changes)s." + +#: literals.py:42 +msgid "Document deleted" +msgstr "Documento cancellato" + +#: literals.py:43 +#, python-format +msgid "Document \"%(document)s\" deleted by %(fullname)s." +msgstr "Documento \"%(document)s\" cancellato da %(fullname)s." + +#: literals.py:44 +#, python-format +msgid "Document \"%(document)s\" deleted on %(datetime)s by %(fullname)s." +msgstr "Documento \"%(document)s\" cancellato il %(datetime)s da %(fullname)s." + +#: models.py:63 +msgid "name" +msgstr "nome" + +#: models.py:69 models.py:78 models.py:315 views.py:896 views.py:926 +#: views.py:955 views.py:960 views.py:1003 views.py:1049 views.py:1083 +msgid "document type" +msgstr "tipo documento" + +#: models.py:70 +msgid "documents types" +msgstr "documenti tipo" + +#: models.py:79 +msgid "file" +msgstr "file" + +#: models.py:86 +msgid "added" +msgstr "ha aggiunto" + +#: models.py:87 +msgid "updated" +msgstr "updated" + +#: models.py:88 +msgid "checksum" +msgstr "checksum" + +#: models.py:89 +msgid "description" +msgstr "descrizione" + +#: models.py:100 models.py:332 models.py:404 models.py:419 views.py:209 +msgid "document" +msgstr "documento" + +#: models.py:181 +msgid "" +"This document's file format is not known, the page count has therefore " +"defaulted to 1." +msgstr "" +"Questo tipo di formato file è sconosciuto, per cui il numero di pagine sarà " +"1" + +#: models.py:316 +msgid "filename" +msgstr "nome file" + +#: models.py:317 views.py:1010 +msgid "enabled" +msgstr "abilitato" + +#: models.py:324 +msgid "document type quick rename filename" +msgstr "rinomina veloce del nome file del documento" + +#: models.py:325 +msgid "document types quick rename filenames" +msgstr "rinomina veloce del nome files del documento" + +#: models.py:333 +msgid "content" +msgstr "contenuto" + +#: models.py:334 +msgid "page label" +msgstr "etichetta di pagina" + +#: models.py:335 +msgid "page number" +msgstr "numero pagina" + +#: models.py:338 +#, python-format +msgid "Page %(page_num)d out of %(total_pages)d of %(document)s" +msgstr "Pagina %(page_num)d di %(total_pages)d del %(document)s" + +#: models.py:346 models.py:383 +msgid "document page" +msgstr "pagina del documento" + +#: models.py:347 +msgid "document pages" +msgstr "pagine di documento" + +#: models.py:358 +msgid "Enter a valid value." +msgstr "Inserisci un valore valido" + +#: models.py:384 views.py:333 +msgid "order" +msgstr "ordina" + +#: models.py:385 views.py:334 views.py:389 views.py:418 +msgid "transformation" +msgstr "trasformazione" + +#: models.py:386 views.py:335 +msgid "arguments" +msgstr "argomenti" + +#: models.py:386 +#, python-format +msgid "Use dictionaries to indentify arguments, example: %s" +msgstr "Usa dizionari per identificare gli argomenti, esempio:%s" + +#: models.py:394 +msgid "document page transformation" +msgstr "trasformazione della pagina del documento" + +#: models.py:395 +msgid "document page transformations" +msgstr "trasformazioni della pagina del documento" + +#: models.py:403 +msgid "user" +msgstr "utente" + +#: models.py:405 +msgid "accessed" +msgstr "accessi" + +#: models.py:414 +msgid "recent document" +msgstr "documenti recenti" + +#: models.py:420 +msgid "Document type" +msgstr "Tipo documento" + +#: models.py:421 +msgid "MIME type" +msgstr "Tipo MIME" + +#: models.py:422 views.py:117 +msgid "Filename" +msgstr "Nome file" + +#: models.py:423 +msgid "Filename extension" +msgstr "Estensione del file" + +#: models.py:424 +msgid "Metadata value" +msgstr "Valore del Metadato" + +#: models.py:425 +msgid "Content" +msgstr "Contenuto" + +#: models.py:426 +msgid "Description" +msgstr "Descrizione" + +#: models.py:427 +msgid "Tags" +msgstr "Etichette" + +#: models.py:428 +msgid "Comments" +msgstr "Commenti" + +#: statistics.py:38 +#, python-format +msgid "Document types: %d" +msgstr "Tipi di documento: %d " + +#: statistics.py:39 +#, python-format +msgid "Documents in database: %d" +msgstr "Documenti nel database:%d" + +#: statistics.py:44 +#, python-format +msgid "Documents in storage: %d" +msgstr "Documenti nello storage:%d" + +#: statistics.py:46 +#, python-format +msgid "" +"Space used in storage: %(base_2)s (base 2), %(base_10)s (base 10), %(bytes)d" +" bytes" +msgstr "" +"Spazio usato nello storage: %(base_2)s (base 2), %(base_10)s (base 10), " +"%(bytes)d bytes" + +#: statistics.py:56 +#, python-format +msgid "Document pages in database: %d" +msgstr "Pagine di documenti nel database:%d" + +#: statistics.py:57 +#, python-format +msgid "Minimum amount of pages per document: %(page_count__min)d" +msgstr "Numero minimo di pagine per documento:%(page_count__min)d" + +#: statistics.py:58 +#, python-format +msgid "Maximum amount of pages per document: %(page_count__max)d" +msgstr "Numero massimo di pagine per documento:%(page_count__max)d" + +#: statistics.py:59 +#, python-format +msgid "Average amount of pages per document: %(page_count__avg)f" +msgstr "Media di pagine per documento:%(page_count__avg)f" + +#: statistics.py:65 +msgid "Document statistics" +msgstr "Statistiche del documento" + +#: views.py:118 +msgid "File extension" +msgstr "Estensione del file" + +#: views.py:119 +msgid "File mimetype" +msgstr "File mimetype" + +#: views.py:120 +msgid "File mime encoding" +msgstr "File mime encoding" + +#: views.py:121 +msgid "File size" +msgstr "Dimensioni del file" + +#: views.py:122 +msgid "Exists in storage" +msgstr "Esiste nello storage" + +#: views.py:123 +msgid "File path in storage" +msgstr "File path in storage" + +#: views.py:124 +msgid "Date added" +msgstr "Inserimento data" + +#: views.py:125 +msgid "Time added" +msgstr "Inserimento orario" + +#: views.py:126 +msgid "Checksum" +msgstr "Checksum" + +#: views.py:127 +msgid "UUID" +msgstr "UUID" + +#: views.py:128 +msgid "Pages" +msgstr "Pagine" + +#: views.py:137 +#, python-format +msgid "document properties for: %s" +msgstr "Proprietà per il documento:%s" + +#: views.py:159 +msgid "document data" +msgstr "dati del documento" + +#: views.py:184 views.py:521 +msgid "Must provide at least one document." +msgstr "Devi indicare almeno un documento" + +#: views.py:200 +#, python-format +msgid "Document: %s deleted successfully." +msgstr "Il documento %s è stato cancellato con successo" + +#: views.py:202 +#, python-format +msgid "Document: %(document)s delete error: %(error)s" +msgstr "Documento:%(document)s errore cancellazione: %(error)s" + +#: views.py:217 +#, python-format +msgid "Are you sure you wish to delete the document: %s?" +msgstr "Sei sicuro di voler cancellare il documento: %s?" + +#: views.py:219 +#, python-format +msgid "Are you sure you wish to delete the documents: %s?" +msgstr "Sei sicuro di voler cancellare i documenti: %s?" + +#: views.py:256 +#, python-format +msgid "Document \"%s\" edited successfully." +msgstr "Il documento \"%s\" è ancora in modifica" + +#: views.py:329 +#, python-format +msgid "transformations for: %s" +msgstr "trasformazioni per:%s" + +#: views.py:353 +msgid "Document page transformation created successfully." +msgstr "Trasformazioni per la pagina del documento creata con successo" + +#: views.py:362 +#, python-format +msgid "Create new transformation for page: %(page)s of document: %(document)s" +msgstr "" +"Crea una nuova trasformazione per la pagina: %(page)s del documento: " +"%(document)s" + +#: views.py:378 +msgid "Document page transformation edited successfully." +msgstr "Document page trasformation edited successfully." + +#: views.py:391 +#, python-format +msgid "Edit transformation \"%(transformation)s\" for: %(document_page)s" +msgstr "Modifica la trasformazione \"%(transformation)s\" per: %(document_page)s" + +#: views.py:409 +msgid "Document page transformation deleted successfully." +msgstr "Trasformazione della pagina di documento cancellata con successo." + +#: views.py:420 +#, python-format +msgid "" +"Are you sure you wish to delete transformation \"%(transformation)s\" for: " +"%(document_page)s" +msgstr "" +"Sei sicuro di voler cancellare la trasformazione \"%(transformation)s\" per:" +" %(document_page)s" + +#: views.py:434 +#, python-format +msgid "duplicates of: %s" +msgstr "duplicati di:%s" + +#: views.py:446 +msgid "Are you sure you wish to find all duplicates?" +msgstr "Sei sicuro di voler trovare tutti i duplicati?" + +#: views.py:447 views.py:506 views.py:571 +msgid "On large databases this operation may take some time to execute." +msgstr "" +"In un grande database questa operazione potrebbe richiedere del tempo " + +#: views.py:462 +msgid "duplicated documents" +msgstr "documenti duplicati" + +#: views.py:497 +#, python-format +msgid "" +"Page count update complete. Documents processed: %(total)d, documents with " +"changed page count: %(change)d" +msgstr "" +"Update del numero di pagine completato. Il documenti processati " +"%(total)d, con il numero di pagine cambiate: %(change)d" + +#: views.py:505 +#, python-format +msgid "" +"Are you sure you wish to update the page count for the office documents " +"(%d)?" +msgstr "" +"Sei sicuro di voler cambiare il numero di pagine deil documenti office (%d)?" + +#: views.py:534 +#, python-format +msgid "" +"All the page transformations for document: %s, have been deleted " +"successfully." +msgstr "" +"Tutte le trasformazioni alle pagine del documento:%s, sono state cancellate " +"con successo." + +#: views.py:536 +#, python-format +msgid "" +"Error deleting the page transformations for document: %(document)s; " +"%(error)s." +msgstr "" +"Errore nella cancellazione della trasformazione della pagina per il " +"documento:%(document)s; %(error)s." + +#: views.py:542 +msgid "document transformation" +msgstr "trasformazione del documento" + +#: views.py:551 +#, python-format +msgid "" +"Are you sure you wish to clear all the page transformations for document: " +"%s?" +msgstr "Sei sicuro di voler cancellare le trasformazioni per il documento:%s?" + +#: views.py:553 +#, python-format +msgid "" +"Are you sure you wish to clear all the page transformations for documents: " +"%s?" +msgstr "Sei sicuro di voler cancellare le trasformazioni per il documenti:%s?" + +#: views.py:581 +msgid "missing documents" +msgstr "documenti mancanti" + +#: views.py:594 views.py:632 +#, python-format +msgid "details for: %s" +msgstr "dettagli per:%s" + +#: views.py:647 +msgid "Document page edited successfully." +msgstr "Pagina di documento modificata con successo." + +#: views.py:656 +#, python-format +msgid "edit: %s" +msgstr "modifica:%s" + +#: views.py:667 +msgid "There are no more pages in this document" +msgstr "Non ci sono più pagine in questo documento" + +#: views.py:680 +msgid "You are already at the first page of this document" +msgstr "Sei già alla prima pagina del documento" + +#: views.py:823 +#, python-format +msgid "print: %s" +msgstr "stampa:%s" + +#: views.py:894 +#, python-format +msgid "documents of type \"%s\"" +msgstr "documenti di tipo \"%s\"" + +#: views.py:914 +msgid "Document type edited successfully" +msgstr "Tipo di documento modificata con successo" + +#: views.py:917 +#, python-format +msgid "Error editing document type; %s" +msgstr "Errore nella modifica del tipo di documento;%s" + +#: views.py:922 +#, python-format +msgid "edit document type: %s" +msgstr "modifica tipo documento:%s" + +#: views.py:947 +#, python-format +msgid "Document type: %s deleted successfully." +msgstr "Tipo di documento: %s cancellata ." + +#: views.py:949 +#, python-format +msgid "Document type: %(document_type)s delete error: %(error)s" +msgstr "" +"Tipo di documento: %(document_type)s errore di cancellazione: %(error)s" + +#: views.py:964 +#, python-format +msgid "Are you sure you wish to delete the document type: %s?" +msgstr "Sei sicuro di cancellare questo tipo di documento:%s?" + +#: views.py:965 +msgid "" +"The document type of all documents using this document type will be set to " +"none." +msgstr "Il tipo di documento per tutti i documenti sarà messo a nullo" + +#: views.py:981 +msgid "Document type created successfully" +msgstr "Tipo di documento creato con successo" + +#: views.py:984 +#, python-format +msgid "Error creating document type; %(error)s" +msgstr "Errore nella creazione del tipo di documento;%(error)s" + +#: views.py:1002 +#, python-format +msgid "filenames for document type: %s" +msgstr "tipo di documento per il nome file: %s" + +#: views.py:1033 +msgid "Document type filename edited successfully" +msgstr "Tipo di documento per il nome file modificato con successo" + +#: views.py:1036 +#, python-format +msgid "Error editing document type filename; %s" +msgstr "Errore nella modifica del tipo di nome file;%s" + +#: views.py:1041 +#, python-format +msgid "edit filename \"%(filename)s\" from document type \"%(document_type)s\"" +msgstr "" +"modifica il nome file \"%(filename)s\" per il tipo di documento " +"\"%(document_type)s\"" + +#: views.py:1050 views.py:1076 views.py:1084 +msgid "document type filename" +msgstr "tipo di nome file per il documento" + +#: views.py:1068 +#, python-format +msgid "Document type filename: %s deleted successfully." +msgstr "Tipo di nome file per il documento: %s cancellato con successo." + +#: views.py:1070 +#, python-format +msgid "" +"Document type filename: %(document_type_filename)s delete error: %(error)s" +msgstr "" +"Tipo di nome file per il documento:%(document_type_filename)s errore di " +"cancellazione: %(error)s" + +#: views.py:1086 +#, python-format +msgid "" +"Are you sure you wish to delete the filename: %(filename)s, from document " +"type \"%(document_type)s\"?" +msgstr "" +"Sei sicuro che vuoi cancellare il nome file:%(filename)s, per il tipo di " +"documento\"%(document_type)s\"?" + +#: views.py:1111 +msgid "Document type filename created successfully" +msgstr "Tipo di nome file per nome file creato con successo" + +#: views.py:1114 +#, python-format +msgid "Error creating document type filename; %(error)s" +msgstr "Errore creando il tipo di nome file; %(error)s" + +#: views.py:1120 +#, python-format +msgid "create filename for document type: %s" +msgstr "crea il nome file per i documenti di tipo:%s" + +#: widgets.py:26 +msgid "document page image" +msgstr "immagine della pagina del documento" + +#: wizards.py:34 +msgid "step 1 of 3: Document type" +msgstr "step 1 of 3: Tipo documento" + +#: wizards.py:35 +msgid "step 2 of 3: Metadata selection" +msgstr "step 2 of 3: Selezione dei Metadata " + +#: wizards.py:36 +msgid "step 3 of 3: Document metadata" +msgstr "step 3 of 3: Metadata del documento" + +#: wizards.py:44 +msgid "Next step" +msgstr "Next step" + +#: conf/settings.py:38 +msgid "" +"Maximum number of recent (created, edited, viewed) documents to remember per" +" user." +msgstr "" +"Massimo numero recente (creazione, modifica, visualizzazione) di documenti " +"da ricordare per utente" + +#: conf/settings.py:39 +msgid "Amount in percent zoom in or out a document page per user interaction." +msgstr "" +"Importo in percentuale dello zoom o rimpicciolire una pagina del documento " +"per l'interazione dell'utente." + +#: conf/settings.py:40 +msgid "" +"Maximum amount in percent (%) to allow user to zoom in a document page " +"interactively." +msgstr "" +"Importo massimo in percentuale (%) per consentire all'utente di ingrandire " +"una pagina del documento in modo interattivo." + +#: conf/settings.py:41 +msgid "" +"Minimum amount in percent (%) to allow user to zoom out a document page " +"interactively." +msgstr "" +"Quantità minima in percentuale (%) per consentire all'utente di ingrandire " +"una pagina di documento in modo interattivo." + +#: conf/settings.py:42 +msgid "Amount in degrees to rotate a document page per user interaction." +msgstr "Quantità di gradi per la rotazione della pagina del documento" + +#: templates/document_types_help.html:3 +msgid "What are document types?" +msgstr "Che tipo di documenti sono ?" + +#: templates/document_types_help.html:4 +msgid "" +"Document types define a class that represents a broard group of documents, " +"such as: invoices, regulations or manuals. The advantage of using document " +"types are: assigning a list of typical filenames for quick renaming during " +"creation, as well as assigning default metadata types and sets to it." +msgstr "" +"Il tipo di documento definisce una raggruppamento di documenti, come : " +"fatture, regolamenti, manuali. Il vantaggio dell'uso di tale classificazione" +" permette di rinominare,aggiungere metadati e rinominare i file più " +"velocemente." + +#: templates/recent_document_list_help.html:3 +msgid "What are recent documents?" +msgstr "Quali sono i documenti recenti ?" + +#: templates/recent_document_list_help.html:4 +#, python-format +msgid "" +"Here you will find the latest %(recent_count)s documents you have either " +"created or edited in any way." +msgstr "" +"qui troverete gli ultimi %(recent_count)s documenti da voi creati o " +"modificati" + + diff --git a/apps/documents/migrations/0012_auto__add_field_documentversion_signature_file.py b/apps/documents/migrations/0012_auto__add_field_documentversion_signature_file.py new file mode 100644 index 0000000000..2938016090 --- /dev/null +++ b/apps/documents/migrations/0012_auto__add_field_documentversion_signature_file.py @@ -0,0 +1,157 @@ +# encoding: 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 'DocumentVersion.signature_file' + db.add_column('documents_documentversion', 'signature_file', self.gf('django.db.models.fields.files.FileField')(max_length=100, null=True, blank=True), keep_default=False) + + + def backwards(self, orm): + + # Deleting field 'DocumentVersion.signature_file' + db.delete_column('documents_documentversion', 'signature_file') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'comments.comment': { + 'Meta': {'ordering': "('submit_date',)", 'object_name': 'Comment', 'db_table': "'django_comments'"}, + 'comment': ('django.db.models.fields.TextField', [], {'max_length': '3000'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'content_type_set_for_comment'", 'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip_address': ('django.db.models.fields.IPAddressField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), + 'is_public': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_removed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'object_pk': ('django.db.models.fields.TextField', [], {}), + 'site': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['sites.Site']"}), + 'submit_date': ('django.db.models.fields.DateTimeField', [], {'default': 'None'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'comment_comments'", 'null': 'True', 'to': "orm['auth.User']"}), + 'user_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'user_name': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}), + 'user_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'blank': 'True'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'documents.document': { + 'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'}, + 'date_added': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentType']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'uuid': ('django.db.models.fields.CharField', [], {'max_length': '48', 'blank': 'True'}) + }, + 'documents.documentpage': { + 'Meta': {'ordering': "['page_number']", 'object_name': 'DocumentPage'}, + 'content': ('django.db.models.fields.TextField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'document_version': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentVersion']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'page_label': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}), + 'page_number': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1', 'db_index': 'True'}) + }, + 'documents.documentpagetransformation': { + 'Meta': {'ordering': "('order',)", 'object_name': 'DocumentPageTransformation'}, + 'arguments': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'document_page': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentPage']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'order': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0', 'null': 'True', 'db_index': 'True', 'blank': 'True'}), + 'transformation': ('django.db.models.fields.CharField', [], {'max_length': '128'}) + }, + 'documents.documenttype': { + 'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '32'}) + }, + 'documents.documenttypefilename': { + 'Meta': {'ordering': "['filename']", 'object_name': 'DocumentTypeFilename'}, + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.DocumentType']"}), + 'enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'filename': ('django.db.models.fields.CharField', [], {'max_length': '128', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'documents.documentversion': { + 'Meta': {'unique_together': "(('document', 'major', 'minor', 'micro', 'release_level', 'serial'),)", 'object_name': 'DocumentVersion'}, + 'checksum': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']"}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64'}), + 'file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}), + 'filename': ('django.db.models.fields.CharField', [], {'default': "u''", 'max_length': '255', 'db_index': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'major': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}), + 'micro': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'mimetype': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '64'}), + 'minor': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'release_level': ('django.db.models.fields.PositiveIntegerField', [], {'default': '1'}), + 'serial': ('django.db.models.fields.PositiveIntegerField', [], {'default': '0'}), + 'signature_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'signature_state': ('django.db.models.fields.CharField', [], {'max_length': '16', 'null': 'True', 'blank': 'True'}), + 'timestamp': ('django.db.models.fields.DateTimeField', [], {}) + }, + 'documents.recentdocument': { + 'Meta': {'ordering': "('-datetime_accessed',)", 'object_name': 'RecentDocument'}, + 'datetime_accessed': ('django.db.models.fields.DateTimeField', [], {'db_index': 'True'}), + 'document': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['documents.Document']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}) + }, + 'sites.site': { + 'Meta': {'ordering': "('domain',)", 'object_name': 'Site', 'db_table': "'django_site'"}, + 'domain': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'taggit.tag': { + 'Meta': {'object_name': 'Tag'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '100', 'db_index': 'True'}) + }, + 'taggit.taggeditem': { + 'Meta': {'object_name': 'TaggedItem'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_tagged_items'", 'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True'}), + 'tag': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'taggit_taggeditem_items'", 'to': "orm['taggit.Tag']"}) + } + } + + complete_apps = ['documents'] diff --git a/apps/documents/models.py b/apps/documents/models.py index d90665d333..25cb703d22 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -3,9 +3,13 @@ import tempfile import hashlib from ast import literal_eval import base64 -from StringIO import StringIO import datetime import logging + +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -172,12 +176,10 @@ class Document(models.Model): def add_as_recent_document_for_user(self, user): RecentDocument.objects.add_document_for_user(user, self) - # TODO: investigate if Document's save method calls all of it - # DocumentVersion's delete methods - #def delete(self, *args, **kwargs): - # super(Document, self).delete(*args, **kwargs) - # for version in self.documentversion_set.all(): - # version.file.storage.delete(version.file.path) + def delete(self, *args, **kwargs): + for version in self.versions.all(): + version.delete() + return super(Document, self).delete(*args, **kwargs) @property def size(self): @@ -286,8 +288,20 @@ class Document(models.Model): return version.save() filename = property(_get_filename, _set_filename) - + + def add_detached_signature(self, *args, **kwargs): + return self.latest_version.add_detached_signature(*args, **kwargs) + def has_detached_signature(self): + return self.latest_version.has_detached_signature() + + def detached_signature(self): + return self.latest_version.detached_signature() + + def verify_signature(self): + return self.latest_version.verify_signature() + + class DocumentVersion(models.Model): ''' Model that describes a document version and its properties @@ -316,6 +330,7 @@ class DocumentVersion(models.Model): filename = models.CharField(max_length=255, default=u'', editable=False, db_index=True) checksum = models.TextField(blank=True, null=True, verbose_name=_(u'checksum'), editable=False) signature_state = models.CharField(blank=True, null=True, max_length=16, verbose_name=_(u'signature state'), editable=False) + signature_file = models.FileField(blank=True, null=True, upload_to=get_filename_from_uuid, storage=STORAGE_BACKEND(), verbose_name=_(u'signature file'), editable=False) class Meta: unique_together = ('document', 'major', 'minor', 'micro', 'release_level', 'serial') @@ -455,7 +470,7 @@ class DocumentVersion(models.Model): def update_signed_state(self, save=True): if self.exists(): try: - self.signature_state = gpg.verify(self.open()).status + self.signature_state = gpg.verify_file(self.open()).status # TODO: give use choice for auto public key fetch? # OR maybe new config option except GPGVerificationError: @@ -480,8 +495,8 @@ class DocumentVersion(models.Model): self.save() def delete(self, *args, **kwargs): - super(DocumentVersion, self).delete(*args, **kwargs) - return self.file.storage.delete(self.file.path) + self.file.storage.delete(self.file.path) + return super(DocumentVersion, self).delete(*args, **kwargs) def exists(self): ''' @@ -530,7 +545,35 @@ class DocumentVersion(models.Model): return self.file.storage.size(self.file.path) else: return None + + def add_detached_signature(self, detached_signature): + if not self.signature_state: + self.signature_file = detached_signature + self.save() + else: + raise Exception('document already has an embedded signature') + + def has_detached_signature(self): + if self.signature_file: + return self.signature_file.storage.exists(self.signature_file.path) + else: + return False + + def detached_signature(self): + return self.signature_file.storage.open(self.signature_file.path) + + def verify_signature(self): + try: + if self.has_detached_signature(): + logger.debug('has detached signature') + signature = gpg.verify_w_retry(self.open(), self.detached_signature()) + else: + signature = gpg.verify_w_retry(self.open(raw=True)) + except GPGVerificationError: + signature = None + return signature + class DocumentTypeFilename(models.Model): ''' diff --git a/apps/documents/statistics.py b/apps/documents/statistics.py index 786f902651..8787c7eb22 100644 --- a/apps/documents/statistics.py +++ b/apps/documents/statistics.py @@ -3,7 +3,7 @@ from django.utils.translation import ugettext_lazy as _ from common.utils import pretty_size, pretty_size_10 from documents.conf.settings import STORAGE_BACKEND -from documents.models import Document, DocumentType, DocumentPage +from documents.models import Document, DocumentType, DocumentPage, DocumentVersion from django.db.models import Avg, Count, Min, Max @@ -54,9 +54,9 @@ def get_statistics(): paragraphs.extend( [ _(u'Document pages in database: %d') % DocumentPage.objects.only('pk',).count(), - _(u'Minimum amount of pages per document: %(page_count__min)d') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Min('page_count')), - _(u'Maximum amount of pages per document: %(page_count__max)d') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Max('page_count')), - _(u'Average amount of pages per document: %(page_count__avg)f') % Document.objects.annotate(page_count=Count('documentpage')).aggregate(Avg('page_count')), + _(u'Minimum amount of pages per document: %(page_count__min)d') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Min('page_count')), + _(u'Maximum amount of pages per document: %(page_count__max)d') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Max('page_count')), + _(u'Average amount of pages per document: %(page_count__avg)f') % DocumentVersion.objects.annotate(page_count=Count('documentpage')).aggregate(Avg('page_count')), ] ) #[(day_count['date_added'].strftime('%Y-%m-%d'), day_count['id__count']) for day_count in Document.objects.values('date_added').annotate(Count("id"))] diff --git a/apps/documents/views.py b/apps/documents/views.py index 3234a2014e..d7ab3701f3 100644 --- a/apps/documents/views.py +++ b/apps/documents/views.py @@ -198,7 +198,7 @@ def document_delete(request, document_id=None, document_id_list=None): document.delete() #create_history(HISTORY_DOCUMENT_DELETED, data={'user': request.user, 'document': document}) - messages.success(request, _(u'Document: %s deleted successfully.') % document) + messages.success(request, _(u'Document deleted successfully.')) except Exception, e: messages.error(request, _(u'Document: %(document)s delete error: %(error)s') % { 'document': document, 'error': e diff --git a/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo b/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..d0eb804bd1 Binary files /dev/null and b/apps/dynamic_search/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/dynamic_search/locale/it/LC_MESSAGES/django.po b/apps/dynamic_search/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..1cb017c45b --- /dev/null +++ b/apps/dynamic_search/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,116 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:42+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:5 +msgid "search" +msgstr "" + +#: __init__.py:6 views.py:72 +msgid "advanced search" +msgstr "" + +#: __init__.py:7 +msgid "search again" +msgstr "" + +#: forms.py:8 +msgid "Search terms" +msgstr "" + +#: models.py:20 +msgid "user" +msgstr "" + +#: models.py:21 +msgid "query" +msgstr "" + +#: models.py:22 +msgid "datetime created" +msgstr "" + +#: models.py:23 +msgid "hits" +msgstr "" + +#: models.py:61 +msgid "recent search" +msgstr "" + +#: models.py:62 +msgid "recent searches" +msgstr "" + +#: views.py:33 +#, python-format +msgid "results, (showing only %(shown_result_count)s out of %(result_count)s)" +msgstr "" + +#: views.py:37 +msgid "results" +msgstr "" + +#: views.py:56 +#, python-format +msgid "Search error: %s" +msgstr "" + +#: views.py:60 +msgid "type" +msgstr "" + +#: views.py:76 views.py:86 views.py:88 templatetags/search_tags.py:19 +#: templatetags/search_tags.py:20 +msgid "Search" +msgstr "" + +#: conf/settings.py:12 +msgid "Maximum amount search hits to fetch and display." +msgstr "" + +#: conf/settings.py:13 +msgid "Maximum number of search queries to remember per user." +msgstr "" + +#: templates/search_help.html:3 +msgid "Help" +msgstr "" + +#: templates/search_help.html:4 +#, python-format +msgid "" +"Enter the desired search keywords separated by space. Only the top " +"%(search_results_limit)s results will be available." +msgstr "" + +#: templates/search_results.html:3 +msgid "Search results" +msgstr "" + +#: templates/search_results.html:19 +#, python-format +msgid "Elapsed time: %(time_delta)s seconds" +msgstr "" + +#: templatetags/search_tags.py:33 +#, python-format +msgid "recent searches (maximum of %d)" +msgstr "" + + diff --git a/apps/folders/locale/it/LC_MESSAGES/django.mo b/apps/folders/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..72cbfdd28e Binary files /dev/null and b/apps/folders/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/folders/locale/it/LC_MESSAGES/django.po b/apps/folders/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..6fccff809c --- /dev/null +++ b/apps/folders/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,212 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:55+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:10 +msgid "folder list" +msgstr "" + +#: __init__.py:11 views.py:53 +msgid "create folder" +msgstr "" + +#: __init__.py:12 +msgid "edit" +msgstr "" + +#: __init__.py:13 +msgid "delete" +msgstr "" + +#: __init__.py:14 +msgid "remove from folder" +msgstr "" + +#: __init__.py:15 +msgid "folder documents" +msgstr "" + +#: __init__.py:16 +msgid "add to a folder" +msgstr "" + +#: __init__.py:17 __init__.py:25 models.py:31 views.py:21 +msgid "folders" +msgstr "" + +#: forms.py:20 +msgid "Existing folders" +msgstr "" + +#: forms.py:22 +msgid "New folder" +msgstr "" + +#: models.py:11 +msgid "title" +msgstr "" + +#: models.py:12 +msgid "user" +msgstr "" + +#: models.py:13 +msgid "datetime created" +msgstr "" + +#: models.py:30 models.py:35 views.py:82 views.py:109 views.py:134 +msgid "folder" +msgstr "" + +#: models.py:36 +msgid "document" +msgstr "" + +#: models.py:42 views.py:257 +msgid "folder document" +msgstr "" + +#: models.py:43 +msgid "folders documents" +msgstr "" + +#: views.py:24 +msgid "created" +msgstr "" + +#: views.py:25 +msgid "documents" +msgstr "" + +#: views.py:45 views.py:152 +msgid "Folder created successfully" +msgstr "" + +#: views.py:48 views.py:154 views.py:188 +#, python-format +msgid "A folder named: %s, already exists." +msgstr "" + +#: views.py:71 +msgid "Folder edited successfully" +msgstr "" + +#: views.py:74 +#, python-format +msgid "Error editing folder; %s" +msgstr "" + +#: views.py:79 +#, python-format +msgid "edit folder: %s" +msgstr "" + +#: views.py:101 +#, python-format +msgid "Folder: %s deleted successfully." +msgstr "" + +#: views.py:103 +#, python-format +msgid "Folder: %(folder)s delete error: %(error)s" +msgstr "" + +#: views.py:114 +#, python-format +msgid "Are you sure you with to delete the folder: %s?" +msgstr "" + +#: views.py:131 +#, python-format +msgid "documents in folder: %s" +msgstr "" + +#: views.py:157 views.py:191 +msgid "Must specify a new folder or an existing one." +msgstr "" + +#: views.py:162 views.py:196 +#, python-format +msgid "Document: %(document)s added to folder: %(folder)s successfully." +msgstr "" + +#: views.py:165 views.py:199 +#, python-format +msgid "Document: %(document)s is already in folder: %(folder)s." +msgstr "" + +#: views.py:186 +#, python-format +msgid "Folder \"%s\" created successfully" +msgstr "" + +#: views.py:207 +#, python-format +msgid "add document \"%s\" to a folder" +msgstr "" + +#: views.py:223 +#, python-format +msgid "folders containing: %s" +msgstr "" + +#: views.py:239 +msgid "Must provide at least one folder document." +msgstr "" + +#: views.py:249 +#, python-format +msgid "Document: %s removed successfully." +msgstr "" + +#: views.py:251 +#, python-format +msgid "Document: %(document)s delete error: %(error)s" +msgstr "" + +#: views.py:265 +#, python-format +msgid "" +"Are you sure you wish to remove the document: %(document)s from the folder " +"\"%(folder)s\"?" +msgstr "" + +#: views.py:268 +#, python-format +msgid "" +"Are you sure you wish to remove the documents: %(documents)s from the folder" +" \"%(folder)s\"?" +msgstr "" + +#: templates/folders_help.html:3 +msgid "What are folders?" +msgstr "" + +#: templates/folders_help.html:4 +msgid "" +"These folders can also be described as user folders. They are a way to let " +"individual users create their own document organization methods. Folders " +"created by one user and the documents contained by them don't affect any " +"other user folders or documents." +msgstr "" + +#: templatetags/folder_tags.py:17 +msgid "Add document to a folder" +msgstr "" + + diff --git a/apps/history/locale/it/LC_MESSAGES/django.mo b/apps/history/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..2ee6d674a1 Binary files /dev/null and b/apps/history/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/history/locale/it/LC_MESSAGES/django.po b/apps/history/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a7bf81f372 --- /dev/null +++ b/apps/history/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,106 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:56+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:6 +msgid "Access the history app" +msgstr "" + +#: __init__.py:8 +msgid "History" +msgstr "" + +#: __init__.py:12 models.py:69 +msgid "history" +msgstr "" + +#: models.py:16 +msgid "namespace" +msgstr "" + +#: models.py:17 +msgid "name" +msgstr "" + +#: models.py:25 models.py:34 +msgid "history type" +msgstr "" + +#: models.py:26 +msgid "history types" +msgstr "" + +#: models.py:30 +msgid "date time" +msgstr "" + +#: models.py:35 +msgid "dictionary" +msgstr "" + +#: models.py:70 +msgid "histories" +msgstr "" + +#: views.py:23 +msgid "history events" +msgstr "" + +#: views.py:26 views.py:60 +msgid "date and time" +msgstr "" + +#: views.py:30 +msgid "object" +msgstr "" + +#: views.py:34 views.py:64 +msgid "summary" +msgstr "" + +#: views.py:56 +#, python-format +msgid "history events for: %s" +msgstr "" + +#: views.py:81 +msgid "Date" +msgstr "" + +#: views.py:82 +msgid "Time" +msgstr "" + +#: views.py:83 +msgid "Object" +msgstr "" + +#: views.py:84 +msgid "Event type" +msgstr "" + +#: views.py:85 +msgid "Event details" +msgstr "" + +#: views.py:89 +#, python-format +msgid "details for: %s" +msgstr "" + + diff --git a/apps/linking/locale/it/LC_MESSAGES/django.mo b/apps/linking/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/linking/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/linking/locale/it/LC_MESSAGES/django.po b/apps/linking/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..e5b46e064b --- /dev/null +++ b/apps/linking/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,331 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:11 +msgid "View existing smart links" +msgstr "" + +#: __init__.py:12 +msgid "Create new smart links" +msgstr "" + +#: __init__.py:13 +msgid "Delete smart links" +msgstr "" + +#: __init__.py:14 +msgid "Edit smart links" +msgstr "" + +#: __init__.py:16 +msgid "Smart links" +msgstr "" + +#: __init__.py:22 +msgid "smart links actions" +msgstr "" + +#: __init__.py:23 __init__.py:25 models.py:21 views.py:105 +msgid "smart links" +msgstr "" + +#: __init__.py:26 +msgid "smart links list" +msgstr "" + +#: __init__.py:27 +msgid "create new smart link" +msgstr "" + +#: __init__.py:28 __init__.py:33 +msgid "edit" +msgstr "" + +#: __init__.py:29 __init__.py:34 +msgid "delete" +msgstr "" + +#: __init__.py:31 +msgid "conditions" +msgstr "" + +#: __init__.py:32 +msgid "create condition" +msgstr "" + +#: forms.py:48 +msgid "Pages" +msgstr "" + +#: forms.py:54 +msgid "Select" +msgstr "" + +#: forms.py:61 +msgid "Click on the image for full size view of the first page." +msgstr "" + +#: literals.py:7 +msgid "and" +msgstr "" + +#: literals.py:8 +msgid "or" +msgstr "" + +#: literals.py:12 +msgid "is equal to" +msgstr "" + +#: literals.py:13 +msgid "is equal to (case insensitive)" +msgstr "" + +#: literals.py:14 +msgid "contains" +msgstr "" + +#: literals.py:15 +msgid "contains (case insensitive)" +msgstr "" + +#: literals.py:16 +msgid "is in" +msgstr "" + +#: literals.py:17 +msgid "is greater than" +msgstr "" + +#: literals.py:18 +msgid "is greater than or equal to" +msgstr "" + +#: literals.py:19 +msgid "is less than" +msgstr "" + +#: literals.py:20 +msgid "is less than or equal to" +msgstr "" + +#: literals.py:21 +msgid "starts with" +msgstr "" + +#: literals.py:22 +msgid "starts with (case insensitive)" +msgstr "" + +#: literals.py:23 +msgid "ends with" +msgstr "" + +#: literals.py:24 +msgid "ends with (case insensitive)" +msgstr "" + +#: literals.py:25 +msgid "is in regular expression" +msgstr "" + +#: literals.py:26 +msgid "is in regular expression (case insensitive)" +msgstr "" + +#: models.py:10 +msgid "title" +msgstr "" + +#: models.py:11 views.py:108 +msgid "dynamic title" +msgstr "" + +#: models.py:11 models.py:29 +msgid "" +"This expression will be evaluated against the current selected document. " +"The document metadata is available as variables `metadata` and document " +"properties under the variable `document`." +msgstr "" + +#: models.py:12 models.py:31 views.py:109 views.py:196 +msgid "enabled" +msgstr "" + +#: models.py:20 models.py:25 views.py:256 views.py:287 +msgid "smart link" +msgstr "" + +#: models.py:26 +msgid "The inclusion is ignored for the first item." +msgstr "" + +#: models.py:27 +msgid "foreign document data" +msgstr "" + +#: models.py:27 +msgid "" +"This represents the metadata of all other documents. Available objects: " +"`document.` and `metadata.`." +msgstr "" + +#: models.py:29 +msgid "expression" +msgstr "" + +#: models.py:30 +msgid "negated" +msgstr "" + +#: models.py:30 +msgid "Inverts the logic of the operator." +msgstr "" + +#: models.py:34 +msgid "not" +msgstr "" + +#: models.py:37 +msgid "link condition" +msgstr "" + +#: models.py:38 +msgid "link conditions" +msgstr "" + +#: views.py:32 +msgid "No action selected." +msgstr "" + +#: views.py:47 +#, python-format +msgid "documents in smart link: %(group)s" +msgstr "" + +#: views.py:65 +#, python-format +msgid "Smart link query error: %s" +msgstr "" + +#: views.py:76 +#, python-format +msgid "smart links (%s)" +msgstr "" + +#: views.py:90 +msgid "There no defined smart links for the current document." +msgstr "" + +#: views.py:124 +#, python-format +msgid "Smart link: %s created successfully." +msgstr "" + +#: views.py:131 +msgid "Create new smart link" +msgstr "" + +#: views.py:144 +#, python-format +msgid "Smart link: %s edited successfully." +msgstr "" + +#: views.py:153 +#, python-format +msgid "Edit smart link: %s" +msgstr "" + +#: views.py:168 +#, python-format +msgid "Smart link: %s deleted successfully." +msgstr "" + +#: views.py:170 +#, python-format +msgid "Error deleting smart link: %(smart_link)s; %(error)s." +msgstr "" + +#: views.py:180 +#, python-format +msgid "Are you sure you wish to delete smart link: %s?" +msgstr "" + +#: views.py:193 +#, python-format +msgid "conditions for smart link: %s" +msgstr "" + +#: views.py:216 +#, python-format +msgid "Smart link condition: \"%s\" created successfully." +msgstr "" + +#: views.py:223 +#, python-format +msgid "Add new conditions to smart link: \"%s\"" +msgstr "" + +#: views.py:243 +#, python-format +msgid "Smart link condition: \"%s\" edited successfully." +msgstr "" + +#: views.py:250 +msgid "Edit smart link condition" +msgstr "" + +#: views.py:257 views.py:288 +msgid "condition" +msgstr "" + +#: views.py:274 +#, python-format +msgid "Smart link condition: \"%s\" deleted successfully." +msgstr "" + +#: views.py:276 +#, python-format +msgid "" +"Error deleting smart link condition: %(smart_link_condition)s; %(error)s." +msgstr "" + +#: views.py:290 +#, python-format +msgid "Are you sure you wish to delete smart link condition: \"%s\"?" +msgstr "" + +#: conf/settings.py:11 +msgid "Show smart link that don't return any documents." +msgstr "" + +#: templates/smart_links_help.html:3 +msgid "What are smart links?" +msgstr "" + +#: templates/smart_links_help.html:4 +msgid "" +"Smart links are a set of conditional statements that are used to query the " +"database using the current document the user is accessing as the data " +"source, the results of these queries are a list of documents that relate in " +"some manner to the document being displayed and allow users the ability to " +"jump to and from linked documents very easily." +msgstr "" + + diff --git a/apps/main/__init__.py b/apps/main/__init__.py index e86293dd3f..822a2c8cfa 100644 --- a/apps/main/__init__.py +++ b/apps/main/__init__.py @@ -18,10 +18,10 @@ __status__ = 'Production' __version_info__ = { 'major': 0, - 'minor': 10, - 'micro': 0, - 'releaselevel': 'hotfix', - 'serial': 2 + 'minor': 11, + 'micro': 1, + 'releaselevel': 'final', + 'serial': 0 } def is_superuser(context): diff --git a/apps/main/locale/en/LC_MESSAGES/django.po b/apps/main/locale/en/LC_MESSAGES/django.po index ad9034e619..3f41a881ab 100644 --- a/apps/main/locale/en/LC_MESSAGES/django.po +++ b/apps/main/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: 2011-11-22 11:26-0400\n" +"POT-Creation-Date: 2011-12-06 03:26-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,31 +17,31 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: __init__.py:15 +#: __init__.py:31 msgid "maintenance" msgstr "" -#: __init__.py:16 +#: __init__.py:32 msgid "statistics" msgstr "" -#: __init__.py:17 +#: __init__.py:33 msgid "diagnostics" msgstr "" -#: __init__.py:18 +#: __init__.py:34 msgid "sentry" msgstr "" -#: __init__.py:19 +#: __init__.py:35 msgid "admin site" msgstr "" -#: __init__.py:30 +#: __init__.py:38 msgid "home" msgstr "" -#: __init__.py:32 +#: __init__.py:40 msgid "search" msgstr "" @@ -130,6 +130,10 @@ msgstr "" msgid "Other available actions" msgstr "" +#: templates/home.html:8 +msgid "Django based open source document management system" +msgstr "" + #: templates/project_description.html:6 msgid "" "Open source, Django based electronic document manager with custom metadata, " diff --git a/apps/main/locale/es/LC_MESSAGES/django.mo b/apps/main/locale/es/LC_MESSAGES/django.mo index 128108745e..3c57a910a9 100644 Binary files a/apps/main/locale/es/LC_MESSAGES/django.mo and b/apps/main/locale/es/LC_MESSAGES/django.mo differ diff --git a/apps/main/locale/es/LC_MESSAGES/django.po b/apps/main/locale/es/LC_MESSAGES/django.po index c530cc4628..da34696a3f 100644 --- a/apps/main/locale/es/LC_MESSAGES/django.po +++ b/apps/main/locale/es/LC_MESSAGES/django.po @@ -1,49 +1,49 @@ # 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. msgid "" msgstr "" "Project-Id-Version: Mayan EDMS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-11-22 11:26-0400\n" -"PO-Revision-Date: 2011-11-04 00:56+0000\n" -"Last-Translator: rosarior \n" -"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/" -"mayan-edms/team/es/)\n" -"Language: es\n" +"POT-Creation-Date: 2011-12-06 03:26-0400\n" +"PO-Revision-Date: 2011-12-06 03:27\n" +"Last-Translator: Administrador \n" +"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/mayan-edms/team/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" +"X-Translated-Using: django-rosetta 0.6.2\n" -#: __init__.py:15 +#: __init__.py:31 msgid "maintenance" msgstr "mantenimiento" -#: __init__.py:16 +#: __init__.py:32 msgid "statistics" msgstr "estadísticas" -#: __init__.py:17 +#: __init__.py:33 msgid "diagnostics" msgstr "diagnósticos" -#: __init__.py:18 +#: __init__.py:34 msgid "sentry" msgstr "sentry" -#: __init__.py:19 +#: __init__.py:35 msgid "admin site" msgstr "sitio administrativo" -#: __init__.py:30 +#: __init__.py:38 msgid "home" msgstr "inicio" -#: __init__.py:32 +#: __init__.py:40 msgid "search" msgstr "búsqueda" @@ -61,11 +61,11 @@ msgstr "Diagnósticos" #: conf/settings.py:12 msgid "" -"Controls whether the search functionality is provided by a sidebar widget or " -"by a menu entry." +"Controls whether the search functionality is provided by a sidebar " +"widget or by a menu entry." msgstr "" -"Controla si la funcionalidad de búsqueda es proporcionada por una barra " -"lateral o por una entrada de menú." +"Controla si la funcionalidad de búsqueda es proporcionada por una " +"barra lateral o por una entrada de menú." #: templates/about.html:5 msgid "About this program" @@ -134,10 +134,15 @@ msgstr "Acciones" msgid "Other available actions" msgstr "Otras acciones disponibles" +#: templates/home.html:8 +msgid "Django based open source document management system" +msgstr "Gestor de documentos de código abierto, basado en Django." + #: templates/project_description.html:6 msgid "" -"Open source, Django based electronic document manager with custom metadata, " -"indexing, tagging, file serving integration and OCR capabilities" +"Open source, Django based electronic document manager with custom " +"metadata, indexing, tagging, file serving integration and OCR " +"capabilities" msgstr "" "Gestor documental de código abierto, basado en Django con metadatos " "personaliables, indexación, etiquedado de documentos, integración de " diff --git a/apps/main/locale/it/LC_MESSAGES/django.mo b/apps/main/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/main/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/main/locale/it/LC_MESSAGES/django.po b/apps/main/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5fbd304397 --- /dev/null +++ b/apps/main/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,143 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:15 +msgid "maintenance" +msgstr "" + +#: __init__.py:16 +msgid "statistics" +msgstr "" + +#: __init__.py:17 +msgid "diagnostics" +msgstr "" + +#: __init__.py:18 +msgid "sentry" +msgstr "" + +#: __init__.py:19 +msgid "admin site" +msgstr "" + +#: __init__.py:30 +msgid "home" +msgstr "" + +#: __init__.py:32 +msgid "search" +msgstr "" + +#: views.py:41 +msgid "maintenance menu" +msgstr "" + +#: views.py:53 +msgid "Statistics" +msgstr "" + +#: views.py:61 +msgid "Diagnostics" +msgstr "" + +#: conf/settings.py:12 +msgid "" +"Controls whether the search functionality is provided by a sidebar widget or" +" by a menu entry." +msgstr "" + +#: templates/about.html:5 +msgid "About this program" +msgstr "" + +#: templates/about.html:9 templates/verbose_login.html:4 +msgid "Version" +msgstr "" + +#: templates/base.html:28 +msgid "(DEBUG)" +msgstr "" + +#: templates/base.html:183 +msgid "User" +msgstr "" + +#: templates/base.html:185 +msgid "Anonymous" +msgstr "" + +#: templates/base.html:188 +msgid "User details" +msgstr "" + +#: templates/base.html:205 +msgid "Login" +msgstr "" + +#: templates/base.html:205 +msgid "Logout" +msgstr "" + +#: templates/base.html:285 +msgid "Secondary menu" +msgstr "" + +#: templates/base.html:302 +#, python-format +msgid "Actions for %(name)s: %(navigation_object)s" +msgstr "" + +#: templates/base.html:304 templates/base.html.py:336 +#, python-format +msgid "Actions for: %(navigation_object)s" +msgstr "" + +#: templates/base.html:307 +msgid "Available actions" +msgstr "" + +#: templates/base.html:319 templates/base.html.py:351 +msgid "Related actions" +msgstr "" + +#: templates/base.html:334 +#, python-format +msgid "Actions for %(object_name)s: %(navigation_object)s" +msgstr "" + +#: templates/base.html:339 +msgid "Actions" +msgstr "" + +#: templates/base.html:364 +msgid "Other available actions" +msgstr "" + +#: templates/project_description.html:6 +msgid "" +"Open source, Django based electronic document manager with custom metadata, " +"indexing, tagging, file serving integration and OCR capabilities" +msgstr "" + +#: templates/project_description.html:15 +msgid "Released under the GPL V3 License" +msgstr "" + + diff --git a/apps/main/templates/home.html b/apps/main/templates/home.html index c4f0d284b2..095ed73001 100644 --- a/apps/main/templates/home.html +++ b/apps/main/templates/home.html @@ -5,6 +5,7 @@

{% project_name %}

+

{% trans 'Django based open source document management system' %}


{% endblock %} {% block footer %} diff --git a/apps/metadata/locale/it/LC_MESSAGES/django.mo b/apps/metadata/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..2ee6d674a1 Binary files /dev/null and b/apps/metadata/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/metadata/locale/it/LC_MESSAGES/django.po b/apps/metadata/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..cf409ec798 --- /dev/null +++ b/apps/metadata/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,452 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:56+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:12 +msgid "Edit a document's metadata" +msgstr "" + +#: __init__.py:13 +msgid "Add metadata to a document" +msgstr "" + +#: __init__.py:14 +msgid "Remove metadata from a document" +msgstr "" + +#: __init__.py:15 +msgid "View metadata from a document" +msgstr "" + +#: __init__.py:17 +msgid "Edit metadata types" +msgstr "" + +#: __init__.py:18 +msgid "Create new metadata types" +msgstr "" + +#: __init__.py:19 +msgid "Delete metadata types" +msgstr "" + +#: __init__.py:20 +msgid "View metadata types" +msgstr "" + +#: __init__.py:22 +msgid "Edit metadata sets" +msgstr "" + +#: __init__.py:23 +msgid "Create new metadata sets" +msgstr "" + +#: __init__.py:24 +msgid "Delete metadata sets" +msgstr "" + +#: __init__.py:25 +msgid "View metadata sets" +msgstr "" + +#: __init__.py:27 forms.py:94 +msgid "Metadata" +msgstr "" + +#: __init__.py:33 +msgid "Metadata setup" +msgstr "" + +#: __init__.py:44 __init__.py:46 +msgid "edit metadata" +msgstr "" + +#: __init__.py:45 +msgid "metadata" +msgstr "" + +#: __init__.py:47 __init__.py:48 +msgid "add metadata" +msgstr "" + +#: __init__.py:49 __init__.py:50 +msgid "remove metadata" +msgstr "" + +#: __init__.py:52 models.py:33 views.py:294 +msgid "metadata types" +msgstr "" + +#: __init__.py:53 __init__.py:58 +msgid "edit" +msgstr "" + +#: __init__.py:54 __init__.py:59 +msgid "delete" +msgstr "" + +#: __init__.py:55 __init__.py:60 +msgid "create new" +msgstr "" + +#: __init__.py:57 views.py:394 +msgid "metadata sets" +msgstr "" + +#: __init__.py:62 models.py:92 +msgid "default metadata" +msgstr "" + +#: classes.py:12 +#, python-format +msgid "'metadata' object has no attribute '%s'" +msgstr "" + +#: forms.py:28 +msgid "required" +msgstr "" + +#: forms.py:54 +msgid "id" +msgstr "" + +#: forms.py:55 +msgid "Name" +msgstr "" + +#: forms.py:57 +msgid "Value" +msgstr "" + +#: forms.py:58 +msgid "Update" +msgstr "" + +#: forms.py:64 +msgid "Metadata type" +msgstr "" + +#: forms.py:68 +msgid "Remove" +msgstr "" + +#: forms.py:86 +msgid "Metadata sets" +msgstr "" + +#: models.py:9 +#, python-format +msgid " Available models: %s" +msgstr "" + +#: models.py:10 +#, python-format +msgid " Available functions: %s" +msgstr "" + +#: models.py:17 +msgid "name" +msgstr "" + +#: models.py:17 +msgid "Do not use python reserved words, or spaces." +msgstr "" + +#: models.py:18 models.py:40 +msgid "title" +msgstr "" + +#: models.py:20 +msgid "default" +msgstr "" + +#: models.py:21 +#, python-format +msgid "Enter a string to be evaluated.%s" +msgstr "" + +#: models.py:23 +msgid "lookup" +msgstr "" + +#: models.py:24 +#, python-format +msgid "" +"Enter a string to be evaluated. Example: [user.get_full_name() for user in " +"User.objects.all()].%s" +msgstr "" + +#: models.py:32 models.py:57 views.py:331 views.py:376 +msgid "metadata type" +msgstr "" + +#: models.py:47 models.py:48 models.py:56 views.py:446 views.py:491 +msgid "metadata set" +msgstr "" + +#: models.py:64 +msgid "metadata set item" +msgstr "" + +#: models.py:65 +msgid "metadata set items" +msgstr "" + +#: models.py:73 +msgid "document" +msgstr "" + +#: models.py:74 +msgid "type" +msgstr "" + +#: models.py:75 views.py:283 +msgid "value" +msgstr "" + +#: models.py:81 models.py:82 +msgid "document metadata" +msgstr "" + +#: models.py:90 views.py:559 +msgid "document type" +msgstr "" + +#: models.py:91 +msgid "default metadata sets" +msgstr "" + +#: models.py:98 +msgid "document type defaults" +msgstr "" + +#: models.py:99 +msgid "document types defaults" +msgstr "" + +#: views.py:38 views.py:193 +msgid "The selected document doesn't have any metadata." +msgstr "" + +#: views.py:43 views.py:131 views.py:199 +msgid "Must provide at least one document." +msgstr "" + +#: views.py:78 views.py:234 +#, python-format +msgid "Error deleting document indexes; %s" +msgstr "" + +#: views.py:90 +#, python-format +msgid "Error editing metadata for document %(document)s; %(error)s." +msgstr "" + +#: views.py:93 +#, python-format +msgid "Metadata for document %s edited successfully." +msgstr "" + +#: views.py:98 views.py:251 +#, python-format +msgid "Error updating document indexes; %s" +msgstr "" + +#: views.py:100 views.py:253 +msgid "Document indexes updated successfully." +msgstr "" + +#: views.py:111 +#, python-format +msgid "Edit metadata for document: %s" +msgstr "" + +#: views.py:113 +#, python-format +msgid "Edit metadata for documents: %s" +msgstr "" + +#: views.py:148 +#, python-format +msgid "" +"Metadata type: %(metadata_type)s successfully added to document " +"%(document)s." +msgstr "" + +#: views.py:151 +#, python-format +msgid "" +"Metadata type: %(metadata_type)s already present in document %(document)s." +msgstr "" + +#: views.py:175 +#, python-format +msgid "Add metadata type to document: %s" +msgstr "" + +#: views.py:177 +#, python-format +msgid "Add metadata type to documents: %s" +msgstr "" + +#: views.py:242 +#, python-format +msgid "" +"Successfully remove metadata type: %(metadata_type)s from document: " +"%(document)s." +msgstr "" + +#: views.py:245 +#, python-format +msgid "" +"Error removing metadata type: %(metadata_type)s from document: %(document)s." +msgstr "" + +#: views.py:264 +#, python-format +msgid "Remove metadata types from document: %s" +msgstr "" + +#: views.py:266 +#, python-format +msgid "Remove metadata types from documents: %s" +msgstr "" + +#: views.py:281 +#, python-format +msgid "metadata for: %s" +msgstr "" + +#: views.py:298 +msgid "internal name" +msgstr "" + +#: views.py:319 +msgid "Metadata type edited successfully" +msgstr "" + +#: views.py:322 +#, python-format +msgid "Error editing metadata type; %s" +msgstr "" + +#: views.py:328 +#, python-format +msgid "edit metadata type: %s" +msgstr "" + +#: views.py:343 +msgid "Metadata type created successfully" +msgstr "" + +#: views.py:349 +msgid "create metadata type" +msgstr "" + +#: views.py:368 +#, python-format +msgid "Metadata type: %s deleted successfully." +msgstr "" + +#: views.py:370 +#, python-format +msgid "Metadata type: %(metadata_type)s delete error: %(error)s" +msgstr "" + +#: views.py:381 +#, python-format +msgid "Are you sure you wish to delete the metadata type: %s?" +msgstr "" + +#: views.py:398 +msgid "members" +msgstr "" + +#: views.py:442 +#, python-format +msgid "non members of metadata set: %s" +msgstr "" + +#: views.py:443 +#, python-format +msgid "members of metadata set: %s" +msgstr "" + +#: views.py:458 +msgid "Metadata set created successfully" +msgstr "" + +#: views.py:464 +msgid "create metadata set" +msgstr "" + +#: views.py:483 +#, python-format +msgid "Metadata set: %s deleted successfully." +msgstr "" + +#: views.py:485 +#, python-format +msgid "Metadata set: %(metadata_set)s delete error: %(error)s" +msgstr "" + +#: views.py:496 +#, python-format +msgid "Are you sure you wish to delete the metadata set: %s?" +msgstr "" + +#: views.py:554 +#, python-format +msgid "non members of document type: %s" +msgstr "" + +#: views.py:555 +#, python-format +msgid "members of document type: %s" +msgstr "" + +#: templates/metadata_set_help.html:3 +msgid "What are metadata sets?" +msgstr "" + +#: templates/metadata_set_help.html:4 +msgid "" +"A metadata set is a group of one or more metadata types. Metadata sets are " +"useful when creating new documents; selecing a metadata set automatically " +"attaches it's member metadata types to said document." +msgstr "" + +#: templates/metadata_type_help.html:3 +msgid "What are metadata types?" +msgstr "" + +#: templates/metadata_type_help.html:4 +msgid "" +"A metadata type defines the characteristics of a value of some kind that can" +" be attached to a document. Examples of metadata types are: a client name, " +"a date, or a project to which several documents belong. A metadata type's " +"name is the internal identifier with which it can be referenced to by other " +"modules such as the indexing module, the title is the value that is shown to" +" the users, the default value is the value an instance of this metadata type" +" will have initially, and the lookup value turns an instance of a metadata " +"of this type into a choice list which options are the result of the lookup's" +" code execution." +msgstr "" + + diff --git a/apps/metadata/views.py b/apps/metadata/views.py index 9d34c0cd4f..028700a46d 100644 --- a/apps/metadata/views.py +++ b/apps/metadata/views.py @@ -481,11 +481,12 @@ def setup_metadata_set_delete(request, metadata_set_id): try: metadata_set.delete() messages.success(request, _(u'Metadata set: %s deleted successfully.') % metadata_set) + return HttpResponseRedirect(post_action_redirect) except Exception, e: messages.error(request, _(u'Metadata set: %(metadata_set)s delete error: %(error)s') % { 'metadata_set': metadata_set, 'error': e}) + return HttpResponseRedirect(previous) - return HttpResponseRedirect(next) context = { 'object_name': _(u'metadata set'), diff --git a/apps/navigation/locale/it/LC_MESSAGES/django.mo b/apps/navigation/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/navigation/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/navigation/locale/it/LC_MESSAGES/django.po b/apps/navigation/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..086ca792fb --- /dev/null +++ b/apps/navigation/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,32 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: forms.py:14 +msgid "Multi item action" +msgstr "" + +#: widgets.py:28 +msgid "icon" +msgstr "" + +#: templatetags/navigation_tags.py:275 +msgid "Selected item actions:" +msgstr "" + + diff --git a/apps/ocr/locale/it/LC_MESSAGES/django.mo b/apps/ocr/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/ocr/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/ocr/locale/it/LC_MESSAGES/django.po b/apps/ocr/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..dd3f06215a --- /dev/null +++ b/apps/ocr/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,448 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:28 +msgid "Submit document for OCR" +msgstr "" + +#: __init__.py:29 +msgid "Delete document for OCR queue" +msgstr "" + +#: __init__.py:30 +msgid "Can enable/disable an OCR queue" +msgstr "" + +#: __init__.py:31 +msgid "Can execute an OCR clean up on all document pages" +msgstr "" + +#: __init__.py:32 +msgid "Can edit an OCR queue properties" +msgstr "" + +#: __init__.py:34 __init__.py:56 __init__.py:74 +msgid "OCR" +msgstr "" + +#: __init__.py:40 +msgid "OCR Setup" +msgstr "" + +#: __init__.py:44 +msgid "submit to OCR queue" +msgstr "" + +#: __init__.py:45 __init__.py:46 +msgid "re-queue" +msgstr "" + +#: __init__.py:47 __init__.py:48 __init__.py:63 +msgid "delete" +msgstr "" + +#: __init__.py:50 +msgid "stop queue" +msgstr "" + +#: __init__.py:51 +msgid "activate queue" +msgstr "" + +#: __init__.py:53 +msgid "clean up pages content" +msgstr "" + +#: __init__.py:53 +msgid "" +"Runs a language filter to remove common OCR mistakes from document pages " +"content." +msgstr "" + +#: __init__.py:55 +msgid "queue document list" +msgstr "" + +#: __init__.py:58 views.py:316 +msgid "active tasks" +msgstr "" + +#: __init__.py:60 +msgid "transformations" +msgstr "" + +#: __init__.py:61 +msgid "add transformation" +msgstr "" + +#: __init__.py:62 +msgid "edit" +msgstr "" + +#: __init__.py:82 +msgid "Default" +msgstr "" + +#: __init__.py:104 +msgid "Checks the OCR queue for pending documents." +msgstr "" + +#: api.py:119 +msgid "Text from OCR" +msgstr "" + +#: literals.py:8 +msgid "stopped" +msgstr "" + +#: literals.py:9 +msgid "active" +msgstr "" + +#: literals.py:18 +msgid "pending" +msgstr "" + +#: literals.py:19 +msgid "processing" +msgstr "" + +#: literals.py:20 +msgid "error" +msgstr "" + +#: models.py:22 +msgid "name" +msgstr "" + +#: models.py:23 +msgid "label" +msgstr "" + +#: models.py:27 models.py:47 +msgid "state" +msgstr "" + +#: models.py:32 models.py:40 views.py:44 views.py:337 views.py:378 +#: views.py:408 views.py:444 +msgid "document queue" +msgstr "" + +#: models.py:33 +msgid "document queues" +msgstr "" + +#: models.py:41 +msgid "document" +msgstr "" + +#: models.py:42 +msgid "date time submitted" +msgstr "" + +#: models.py:43 +msgid "delay ocr" +msgstr "" + +#: models.py:48 +msgid "result" +msgstr "" + +#: models.py:49 +msgid "node name" +msgstr "" + +#: models.py:53 +msgid "queue document" +msgstr "" + +#: models.py:54 +msgid "queue documents" +msgstr "" + +#: models.py:63 views.py:48 +msgid "Missing document." +msgstr "" + +#: models.py:67 +msgid "Enter a valid value." +msgstr "" + +#: models.py:95 views.py:341 +msgid "order" +msgstr "" + +#: models.py:96 views.py:342 views.py:379 views.py:409 +msgid "transformation" +msgstr "" + +#: models.py:97 views.py:343 +msgid "arguments" +msgstr "" + +#: models.py:97 +#, python-format +msgid "Use dictionaries to indentify arguments, example: %s" +msgstr "" + +#: models.py:107 +msgid "document queue transformation" +msgstr "" + +#: models.py:108 +msgid "document queue transformations" +msgstr "" + +#: statistics.py:8 +#, python-format +msgid "Document queues: %d" +msgstr "" + +#: statistics.py:9 +#, python-format +msgid "Queued documents: %d" +msgstr "" + +#: statistics.py:13 +msgid "OCR statistics" +msgstr "" + +#: views.py:41 +#, python-format +msgid "documents in queue: %s" +msgstr "" + +#: views.py:49 +msgid "thumbnail" +msgstr "" + +#: views.py:62 +msgid "document queue properties" +msgstr "" + +#: views.py:63 +#, python-format +msgid "Current state: %s" +msgstr "" + +#: views.py:79 views.py:154 +msgid "Must provide at least one queue document." +msgstr "" + +#: views.py:89 +#, python-format +msgid "Document: %s is being processed and can't be deleted." +msgstr "" + +#: views.py:92 +#, python-format +msgid "Queue document: %(document)s deleted successfully." +msgstr "" + +#: views.py:96 +#, python-format +msgid "Error deleting document: %(document)s; %(error)s" +msgstr "" + +#: views.py:109 +#, python-format +msgid "Are you sure you wish to delete queue document: %s?" +msgstr "" + +#: views.py:111 +#, python-format +msgid "Are you sure you wish to delete queue documents: %s?" +msgstr "" + +#: views.py:134 +#, python-format +msgid "Document: %(document)s was added to the OCR queue: %(queue)s." +msgstr "" + +#: views.py:137 +#, python-format +msgid "Document: %(document)s is already queued." +msgstr "" + +#: views.py:165 +#, python-format +msgid "Document: %s is already being processed and can't be re-queded." +msgstr "" + +#: views.py:173 +#, python-format +msgid "Document: %(document)s was re-queued to the OCR queue: %(queue)s" +msgstr "" + +#: views.py:176 +#, python-format +msgid "Document id#: %d, no longer exists." +msgstr "" + +#: views.py:189 +#, python-format +msgid "Are you sure you wish to re-queue document: %s?" +msgstr "" + +#: views.py:191 +#, python-format +msgid "Are you sure you wish to re-queue documents: %s?" +msgstr "" + +#: views.py:209 +#, python-format +msgid "Document queue: %s, already stopped." +msgstr "" + +#: views.py:215 +#, python-format +msgid "Document queue: %s, stopped successfully." +msgstr "" + +#: views.py:221 +#, python-format +msgid "Are you sure you wish to disable document queue: %s" +msgstr "" + +#: views.py:236 +#, python-format +msgid "Document queue: %s, already active." +msgstr "" + +#: views.py:242 +#, python-format +msgid "Document queue: %s, activated successfully." +msgstr "" + +#: views.py:248 +#, python-format +msgid "Are you sure you wish to activate document queue: %s" +msgstr "" + +#: views.py:265 +msgid "Are you sure you wish to clean up all the pages content?" +msgstr "" + +#: views.py:266 +msgid "On large databases this operation may take some time to execute." +msgstr "" + +#: views.py:272 +msgid "Document pages content clean up complete." +msgstr "" + +#: views.py:274 +#, python-format +msgid "Document pages content clean up error: %s" +msgstr "" + +#: views.py:320 +msgid "node" +msgstr "" + +#: views.py:321 +msgid "task id" +msgstr "" + +#: views.py:322 +msgid "task name" +msgstr "" + +#: views.py:323 +msgid "related object" +msgstr "" + +#: views.py:335 +#, python-format +msgid "transformations for: %s" +msgstr "" + +#: views.py:365 +msgid "Queue transformation edited successfully" +msgstr "" + +#: views.py:368 +#, python-format +msgid "Error editing queue transformation; %s" +msgstr "" + +#: views.py:373 +#, python-format +msgid "Edit transformation: %s" +msgstr "" + +#: views.py:396 +msgid "Queue transformation deleted successfully." +msgstr "" + +#: views.py:398 +#, python-format +msgid "Error deleting queue transformation; %(error)s" +msgstr "" + +#: views.py:411 +#, python-format +msgid "" +"Are you sure you wish to delete queue transformation \"%(transformation)s\"" +msgstr "" + +#: views.py:434 +msgid "Queue transformation created successfully" +msgstr "" + +#: views.py:437 +#, python-format +msgid "Error creating queue transformation; %s" +msgstr "" + +#: views.py:446 +#, python-format +msgid "Create new transformation for queue: %s" +msgstr "" + +#: conf/settings.py:13 +msgid "" +"Amount of seconds to delay OCR of documents to allow for the node's storage " +"replication overhead." +msgstr "" + +#: conf/settings.py:14 +msgid "Maximum amount of concurrent document OCRs a node can perform." +msgstr "" + +#: conf/settings.py:15 +msgid "Automatically queue newly created documents for OCR." +msgstr "" + +#: conf/settings.py:17 +msgid "" +"URI in the form: \"memcached://127.0.0.1:11211/\" to specify a cache backend" +" to use for locking. Multiple hosts can be specified separated by a " +"semicolon." +msgstr "" + +#: conf/settings.py:18 +msgid "File path to unpaper program." +msgstr "" + +#: parsers/__init__.py:23 +msgid "Text extracted from PDF" +msgstr "" + + diff --git a/apps/permissions/locale/it/LC_MESSAGES/django.mo b/apps/permissions/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/permissions/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/permissions/locale/it/LC_MESSAGES/django.po b/apps/permissions/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..11a0b7b7f7 --- /dev/null +++ b/apps/permissions/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,194 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:12 +msgid "View roles" +msgstr "" + +#: __init__.py:13 +msgid "Edit roles" +msgstr "" + +#: __init__.py:14 +msgid "Create roles" +msgstr "" + +#: __init__.py:15 +msgid "Delete roles" +msgstr "" + +#: __init__.py:16 +msgid "Grant permissions" +msgstr "" + +#: __init__.py:17 +msgid "Revoke permissions" +msgstr "" + +#: __init__.py:19 models.py:87 views.py:38 +msgid "roles" +msgstr "" + +#: __init__.py:20 +msgid "create new role" +msgstr "" + +#: __init__.py:21 +msgid "edit" +msgstr "" + +#: __init__.py:22 +msgid "members" +msgstr "" + +#: __init__.py:23 +msgid "role permissions" +msgstr "" + +#: __init__.py:24 +msgid "delete" +msgstr "" + +#: __init__.py:26 +msgid "grant" +msgstr "" + +#: __init__.py:27 +msgid "revoke" +msgstr "" + +#: api.py:22 +msgid "Permissions" +msgstr "" + +#: api.py:55 +msgid "Insufficient permissions." +msgstr "" + +#: models.py:11 views.py:58 +msgid "namespace" +msgstr "" + +#: models.py:12 views.py:59 +msgid "name" +msgstr "" + +#: models.py:13 models.py:82 +msgid "label" +msgstr "" + +#: models.py:20 models.py:65 views.py:145 views.py:204 +msgid "permission" +msgstr "" + +#: models.py:21 views.py:55 views.py:147 views.py:206 +msgid "permissions" +msgstr "" + +#: models.py:73 +msgid "permission holder" +msgstr "" + +#: models.py:74 +msgid "permission holders" +msgstr "" + +#: models.py:86 models.py:104 views.py:74 views.py:91 views.py:115 +#: views.py:282 +msgid "role" +msgstr "" + +#: models.py:115 +msgid "role member" +msgstr "" + +#: models.py:116 +msgid "role members" +msgstr "" + +#: views.py:61 +msgid "has permission" +msgstr "" + +#: views.py:142 views.py:201 +msgid " and " +msgstr "" + +#: views.py:142 views.py:201 +#, python-format +msgid "%(permissions)s to %(requester)s" +msgstr "" + +#: views.py:152 +#, python-format +msgid "Permission \"%(permission)s\" granted to: %(requester)s." +msgstr "" + +#: views.py:155 +#, python-format +msgid "%(requester)s, already had the permission \"%(permission)s\" granted." +msgstr "" + +#: views.py:167 +#, python-format +msgid "" +"Are you sure you wish to grant the %(permissions_label)s %(title_suffix)s?" +msgstr "" + +#: views.py:211 +#, python-format +msgid "Permission \"%(permission)s\" revoked from: %(requester)s." +msgstr "" + +#: views.py:214 +#, python-format +msgid "%(requester)s, doesn't have the permission \"%(permission)s\" granted." +msgstr "" + +#: views.py:226 +#, python-format +msgid "" +"Are you sure you wish to revoke the %(permissions_label)s %(title_suffix)s?" +msgstr "" + +#: views.py:278 +#, python-format +msgid "non members of role: %s" +msgstr "" + +#: views.py:279 +#, python-format +msgid "members of role: %s" +msgstr "" + +#: widgets.py:16 +msgid "Revoke" +msgstr "" + +#: widgets.py:21 +msgid "Grant" +msgstr "" + +#: conf/settings.py:10 +msgid "" +"A list of existing roles that are automatically assigned to newly created " +"users" +msgstr "" + + diff --git a/apps/project_setup/locale/it/LC_MESSAGES/django.mo b/apps/project_setup/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..d0eb804bd1 Binary files /dev/null and b/apps/project_setup/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/project_setup/locale/it/LC_MESSAGES/django.po b/apps/project_setup/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..966177ce1a --- /dev/null +++ b/apps/project_setup/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,28 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:42+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:6 +msgid "setup" +msgstr "" + +#: views.py:13 +msgid "setup items" +msgstr "" + + diff --git a/apps/project_tools/locale/it/LC_MESSAGES/django.mo b/apps/project_tools/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/project_tools/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/project_tools/locale/it/LC_MESSAGES/django.po b/apps/project_tools/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..086a78ab58 --- /dev/null +++ b/apps/project_tools/locale/it/LC_MESSAGES/django.po @@ -0,0 +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: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:7 views.py:13 +msgid "tools" +msgstr "" + + diff --git a/apps/smart_settings/locale/it/LC_MESSAGES/django.mo b/apps/smart_settings/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/smart_settings/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/smart_settings/locale/it/LC_MESSAGES/django.po b/apps/smart_settings/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..c6838fcd25 --- /dev/null +++ b/apps/smart_settings/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,36 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:8 views.py:26 +msgid "settings" +msgstr "" + +#: views.py:31 +msgid "name" +msgstr "" + +#: views.py:32 +msgid "default" +msgstr "" + +#: views.py:33 +msgid "value" +msgstr "" + + diff --git a/apps/sources/locale/it/LC_MESSAGES/django.mo b/apps/sources/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/sources/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/sources/locale/it/LC_MESSAGES/django.po b/apps/sources/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..a03efbdf8a --- /dev/null +++ b/apps/sources/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,462 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:14 +msgid "View existing document sources" +msgstr "" + +#: __init__.py:15 +msgid "Edit document sources" +msgstr "" + +#: __init__.py:16 +msgid "Delete document sources" +msgstr "" + +#: __init__.py:17 +msgid "Create new document sources" +msgstr "" + +#: __init__.py:19 +msgid "Sources setup" +msgstr "" + +#: __init__.py:25 +msgid "preview" +msgstr "" + +#: __init__.py:26 __init__.py:34 __init__.py:40 +msgid "delete" +msgstr "" + +#: __init__.py:28 +msgid "sources" +msgstr "" + +#: __init__.py:29 literals.py:53 models.py:159 +msgid "web forms" +msgstr "" + +#: __init__.py:30 models.py:130 +msgid "staging folders" +msgstr "" + +#: __init__.py:31 models.py:194 +msgid "watch folders" +msgstr "" + +#: __init__.py:33 __init__.py:39 +msgid "edit" +msgstr "" + +#: __init__.py:35 +msgid "add new source" +msgstr "" + +#: __init__.py:37 +msgid "transformations" +msgstr "" + +#: __init__.py:38 +msgid "add transformation" +msgstr "" + +#: __init__.py:42 +msgid "Document sources" +msgstr "" + +#: __init__.py:69 widgets.py:39 +msgid "thumbnail" +msgstr "" + +#: forms.py:32 forms.py:55 +msgid "Expand compressed files" +msgstr "" + +#: forms.py:33 forms.py:56 +msgid "Upload a compressed file's contained files as individual documents" +msgstr "" + +#: forms.py:41 +msgid "Staging file" +msgstr "" + +#: literals.py:8 literals.py:13 +msgid "Always" +msgstr "" + +#: literals.py:9 literals.py:14 +msgid "Never" +msgstr "" + +#: literals.py:15 +msgid "Ask user" +msgstr "" + +#: literals.py:30 +msgid "Disk" +msgstr "" + +#: literals.py:31 +msgid "Database" +msgstr "" + +#: literals.py:32 +msgid "Drive" +msgstr "" + +#: literals.py:33 +msgid "Network drive" +msgstr "" + +#: literals.py:34 +msgid "User drive" +msgstr "" + +#: literals.py:35 +msgid "Envelope" +msgstr "" + +#: literals.py:36 +msgid "Folder" +msgstr "" + +#: literals.py:37 +msgid "World" +msgstr "" + +#: literals.py:38 +msgid "Printer" +msgstr "" + +#: literals.py:39 +msgid "Empty printer" +msgstr "" + +#: literals.py:47 models.py:158 +msgid "web form" +msgstr "" + +#: literals.py:48 +msgid "server staging folder" +msgstr "" + +#: literals.py:49 +msgid "server watch folder" +msgstr "" + +#: literals.py:54 +msgid "server staging folders" +msgstr "" + +#: literals.py:55 +msgid "server watch folders" +msgstr "" + +#: models.py:29 +msgid "title" +msgstr "" + +#: models.py:30 +msgid "enabled" +msgstr "" + +#: models.py:31 +msgid "whitelist" +msgstr "" + +#: models.py:32 +msgid "blacklist" +msgstr "" + +#: models.py:98 +msgid "icon" +msgstr "" + +#: models.py:98 +msgid "An icon to visually distinguish this source." +msgstr "" + +#: models.py:114 models.py:166 +msgid "folder path" +msgstr "" + +#: models.py:114 models.py:166 +msgid "Server side filesystem path." +msgstr "" + +#: models.py:115 +msgid "preview width" +msgstr "" + +#: models.py:115 +msgid "Width value to be passed to the converter backend." +msgstr "" + +#: models.py:116 +msgid "preview height" +msgstr "" + +#: models.py:116 +msgid "Height value to be passed to the converter backend." +msgstr "" + +#: models.py:117 models.py:154 models.py:167 +msgid "uncompress" +msgstr "" + +#: models.py:117 models.py:154 models.py:167 +msgid "Whether to expand or not compressed archives." +msgstr "" + +#: models.py:118 models.py:168 +msgid "delete after upload" +msgstr "" + +#: models.py:118 models.py:168 +msgid "Delete the file after is has been successfully uploaded." +msgstr "" + +#: models.py:129 +msgid "staging folder" +msgstr "" + +#: models.py:169 +msgid "interval" +msgstr "" + +#: models.py:169 +msgid "" +"Inverval in seconds where the watch folder path is checked for new " +"documents." +msgstr "" + +#: models.py:193 +msgid "watch folder" +msgstr "" + +#: models.py:198 +msgid "Enter a valid value." +msgstr "" + +#: models.py:226 views.py:487 +msgid "order" +msgstr "" + +#: models.py:227 views.py:488 views.py:525 views.py:555 +msgid "transformation" +msgstr "" + +#: models.py:228 views.py:489 +msgid "arguments" +msgstr "" + +#: models.py:228 +#, python-format +msgid "Use dictionaries to indentify arguments, example: %s" +msgstr "" + +#: models.py:239 +msgid "document source transformation" +msgstr "" + +#: models.py:240 +msgid "document source transformations" +msgstr "" + +#: staging.py:42 +#, python-format +msgid "Unable get list of staging files: %s" +msgstr "" + +#: staging.py:127 +#, python-format +msgid "Unable to upload staging file: %s" +msgstr "" + +#: staging.py:137 +#, python-format +msgid "Unable to delete staging file: %s" +msgstr "" + +#: utils.py:40 +msgid "Whitelist Blacklist validation error." +msgstr "" + +#: views.py:80 +msgid "here" +msgstr "" + +#: views.py:85 +msgid "Upload sources" +msgstr "" + +#: views.py:87 +msgid "" +"No interactive document sources have been defined or none have been enabled." +msgstr "" + +#: views.py:88 +#, python-format +msgid "Click %(setup_link)s to add or enable some document sources." +msgstr "" + +#: views.py:136 +msgid "Document uploaded successfully." +msgstr "" + +#: views.py:152 +#, python-format +msgid "upload a local document from source: %s" +msgstr "" + +#: views.py:182 +#, python-format +msgid "Staging file: %s, uploaded successfully." +msgstr "" + +#: views.py:187 +#, python-format +msgid "Staging file: %s, deleted successfully." +msgstr "" + +#: views.py:209 +#, python-format +msgid "upload a document from staging source: %s" +msgstr "" + +#: views.py:215 +msgid "files in staging path" +msgstr "" + +#: views.py:229 +msgid "Current metadata" +msgstr "" + +#: views.py:265 views.py:284 +#, python-format +msgid "Staging file transformation error: %(error)s" +msgstr "" + +#: views.py:307 +msgid "Staging file delete successfully." +msgstr "" + +#: views.py:309 +#, python-format +msgid "Staging file delete error; %s." +msgstr "" + +#: views.py:368 +msgid "Source edited successfully" +msgstr "" + +#: views.py:371 +#, python-format +msgid "Error editing source; %s" +msgstr "" + +#: views.py:376 +#, python-format +msgid "edit source: %s" +msgstr "" + +#: views.py:381 views.py:421 views.py:483 views.py:524 views.py:554 +#: views.py:597 +msgid "source" +msgstr "" + +#: views.py:410 +#, python-format +msgid "Source \"%s\" deleted successfully." +msgstr "" + +#: views.py:412 +#, python-format +msgid "Error deleting source \"%(source)s\": %(error)s" +msgstr "" + +#: views.py:419 +#, python-format +msgid "Are you sure you wish to delete the source: %s?" +msgstr "" + +#: views.py:451 +msgid "Source created successfully" +msgstr "" + +#: views.py:454 +#, python-format +msgid "Error creating source; %s" +msgstr "" + +#: views.py:459 +#, python-format +msgid "Create new source of type: %s" +msgstr "" + +#: views.py:481 +#, python-format +msgid "transformations for: %s" +msgstr "" + +#: views.py:511 +msgid "Source transformation edited successfully" +msgstr "" + +#: views.py:514 +#, python-format +msgid "Error editing source transformation; %s" +msgstr "" + +#: views.py:519 +#, python-format +msgid "Edit transformation: %s" +msgstr "" + +#: views.py:542 +msgid "Source transformation deleted successfully." +msgstr "" + +#: views.py:544 +#, python-format +msgid "Error deleting source transformation; %(error)s" +msgstr "" + +#: views.py:557 +#, python-format +msgid "" +"Are you sure you wish to delete source transformation \"%(transformation)s\"" +msgstr "" + +#: views.py:587 +msgid "Source transformation created successfully" +msgstr "" + +#: views.py:590 +#, python-format +msgid "Error creating source transformation; %s" +msgstr "" + +#: views.py:599 +#, python-format +msgid "Create new transformation for source: %s" +msgstr "" + + diff --git a/apps/tags/locale/it/LC_MESSAGES/django.mo b/apps/tags/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..34e8cee481 Binary files /dev/null and b/apps/tags/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/tags/locale/it/LC_MESSAGES/django.po b/apps/tags/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..d1a19e1f40 --- /dev/null +++ b/apps/tags/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,267 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:41+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:13 +msgid "Create new tags" +msgstr "" + +#: __init__.py:14 +msgid "Attach exising tags" +msgstr "" + +#: __init__.py:15 +msgid "Remove tags from documents" +msgstr "" + +#: __init__.py:16 +msgid "Delete global tags" +msgstr "" + +#: __init__.py:17 +msgid "Edit global tags" +msgstr "" + +#: __init__.py:18 +msgid "View a document's tags" +msgstr "" + +#: __init__.py:20 +msgid "Tags" +msgstr "" + +#: __init__.py:28 +msgid "tag list" +msgstr "" + +#: __init__.py:29 +msgid "create new tag" +msgstr "" + +#: __init__.py:30 +msgid "attach tag" +msgstr "" + +#: __init__.py:31 __init__.py:32 +msgid "remove" +msgstr "" + +#: __init__.py:33 __init__.py:58 utils.py:14 views.py:144 +msgid "tags" +msgstr "" + +#: __init__.py:34 __init__.py:37 +msgid "delete" +msgstr "" + +#: __init__.py:35 +msgid "edit" +msgstr "" + +#: __init__.py:36 +msgid "tagged documents" +msgstr "" + +#: __init__.py:41 models.py:46 +msgid "color" +msgstr "" + +#: __init__.py:45 +msgid "color name" +msgstr "" + +#: forms.py:14 +msgid "New tag" +msgstr "" + +#: forms.py:15 forms.py:24 +msgid "Color" +msgstr "" + +#: forms.py:16 +msgid "Existing tags" +msgstr "" + +#: forms.py:23 +msgid "Name" +msgstr "" + +#: models.py:18 +msgid "Blue" +msgstr "" + +#: models.py:19 +msgid "Cyan" +msgstr "" + +#: models.py:20 +msgid "Coral" +msgstr "" + +#: models.py:21 +msgid "Green-Yellow" +msgstr "" + +#: models.py:22 +msgid "Khaki" +msgstr "" + +#: models.py:23 +msgid "LightGrey" +msgstr "" + +#: models.py:24 +msgid "Magenta" +msgstr "" + +#: models.py:25 +msgid "Red" +msgstr "" + +#: models.py:26 +msgid "Orange" +msgstr "" + +#: models.py:27 +msgid "Yellow" +msgstr "" + +#: models.py:45 views.py:185 views.py:233 views.py:248 +msgid "tag" +msgstr "" + +#: models.py:49 +msgid "tag properties" +msgstr "" + +#: models.py:50 +msgid "tags properties" +msgstr "" + +#: views.py:33 +msgid "Tag already exists." +msgstr "" + +#: views.py:40 +msgid "Tag created succesfully." +msgstr "" + +#: views.py:46 +msgid "create tag" +msgstr "" + +#: views.py:73 views.py:112 +msgid "Must choose either a new tag or an existing one." +msgstr "" + +#: views.py:77 views.py:116 +#, python-format +msgid "Document is already tagged as \"%s\"" +msgstr "" + +#: views.py:86 +#, python-format +msgid "Tag \"%s\" added successfully." +msgstr "" + +#: views.py:124 +#, python-format +msgid "Tag \"%s\" added and attached successfully." +msgstr "" + +#: views.py:126 +#, python-format +msgid "Tag \"%s\" attached successfully." +msgstr "" + +#: views.py:133 +#, python-format +msgid "attach tag to: %s" +msgstr "" + +#: views.py:149 +msgid "tagged items" +msgstr "" + +#: views.py:166 views.py:280 +msgid "Must provide at least one tag." +msgstr "" + +#: views.py:176 +#, python-format +msgid "Tag \"%s\" deleted successfully." +msgstr "" + +#: views.py:178 views.py:294 +#, python-format +msgid "Error deleting tag \"%(tag)s\": %(error)s" +msgstr "" + +#: views.py:193 +#, python-format +msgid "Are you sure you wish to delete the tag: %s?" +msgstr "" + +#: views.py:194 views.py:197 +msgid "Will be removed from all documents." +msgstr "" + +#: views.py:196 +#, python-format +msgid "Are you sure you wish to delete the tags: %s?" +msgstr "" + +#: views.py:221 +msgid "Tag updated succesfully." +msgstr "" + +#: views.py:230 +#, python-format +msgid "edit tag: %s" +msgstr "" + +#: views.py:245 +#, python-format +msgid "documents with the tag \"%s\"" +msgstr "" + +#: views.py:258 +#, python-format +msgid "tags for: %s" +msgstr "" + +#: views.py:292 +#, python-format +msgid "Tag \"%s\" removed successfully." +msgstr "" + +#: views.py:308 +#, python-format +msgid "Are you sure you wish to remove the tag: %s?" +msgstr "" + +#: views.py:310 +#, python-format +msgid "Are you sure you wish to remove the tags: %s?" +msgstr "" + +#: templatetags/tags_tags.py:17 +msgid "Add tag to document" +msgstr "" + + diff --git a/apps/user_management/locale/it/LC_MESSAGES/django.mo b/apps/user_management/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..72cbfdd28e Binary files /dev/null and b/apps/user_management/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/user_management/locale/it/LC_MESSAGES/django.po b/apps/user_management/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..5e5ae7a353 --- /dev/null +++ b/apps/user_management/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,254 @@ +# 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: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-09-30 04:55+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: __init__.py:8 +msgid "Create new users" +msgstr "" + +#: __init__.py:9 +msgid "Edit existing users" +msgstr "" + +#: __init__.py:10 +msgid "View existing users" +msgstr "" + +#: __init__.py:11 +msgid "Delete existing users" +msgstr "" + +#: __init__.py:13 +msgid "Create new groups" +msgstr "" + +#: __init__.py:14 +msgid "Edit existing groups" +msgstr "" + +#: __init__.py:15 +msgid "View existing groups" +msgstr "" + +#: __init__.py:16 +msgid "Delete existing groups" +msgstr "" + +#: __init__.py:18 +msgid "User management" +msgstr "" + +#: __init__.py:28 +msgid "user list" +msgstr "" + +#: __init__.py:29 views.py:31 +msgid "users" +msgstr "" + +#: __init__.py:30 __init__.py:39 +msgid "edit" +msgstr "" + +#: __init__.py:31 views.py:92 +msgid "create new user" +msgstr "" + +#: __init__.py:32 __init__.py:33 __init__.py:41 __init__.py:42 +msgid "delete" +msgstr "" + +#: __init__.py:34 __init__.py:35 +msgid "reset password" +msgstr "" + +#: __init__.py:37 +msgid "group list" +msgstr "" + +#: __init__.py:38 views.py:222 +msgid "groups" +msgstr "" + +#: __init__.py:40 views.py:270 +msgid "create new group" +msgstr "" + +#: __init__.py:43 views.py:226 +msgid "members" +msgstr "" + +#: forms.py:13 +msgid "New password" +msgstr "" + +#: forms.py:14 +msgid "Confirm password" +msgstr "" + +#: views.py:35 +msgid "full name" +msgstr "" + +#: views.py:39 +msgid "email" +msgstr "" + +#: views.py:43 +msgid "active" +msgstr "" + +#: views.py:58 +msgid "" +"Super user and staff user editing is not allowed, use the admin interface " +"for these cases." +msgstr "" + +#: views.py:65 +#, python-format +msgid "User \"%s\" updated successfully." +msgstr "" + +#: views.py:71 +#, python-format +msgid "edit user: %s" +msgstr "" + +#: views.py:74 views.py:130 views.py:193 +msgid "user" +msgstr "" + +#: views.py:86 +#, python-format +msgid "User \"%s\" created successfully." +msgstr "" + +#: views.py:108 views.py:162 +msgid "Must provide at least one user." +msgstr "" + +#: views.py:118 +msgid "" +"Super user and staff user deleting is not allowed, use the admin interface " +"for these cases." +msgstr "" + +#: views.py:121 +#, python-format +msgid "User \"%s\" deleted successfully." +msgstr "" + +#: views.py:123 +#, python-format +msgid "Error deleting user \"%(user)s\": %(error)s" +msgstr "" + +#: views.py:138 +#, python-format +msgid "Are you sure you wish to delete the user: %s?" +msgstr "" + +#: views.py:140 +#, python-format +msgid "Are you sure you wish to delete the users: %s?" +msgstr "" + +#: views.py:173 +msgid "Passwords do not match, try again." +msgstr "" + +#: views.py:178 +msgid "" +"Super user and staff user password reseting is not allowed, use the admin " +"interface for these cases." +msgstr "" + +#: views.py:182 +#, python-format +msgid "Successfull password reset for user: %s." +msgstr "" + +#: views.py:184 +#, python-format +msgid "Error reseting password for user \"%(user)s\": %(error)s" +msgstr "" + +#: views.py:200 +#, python-format +msgid "Reseting password for user: %s" +msgstr "" + +#: views.py:202 +#, python-format +msgid "Reseting password for users: %s" +msgstr "" + +#: views.py:243 +#, python-format +msgid "Group \"%s\" updated successfully." +msgstr "" + +#: views.py:249 +#, python-format +msgid "edit group: %s" +msgstr "" + +#: views.py:252 views.py:305 views.py:350 +msgid "group" +msgstr "" + +#: views.py:264 +#, python-format +msgid "Group \"%s\" created successfully." +msgstr "" + +#: views.py:286 +msgid "Must provide at least one group." +msgstr "" + +#: views.py:296 +#, python-format +msgid "Group \"%s\" deleted successfully." +msgstr "" + +#: views.py:298 +#, python-format +msgid "Error deleting group \"%(group)s\": %(error)s" +msgstr "" + +#: views.py:313 +#, python-format +msgid "Are you sure you wish to delete the group: %s?" +msgstr "" + +#: views.py:315 +#, python-format +msgid "Are you sure you wish to delete the groups: %s?" +msgstr "" + +#: views.py:345 +#, python-format +msgid "non members of group: %s" +msgstr "" + +#: views.py:346 +#, python-format +msgid "members of group: %s" +msgstr "" + + diff --git a/apps/web_theme/locale/it/LC_MESSAGES/django.mo b/apps/web_theme/locale/it/LC_MESSAGES/django.mo new file mode 100644 index 0000000000..dec8509d24 Binary files /dev/null and b/apps/web_theme/locale/it/LC_MESSAGES/django.mo differ diff --git a/apps/web_theme/locale/it/LC_MESSAGES/django.po b/apps/web_theme/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000000..69086d2e50 --- /dev/null +++ b/apps/web_theme/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,76 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: Mayan EDMS\n" +"Report-Msgid-Bugs-To: http://github.com/rosarior/mayan/issues\n" +"POT-Creation-Date: 2011-11-22 11:26-0400\n" +"PO-Revision-Date: 2011-11-03 21:42+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.net/projects/p/mayan-edms/team/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" + +#: conf/settings.py:10 +msgid "" +"CSS theme to apply, options are: amro, bec, bec-green, blue, default, djime-" +"cerulean, drastic-dark, kathleene, olive, orange, red, reidb-greenish and " +"warehouse." +msgstr "" + +#: conf/settings.py:12 +msgid "Display extra information in the login screen." +msgstr "" + +#: templates/web_theme_base.html:101 +msgid "dismiss all notifications" +msgstr "" + +#: templates/web_theme_base.html:101 +msgid "close all" +msgstr "" + +#: templates/web_theme_base.html:102 +msgid "dismiss this notification" +msgstr "" + +#: templates/web_theme_base.html:102 +msgid "close" +msgstr "" + +#: templates/web_theme_login.html:12 templates/web_theme_login.html.py:33 +msgid "Login" +msgstr "" + +#: templates/web_theme_login.html:17 +msgid "You are already logged in" +msgstr "" + +#: templates/web_theme_login.html:20 +msgid "Redirecting you to the website entry point in 5 seconds." +msgstr "" + +#: templates/web_theme_login.html:23 +#, python-format +msgid "" +"Or click here if redirection doesn't " +"work." +msgstr "" + +#: templates/pagination/pagination.html:6 +#: templates/pagination/pagination.html:8 +msgid "Previous" +msgstr "" + +#: templates/pagination/pagination.html:26 +#: templates/pagination/pagination.html:28 +msgid "Next" +msgstr "" + + diff --git a/docs/changelog.rst b/docs/changelog.rst index d04f4b2407..80d0787351 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,19 +1,22 @@ -2011-12-2 ---------- -* Added migrations and model updated to support document versions - -2011-12-1 ---------- -* OCR queue processing improvements -* Office documents handling improvements -* Text extraction support for office documents -* RTF text documents are now handled as office documents +Version 0.11 +------------ +* Support for signed documents verification added, embedded and detached + signatures are supported. When verifying a document Mayan EDMS will + try to fetch the public key from the list of keyservers provided in the + configuration option SIGNATURES_KEYSERVERS (which defaults to + 'pool.sks-keyservers.net'). A public key management view has been added + to the setup menu as well as a key query and fetching view to manually + import keys from a keyserver. +* Added support for document versions. Users can upload unlimited amount + of versions for a document using a very flexible document version numbering + system, users can also revert to a previous document version. +* OCR queue processing improvements. +* Office documents handling improvements. +* Text extraction support for office documents. +* RTF text documents are now handled as office documents. * Added a view to delete the document image cache, useful when switching - converter backends or doing diagnostics - -2011-11-30 ----------- -* Added South to the requirements + converter backends or doing diagnostics. +* Added South to the requirements. * Merged documents' filename and extension database fiels into a single filename field, filename are store as uploaded not manipulation is done Users with existing data must install South and run the appropiate @@ -22,16 +25,11 @@ $ ./manager syncdb $ ./manage.py migrate documents 0001 --fake $ ./manage.py migrate documents - * Added new office document mimetype * application/vnd.ms-office - * Fixed documents not saving the file encoding - - -2011-11-28 ----------- -* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to IHLeanne for finding this one +* Removed extra slash in ajax-loader.gif URL fixes #15, thanks to + IHLeanne for finding this one Version 0.10.1 @@ -41,6 +39,9 @@ Version 0.10.1 $ pip install --upgrade -r requirements/production.txt to upgrade + +* django-compressor is now disabled by default, users must explicitly + enable it adding COMPRESS_ENABLED=True to their settings_local.py file Version 0.10 diff --git a/docs/conf.py b/docs/conf.py index 2b9ba3a5ff..48200208da 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -48,10 +48,10 @@ copyright = u'2011, Roberto Rosario' # built documents. # # The short X.Y version. -version = '0.10.1' +version = '0.11.1' # The full version, including alpha/beta/rc tags. -release = '0.10' +release = '0.11.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/contributors.rst b/docs/contributors.rst index cae85f3c13..45689b59da 100644 --- a/docs/contributors.rst +++ b/docs/contributors.rst @@ -38,6 +38,10 @@ Suggestions Translations ------------ -* Emerson Soares (http://emersonsoares.com) -* Renata Oliveira (https://twitter.com/#!/rnataoliveira) -* Сергей Глита [Sergey Glita] (s.v.glita@gmail.com) +* Portuguese + * Emerson Soares (http://emersonsoares.com) + * Renata Oliveira (https://twitter.com/#!/rnataoliveira) +* Russian + * Сергей Глита [Sergey Glita] (s.v.glita@gmail.com) +* Italian + * Pierpaolo Baldan diff --git a/docs/credits.rst b/docs/credits.rst index d56f2c0d93..e0b3e815d6 100644 --- a/docs/credits.rst +++ b/docs/credits.rst @@ -112,3 +112,13 @@ Credits * http://pypi.python.org/pypi/django-taggit * Image 392336_7079 (stock exchange) + +* djangorestframework + +* South + +* python-gnupg + +* python-hkp + + diff --git a/docs/features.rst b/docs/features.rst index 75360e15f6..e272d75e40 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -2,6 +2,23 @@ Features ======== + +* Document versioning. + + * Store many versions of the same document, download or revert to a previous version. + +* Electronic signature verification. + + * Check the authenticity of documents by verifying their embedded cryptographic signatures or upload detached signatures for document signed after they were stored. + +* Collaboration tools. + + * Discuss documents, comment on new version of a document. + +* Office document format support. + + * Word processing files? Spreadsheets? Sresentations? They are supported too. + * User defined metadata fields and meta data sets. * Metadata fields can be grouped into sets per technical, legal or structural requirements such as the `Dublin core`_ @@ -27,18 +44,28 @@ Features * Local file or server side file uploads. * Batch upload many documents with the same metadata. + + * Clone a document's metadata for speedier uploads and eliminate repetitive data entry. + * Previews for a great deal of image formats, including PDF. * **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments. * Full text searching. + + * Document can be searched by their text content, their metadata or any other file attribute such as name, extension, etc. + * Configurable document grouping. * Automatic linking of documents based on metadata values or document properties. -* Permissions and roles support. +* Roles support. - * User can created many different roles and are not limited to the traditional limited admin, operator, guest paradigm. + * Users can created an unlimited amount of different roles and are not restricted to the traditional admin, operator, guest paradigm. + +* Fine grained permissions system. + + * There is a permission for every atomic operation performed by users. * Multi page document support. @@ -55,7 +82,19 @@ Features .. _Django: https://www.djangoproject.com/ * Multilingual OCR support. + + * *As supported by the OCR engine tesseract. + * Duplicated document search. + * Plugable storage backends (File based and GridFS included). + + * Very easy to convert other 3rd party such as the ones available for Amazon EC2. + * Color coded tagging. + + * Labeled and color coded tags that are intituitive. + * Staging folders to receive scanned documents directly from network attached scanners. + + * Preview scanned files even before uploading them. diff --git a/docs/index.rst b/docs/index.rst index 2f2f9d96fd..5c115df121 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -43,7 +43,6 @@ Contents settings updates development - technical contributors credits faq diff --git a/docs/requirements.rst b/docs/requirements.rst index 1ba97459bc..665b9ba641 100644 --- a/docs/requirements.rst +++ b/docs/requirements.rst @@ -23,6 +23,7 @@ Executables: * ``tesseract-ocr`` - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. * ``unpaper`` - post-processing scanned and photocopied book pages +* ``gpg`` - The GNU Privacy Guard Optional requirements ===================== diff --git a/docs/settings.rst b/docs/settings.rst index 0f95b103d4..323bf84405 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -88,6 +88,8 @@ Documents Default: ``image_cache`` (relative to the installation path) + The path where the visual representations of the documents are stored for fast display. + Converter --------- @@ -128,19 +130,32 @@ Converter Graphics conversion backend to use. Options are: ``converter.backends.imagemagick``, ``converter.backends.graphicsmagick`` and ``converter.backends.python``. + Suggested options: ``-limit files 1 -limit memory 1GB -limit map 2GB -density 200`` + .. data:: CONVERTER_UNOCONV_PATH Default: ``/usr/bin/unoconv`` + Path to the unoconv program. -Grouping ---------- - -.. data:: GROUPING_SHOW_EMPTY_GROUPS + +.. data:: CONVERTER_UNOCONV_USE_PIPE Default: ``True`` + Use alternate method of connection to LibreOffice using a pipe, it is slower but less prone to segmentation faults. + + +Linking +------- + +.. data:: LINKING_SHOW_EMPTY_SMART_LINKS + + Default: ``True`` + + Show smart links even when they don't return any documents. + Storage ------- @@ -224,7 +239,7 @@ OCR .. data:: OCR_REPLICATION_DELAY - Default: ``10`` + Default: ``0`` Amount of seconds to delay OCR of documents to allow for the node's storage replication overhead. @@ -384,3 +399,13 @@ User management Default: ``[]`` A list of existing roles that are automatically assigned to newly created users + + +Signatures +---------- + +.. data:: SIGNATURES_KEYSERVERS + + Default: ``['pool.sks-keyservers.net']`` + + List of keyservers to be queried for unknown keys. diff --git a/misc/compilemessages_all.sh b/misc/compilemessages_all.sh index 5e3c5cf2a7..a6abd085c7 100755 --- a/misc/compilemessages_all.sh +++ b/misc/compilemessages_all.sh @@ -7,108 +7,130 @@ cd $BASE/apps/common $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/converter $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/documents $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/document_comments $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/document_indexing $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/dynamic_search $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/folders $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/history $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/linking $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/main $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/metadata $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/navigation $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/ocr $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/permissions $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/project_setup $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/project_tools $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/smart_settings $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/sources $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/tags $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/user_management $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/web_theme $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it cd $BASE/apps/django_gpg $COMPILEMESSAGES -l pt $COMPILEMESSAGES -l ru $COMPILEMESSAGES -l es +$COMPILEMESSAGES -l it diff --git a/misc/makemessages_all.sh b/misc/makemessages_all.sh index d1e0fcd79e..3cc25f2a01 100755 --- a/misc/makemessages_all.sh +++ b/misc/makemessages_all.sh @@ -8,129 +8,151 @@ $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/converter $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/documents $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/document_comments $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/document_indexing $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/dynamic_search $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/folders $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/history $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/linking $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/main $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/metadata $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/navigation $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/ocr $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/permissions $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/project_setup $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/project_tools $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/smart_settings $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/sources $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/tags $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/user_management $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/web_theme $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it cd $BASE/apps/django_gpg $MAKEMESSAGES -l en $MAKEMESSAGES -l pt $MAKEMESSAGES -l ru $MAKEMESSAGES -l es +$MAKEMESSAGES -l it diff --git a/settings.py b/settings.py index dd4d827cd9..2ff585af7e 100644 --- a/settings.py +++ b/settings.py @@ -53,6 +53,7 @@ LANGUAGES = ( ('es', ugettext('Spanish')), ('pt', ugettext('Portuguese')), ('ru', ugettext('Russian')), + ('it', ugettext('Italian')), ) SITE_ID = 1 @@ -189,6 +190,8 @@ STATICFILES_FINDERS = ( COMPRESS_PARSER = 'compressor.parser.HtmlParser' COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter'] +COMPRESS_ENABLED=False + #===== User configuration options =============== #--------- Pagination ------------------ #PAGINATION_DEFAULT_PAGINATION = 10