From 292a91bf78532d43a81bc528307ded8c6733d130 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 24 Jul 2013 05:08:22 +0200 Subject: [PATCH 01/16] Scroll et shake du message d'alerte. --- skins/ajax_scripts/ajax_form_manager.js | 73 +++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/skins/ajax_scripts/ajax_form_manager.js b/skins/ajax_scripts/ajax_form_manager.js index d91c440..bdea518 100644 --- a/skins/ajax_scripts/ajax_form_manager.js +++ b/skins/ajax_scripts/ajax_form_manager.js @@ -429,6 +429,14 @@ FormManager.prototype.loadResponse = function(req) { onAfterPopulate = eval(onAfterPopulate); } onAfterPopulate(); + this.scrollToPortalMessage(); +}; + +FormManager.prototype.scrollToPortalMessage = function() { + var psm = document.getElementById('DesktopStatusBar'); + var msgOffset = psm.offsetTop; + smoothScroll(window.scrollY, msgOffset); + shake(psm, 10, 1000); }; FormManager.prototype._fitField = function(evt) { @@ -450,4 +458,69 @@ function initForms(baseElement, lazy) { } } +function smoothScroll(from, to) { + var intervalId; + var step = 25; + var pos = from; + var dir; + if (to > from) { + dir = 1; + } + else { + dir = -1; + } + + var jump = function() { + window.scroll(0, pos); + pos = pos + step * dir; + if ((dir === 1 && pos >= to) || + (dir === -1 && pos <= to)) { + window.clearInterval(intervalId); + window.scroll(0, to); + } + } + intervalId = window.setInterval(jump, 10); +} + +/* adapted from http://xahlee.info/js/js_shake_box.html */ +function shake(e, distance, time) { + // Handle arguments + if (!time) time = 500; + if (!distance) distance = 5; + + // Save the original style of e, Make e relatively positioned, Note the animation start time, Start the animation + var originalStyle = e.style.cssText; + e.style.position = "relative"; + var start = (new Date()).getTime(); + animate(); + + // This function checks the elapsed time and updates the position of e. + // If the animation is complete, it restores e to its original state. + // Otherwise, it updates e's position and schedules itself to run again. + function animate() { + var now = (new Date()).getTime(); + // Get current time + var elapsed = now-start; + // How long since we started + var fraction = elapsed/time; + // What fraction of total time? + if (fraction < 1) { + // If the animation is not yet complete + // Compute the x position of e as a function of animation + // completion fraction. We use a sinusoidal function, and multiply + // the completion fraction by 4pi, so that it shakes back and + // forth twice. + var x = distance * Math.sin(fraction*8*Math.PI); + e.style.left = x + "px"; + // Try to run again in 25ms or at the end of the total time. + // We're aiming for a smooth 40 frames/second animation. + setTimeout(animate, Math.min(25, time-elapsed)); + } + else { + // Otherwise, the animation is complete + e.style.cssText = originalStyle // Restore the original style + } + } +} + }()); -- 2.20.1 From eda66a51fdc314fc63a13c5a81de440216a87c5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 24 Jul 2013 05:17:12 +0200 Subject: [PATCH 02/16] Corrections syntaxiques. --- skins/ajax_scripts/ajax_form_manager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skins/ajax_scripts/ajax_form_manager.js b/skins/ajax_scripts/ajax_form_manager.js index bdea518..03ebdd8 100644 --- a/skins/ajax_scripts/ajax_form_manager.js +++ b/skins/ajax_scripts/ajax_form_manager.js @@ -478,7 +478,7 @@ function smoothScroll(from, to) { window.clearInterval(intervalId); window.scroll(0, to); } - } + }; intervalId = window.setInterval(jump, 10); } @@ -518,7 +518,7 @@ function shake(e, distance, time) { } else { // Otherwise, the animation is complete - e.style.cssText = originalStyle // Restore the original style + e.style.cssText = originalStyle; // Restore the original style } } } -- 2.20.1 From 05761d9410d995e6602bd5d5f6e45d9dabbdd9b9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 14:03:05 +0200 Subject: [PATCH 03/16] =?utf8?q?La=20concat=C3=A9nation=20va=20=C3=AAtre?= =?utf8?q?=20faite=20au=20dernier=20moment.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- locales/plinn.pot | 872 ---------------------------------------------- 1 file changed, 872 deletions(-) diff --git a/locales/plinn.pot b/locales/plinn.pot index 845156d..d702b38 100644 --- a/locales/plinn.pot +++ b/locales/plinn.pot @@ -1242,875 +1242,3 @@ msgstr "" msgid "Plain text" msgstr "" -# from plinn-manual - -msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" -msgstr "" - -msgid "1 Day" -msgstr "" - -msgid "2 Days" -msgstr "" - -msgid "5 Days" -msgstr "" - -msgid "1 Week" -msgstr "" - -msgid "2 Weeks" -msgstr "" - -msgid "1 Month" -msgstr "" - -msgid "3 Months" -msgstr "" - -msgid "6 Months" -msgstr "" - -msgid "1 Year" -msgstr "" - -msgid "2 years" -msgstr "" - -msgid "Action Box Block" -msgstr "" - -msgid "Action box settings" -msgstr "" - -msgid "Activity block" -msgstr "" - -msgid "Add a document..." -msgstr "" - -msgid "Add an activity" -msgstr "" - -msgid "Add node" -msgstr "" - -msgid "Advanced search" -msgstr "" - -msgid "Anonymous registration" -msgstr "" - -msgid "Appointment" -msgstr "" - -msgid "Append Roles" -msgstr "" - -msgid "Append or remove groups" -msgstr "" - -msgid "Append or remove members" -msgstr "" - -msgid "April" -msgstr "" - -msgid "April_abbr" -msgstr "" - -msgid "Assign local roles: Search Members" -msgstr "" - -msgid "Assign local roles: Search Results" -msgstr "" - -msgid "August" -msgstr "" - -msgid "August_abbr" -msgstr "" - -msgid "B" -msgstr "" - -msgid "Backlinks" -msgstr "" - -msgid "Base folder of members' folders" -msgstr "" - -msgid "Box title:" -msgstr "" - -msgid "catalog_index_allowedRolesAndUsers" -msgstr "" - -msgid "catalog_index_created" -msgstr "" - -msgid "catalog_index_Creator" -msgstr "" - -msgid "catalog_index_Date" -msgstr "" - -msgid "catalog_index_DateTimeOriginal" -msgstr "" - -msgid "catalog_index_Description" -msgstr "" - -msgid "catalog_index_effective" -msgstr "" - -msgid "catalog_index_expires" -msgstr "" - -msgid "catalog_index_fTitle" -msgstr "" - -msgid "catalog_index_getId" -msgstr "" - -msgid "catalog_index_listCreators" -msgstr "" - -msgid "catalog_index_modified" -msgstr "" - -msgid "catalog_index_path" -msgstr "" - -msgid "catalog_index_portal_type" -msgstr "" - -msgid "catalog_index_review_state" -msgstr "" - -msgid "catalog_index_SearchableText" -msgstr "" - -msgid "catalog_index_Subject" -msgstr "" - -msgid "catalog_index_Title" -msgstr "" - -msgid "Categories:" -msgstr "" - -msgid "Change" -msgstr "" - -msgid "Change image:" -msgstr "" - -msgid "Click here to modify roles..." -msgstr "" - -msgid "Click to get raw image" -msgstr "" - -msgid "Click to see image full-size" -msgstr "" - -msgid "Close" -msgstr "" - -msgid "Collapse" -msgstr "" - -msgid "Comment" -msgstr "" - -msgid "Configure ${portal_calendar} Tool" -msgstr "" - -msgid "Container block" -msgstr "" - -msgid "Contributor" -msgstr "" - -msgid "Convention" -msgstr "" - -msgid "Copy" -msgstr "" - -msgid "Create a mosaic document" -msgstr "" - -msgid "Saved changes." -msgstr "" - -msgid "Import a photo zipped file" -msgstr "" - -msgid "send_email" -msgstr "" - -msgid "Set Mapping" -msgstr "" - -msgid "shared_submit" -msgstr "" - -msgid "sort_by_index_created" -msgstr "" - -msgid "sort_by_index_DateTimeOriginal" -msgstr "" - -msgid "Criteria" -msgstr "" - -msgid "coordonateur" -msgstr "" - -msgid "Currently assigned local roles" -msgstr "" - -msgid "DateTimeOriginal" -msgstr "" - -msgid "Day" -msgstr "" - -msgid "December" -msgstr "" - -msgid "December_abbr" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "depublish" -msgstr "" - -msgid "depublish_to_private" -msgstr "" - -msgid "depublish_to_shared" -msgstr "" - -msgid "Direct_publish" -msgstr "" - -msgid "Directories" -msgstr "" - -msgid "Do you realy want to delete ?" -msgstr "" - -msgid "confirm_layer_delete" -msgstr "" - -msgid "eleve" -msgstr "" - -msgid "Empty image: upload an image file in \"Edit\" tab." -msgstr "" - -msgid "ExifImageWidth" -msgstr "" - -msgid "ExifImageHeight" -msgstr "" - -msgid "Expand" -msgstr "" - -msgid "Export as zip" -msgstr "" - -msgid "ExposureTime" -msgstr "" - -msgid "February" -msgstr "" - -msgid "February_abbr" -msgstr "" - -msgid "File" -msgstr "" - -msgid "File Block" -msgstr "" - -msgid "Filter (meta_type list) :" -msgstr "" - -msgid "FNumber" -msgstr "" - -msgid "FocalLength" -msgstr "" - -msgid "Folder contents" -msgstr "" - -msgid "Folders are created upon first login." -msgstr "" - -msgid "Fri" -msgstr "" - -msgid "Friday" -msgstr "" - -msgid "Friendly Date Criterion" -msgstr "" - -msgid "Global actions" -msgstr "" - -msgid "Group folder area" -msgstr "" - -msgid "Group's roles settings" -msgstr "" - -msgid "GroupManager" -msgstr "" - -msgid "Height:" -msgstr "" - -msgid "History" -msgstr "" - -msgid "Image block" -msgstr "" - -msgid "Implicitly member of groups" -msgstr "" - -msgid "Import" -msgstr "" - -msgid "Insert file" -msgstr "" - -msgid "Insert image" -msgstr "" - -msgid "Insert inside text" -msgstr "" - -msgid "Insert new block:" -msgstr "" - -msgid "Integer Criterion" -msgstr "" - -msgid "ISOSpeedRatings" -msgstr "" - -msgid "January" -msgstr "" - -msgid "January_abbr" -msgstr "" - -msgid "July" -msgstr "" - -msgid "July_abbr" -msgstr "" - -msgid "June" -msgstr "" - -msgid "June_abbr" -msgstr "" - -msgid "immediately" -msgstr "" - -msgid "KB" -msgstr "" - -msgid "lang_iso" -msgstr "" - -msgid "Layer" -msgstr "" - -msgid "Left boxes" -msgstr "" - -msgid "List Criterion" -msgstr "" - -msgid "List Folder" -msgstr "" - -msgid "List parent folder" -msgstr "" - -msgid "Listen" -msgstr "" - -msgid "Loading progress..." -msgstr "" - -msgid "Local Roles" -msgstr "" - -msgid "MB" -msgstr "" - -msgid "make_private" -msgstr "" - -msgid "Manage Groups" -msgstr "" - -msgid "Manage boxes" -msgstr "" - -msgid "Manage group's datas" -msgstr "" - -msgid "Manage group's members" -msgstr "" - -msgid "Manage portal's groups" -msgstr "" - -msgid "Manage portal's members" -msgstr "" - -msgid "Manager" -msgstr "" - -msgid "March" -msgstr "" - -msgid "March_abbr" -msgstr "" - -msgid "May" -msgstr "" - -msgid "May_abbr" -msgstr "" - -msgid "Meeting" -msgstr "" - -msgid "Member" -msgstr "" - -msgid "Members" -msgstr "" - -msgid "Members folder id" -msgstr "" - -msgid "Member of groups" -msgstr "" - -msgid "Member properties" -msgstr "" - -msgid "member_creation_area_explanations" -msgstr "" - -msgid "member_creation_area_title" -msgstr "" - -msgid "Membership role mappings" -msgstr "" - -msgid "membership_role_mapping_explanations" -msgstr "" - -msgid "Metadata" -msgstr "" - -msgid "Sort Criterion" -msgstr "" - -msgid "sort_by_index_modified" -msgstr "" - -msgid "Modify" -msgstr "" - -msgid "Mon" -msgstr "" - -msgid "Monday" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "never" -msgstr "" - -msgid "New layer" -msgstr "" - -msgid "No document" -msgstr "" - -msgid "Node block" -msgstr "" - -msgid "November" -msgstr "" - -msgid "November_abbr" -msgstr "" - -msgid "Now" -msgstr "" - -msgid "Number of br:" -msgstr "" - -msgid "October" -msgstr "" - -msgid "October_abbr" -msgstr "" - -msgid "Owner" -msgstr "" - -msgid "person selected" -msgstr "" - -msgid "persons selected" -msgstr "" - -msgid "Play" -msgstr "" - -msgid "Portal manager registration" -msgstr "" - -msgid "Portal Role" -msgstr "" - -msgid "Portlets" -msgstr "" - -msgid "Preview..." -msgstr "" - -msgid "private_submit" -msgstr "" - -msgid "Properties of: ${memberFullName}" -msgstr "" - -msgid "publish" -msgstr "" - -msgid "Reader" -msgstr "" - -msgid "Right boxes" -msgstr "" - -msgid "Remove layer" -msgstr "" - -msgid "Reply..." -msgstr "" - -msgid "Represent a simple field-match for a string value." -msgstr "" - -msgid "retract_to_private" -msgstr "" - -msgid "retract_to_shared" -msgstr "" - -msgid "Reviewed registration" -msgstr "" - -msgid "Reviewer" -msgstr "" - -msgid "Role(s)" -msgstr "" - -msgid "Role mapping mismatch : click Validate to solve this problem !" -msgstr "" - -msgid "Roles to assign:" -msgstr "" - -msgid "Root object expression:" -msgstr "" - -msgid "Sat" -msgstr "" - -msgid "Saturday" -msgstr "" - -msgid "Search" -msgstr "" - -msgid "Search by" -msgstr "" - -msgid "Search Term" -msgstr "" - -msgid "Section block" -msgstr "" - -msgid "Select date indexes" -msgstr "" - -msgid "Select default time range displayed in calendar week view" -msgstr "" - -msgid "Select member area folder type to construct:" -msgstr "" - -msgid "Select Member(s) and a role(s) to assign:" -msgstr "" - -msgid "Select registration mode" -msgstr "" - -msgid "September" -msgstr "" - -msgid "September_abbr" -msgstr "" - -msgid "Set Roles" -msgstr "" - -msgid "share" -msgstr "" - -msgid "Show layer" -msgstr "" - -msgid "Slide show" -msgstr "" - -msgid "Social Event" -msgstr "" - -msgid "Sorry, no members matched your search." -msgstr "" - -msgid "Source file:" -msgstr "" - -msgid "Spacer block" -msgstr "" - -msgid "(start and end time in hour)" -msgstr "" - -msgid "Status history" -msgstr "" - -msgid "Stop" -msgstr "" - -msgid "String Criterion" -msgstr "" - -msgid "Sun" -msgstr "" - -msgid "Sunday" -msgstr "" - -msgid "Text block" -msgstr "" - -msgid "These users currently have local roles assigned in this folder:" -msgstr "" - - -msgid "This folder has to be in the same container as the membership tool." -msgstr "" - -msgid "Thu" -msgstr "" - -msgid "Thursday" -msgstr "" - -msgid "Title :" -msgstr "" - -msgid "Tree Box Block" -msgstr "" - -msgid "Tree box settings" -msgstr "" - -msgid "Tree viewed by: ${memberFullName}" -msgstr "" - -msgid "Tue" -msgstr "" - -msgid "Tuesday" -msgstr "" - -msgid "Turn folder creation off" -msgstr "" - -msgid "Turn folder creation on" -msgstr "" - -msgid "Two images block" -msgstr "" - -msgid "Upload" -msgstr "" - -msgid "User" -msgstr "" - -msgid "User Folder-defined Role" -msgstr "" - -msgid "UserManager" -msgstr "" - -msgid "Untitled-" -msgstr "" - -msgid "Validate pending documents" -msgstr "" - -msgid "Visitor" -msgstr "" - -msgid "View" -msgstr "" - -msgid "View history" -msgstr "" - -msgid "View local roles" -msgstr "" - -msgid "Wed" -msgstr "" - -msgid "Wednesday" -msgstr "" - -msgid "Width:" -msgstr "" - -msgid "width / height:" -msgstr "" - -msgid "Work" -msgstr "" - -msgid "Workflow chain" -msgstr "" - -msgid "You are not allowed to delete: " -msgstr "" - -msgid "collaborator" -msgstr "" - -msgid "collapse" -msgstr "" - -msgid "expand" -msgstr "" - -msgid "file type:" -msgstr "" - -msgid "Hide layer" -msgstr "" - -msgid "Home" -msgstr "" - -msgid "name" -msgstr "" - -msgid "No Folders are created." -msgstr "" - -msgid "" -"Put a friendly interface on date range searches, like 'where effective " -"date is less than 5 days old'." -msgstr "" - -msgid "" -"Represent a criterion which is a list of values (for an 'OR' search)." -msgstr "" - -msgid "" -"Represent a simple field-match for an integer value, including catalog " -"range searches." -msgstr "" - -msgid "" -"Represent a mock criterion, to allow spelling the sort order and reversal " -"items in a catalog query." -msgstr "" - -msgid "" -"WARNING: The current portal type is unknown. You must change the value to " -"enable the member area creation." -msgstr "" - -msgid "Approve" -msgstr "" - -msgid "approved" -msgstr "" - -msgid "Disapprove" -msgstr "" - -msgid "pending" -msgstr "" - -msgid "private" -msgstr "" - -msgid "items matching" -msgstr "" - -msgid "item matching" -msgstr "" - -msgid "mail_to" -msgstr "" - -msgid "mail_cc" -msgstr "" - -msgid "mail_bcc" -msgstr "" -- 2.20.1 From 667f7af1aa8ad5a69af7d5d93c35e495db295ddb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 14:22:32 +0200 Subject: [PATCH 04/16] =?utf8?q?Mise=20=C3=A0=20jour=20du=20syst=C3=A8me?= =?utf8?q?=20de=20localisation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- compile-i18n.sh | 4 + locales/en/LC_MESSAGES/plinn.po | 1078 ++++++++++------- locales/fr/LC_MESSAGES/plinn.po | 1034 +++++++++-------- locales/plinn-manual.pot | 3 - locales/plinn.pot | 1918 +++++++++++++++++++++++-------- update-i18n.sh | 9 + 6 files changed, 2645 insertions(+), 1401 deletions(-) create mode 100755 compile-i18n.sh create mode 100755 update-i18n.sh diff --git a/compile-i18n.sh b/compile-i18n.sh new file mode 100755 index 0000000..6b84d39 --- /dev/null +++ b/compile-i18n.sh @@ -0,0 +1,4 @@ +#! /bin/sh + +msgfmt -o locales/fr/LC_MESSAGES/plinn.mo locales/fr/LC_MESSAGES/plinn.po +msgfmt -o locales/en/LC_MESSAGES/plinn.mo locales/en/LC_MESSAGES/plinn.po diff --git a/locales/en/LC_MESSAGES/plinn.po b/locales/en/LC_MESSAGES/plinn.po index 2937bf6..aa5bd56 100644 --- a/locales/en/LC_MESSAGES/plinn.po +++ b/locales/en/LC_MESSAGES/plinn.po @@ -1,10 +1,11 @@ msgid "" msgstr "" "Project-Id-Version: Plinn 2.0\n" -"POT-Creation-Date: Thu Dec 6 14:58:49 2007\n" +"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" "PO-Revision-Date: 2007-10-17 14:43+0200\n" "Last-Translator: Benoît PIN\n" "Language-Team: CRI http://cri.ensmp.fr\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -15,74 +16,53 @@ msgstr "" "Domain: plinn\n" "X-Is-Fallback-For: en-us\n" -#: profiles/default/actions.xml:102 -msgid "List" -msgstr "List" - -#: profiles/default/actions.xml:11 skins/generic/gruf_macros.pt:250 -#: skins/generic/gruf_macros.pt:365 -msgid "Login" -msgstr "" - -#: profiles/default/actions.xml:116 -msgid "Manage Boxes" -msgstr "" - -#: profiles/default/actions.xml:127 skins/generic/send_email_form.pt:23 -msgid "Send an email" -msgstr "" - -#: profiles/default/actions.xml:138 -msgid "Undo" -msgstr "" - -#: profiles/default/actions.xml:149 -msgid "Configure Portal" -msgstr "" - -#: profiles/default/actions.xml:176 -msgid "Add comment..." +#: n/EmailNotification.py:38 +msgid "Object deleted" msgstr "" -#: profiles/default/actions.xml:190 -msgid "Syndicate" +#: n/Folder.py:162 +msgid "Please rename each listed object." msgstr "" -#: profiles/default/actions.xml:22 -msgid "My stuff" +#: n/MembershipTool.py:406 +msgid "%s's Home" msgstr "" -#: profiles/default/actions.xml:33 -msgid "Add to favorites" +#: n/MembershipTool.py:407 +msgid "%s's front page" msgstr "" -#: profiles/default/actions.xml:44 -msgid "My favorites" +#: n/RegistrationTool.py:217 +msgid "Invalid reset password request." msgstr "" -#: profiles/default/actions.xml:55 -msgid "Preferences" +#: n/RegistrationTool.py:222 +msgid "Invalid userid." msgstr "" -#: profiles/default/actions.xml:66 -msgid "Log out" +#: n/RegistrationTool.py:226 +msgid "Your reset password request has expired. You can ask a new one." msgstr "" -#: profiles/default/actions.xml:77 -msgid "Logged in" +#: n/RegistrationTool.py:235 +msgid "Password successfully resetted." msgstr "" -#: profiles/default/actions.xml:88 -msgid "Join" +#: n/RegistrationTool.py:237 +msgid "\"%s\" username not found." msgstr "" -#: profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:53 -#: profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:53 -#: profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:53 +#: n/profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 msgid "Document state change notificaction" msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:36 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:35 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:35 msgid "" "\n" "You have been registered as a member of \"%(portal_title)s\", which\n" @@ -90,938 +70,1189 @@ msgid "" "the community.\n" msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:44 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:43 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:43 msgid "" "You will receive an other mail with your randomly-generated\n" "password. Once you have logged in with this password, you\n" "may change it to anything you like." msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:56 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:55 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:55 msgid "your registration has been accepted" msgstr "" -#: skins/content/cal_calendar_view.pt:25 +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:51 +msgid "Tracking number" +msgstr "" + +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:55 +msgid "Tracking url" +msgstr "" + +#: n/skins/content/cal_calendar_view.pt:30 msgid "Add a new event..." msgstr "" -#: skins/content/cal_calendar_view.pt:32 skins/content/cal_calendar_view.pt:35 +#: n/skins/content/cal_calendar_view.pt:37 +#: n/skins/content/cal_calendar_view.pt:40 msgid "Remove event..." msgstr "" -#: skins/content/cal_calendar_view.pt:45 +#: n/skins/content/cal_calendar_view.pt:50 msgid "The next click over an event will remove it!" msgstr "" -#: skins/content/cal_calendar_view.pt:46 +#: n/skins/content/cal_calendar_view.pt:51 msgid "Cancel delete mode" msgstr "" -#: skins/content/content_info.pt:16 skins/content/file_info.pt:12 -#: skins/content/list_pending_contents.pt:31 -#: skins/custom_generic/talkback_tree.pt:65 skins/generic/gruf_macros.pt:51 -#: skins/generic/gruf_macros.pt:307 skins/generic/header_widgets.pt:18 -msgid "Title" +#: n/skins/content/changes_history_template.pt:24 +msgid "« later revisions" +msgstr "" + +#: n/skins/content/changes_history_template.pt:28 +msgid "earlier revisions »" +msgstr "" + +#: n/skins/content/changes_history_template.pt:37 +msgid "user" msgstr "" -#: skins/content/content_info.pt:20 skins/content/file_info.pt:20 -msgid "Created" +#: n/skins/content/changes_history_template.pt:63 +#: n/skins/generic/load_revision.py:29 +msgid "nobody" msgstr "" -#: skins/content/content_info.pt:24 skins/content/file_info.pt:24 -msgid "Modified" +#: n/skins/content/changes_history_template.pt:70 +msgid "Compare" msgstr "" -#: skins/content/content_info.pt:9 skins/content/file_info.pt:5 -msgid "Preview:" +#: n/skins/content/changes_history_template.pt:72 +msgid "Please select one revision per column to compare." msgstr "" -#: skins/content/dateCriterionResolvedDescription.py:17 +#: n/skins/content/dateCriterionResolvedDescription.py:15 msgid "search from the beginning of the world until %s" msgstr "" -#: skins/content/dateCriterionResolvedDescription.py:19 +#: n/skins/content/dateCriterionResolvedDescription.py:17 msgid "search from %s and the end of the world" msgstr "" -#: skins/content/dateCriterionResolvedDescription.py:21 +#: n/skins/content/dateCriterionResolvedDescription.py:19 msgid "search between %s and %s" msgstr "" -#: skins/content/file_info.pt:16 -msgid "Type" -msgstr "" - -#: skins/content/file_preview.pt:15 -msgid "No preview available for this file" +#: n/skins/content/folder_notifications_template.pt:23 +#: n/skins/content/topic_edit_template.pt:26 +#: n/skins/custom_content/event_edit_template.pt:135 +#: n/skins/generic/search_results_template.pt:87 +msgid "Save" msgstr "" -#: skins/content/list_pending_contents.pt:23 +#: n/skins/content/list_pending_contents.pt:23 msgid "Pending documents" msgstr "" -#: skins/content/list_pending_contents.pt:37 +#: n/skins/content/list_pending_contents.pt:37 msgid "Submit by:" msgstr "" -#: skins/content/list_pending_contents.pt:42 skins/generic/wf_macros.pt:16 -msgid "Date" -msgstr "" - -#: skins/content/list_pending_contents.pt:52 -#: skins/content/topic_edit_template.pt:32 -#: skins/content/topic_edit_template.pt:40 -#: skins/custom_content/event_edit_template.pt:33 -#: skins/custom_content/event_view.pt:24 -#: skins/custom_content/friendlydatec_editform.pt:12 -#: skins/custom_content/friendlydatec_editform.pt:27 -#: skins/custom_content/friendlydatec_editform.pt:45 -#: skins/custom_content/listc_edit.pt:13 skins/custom_content/listc_edit.pt:26 -#: skins/custom_content/sic_edit.pt:10 skins/custom_content/sic_edit.pt:23 -#: skins/custom_content/sort_edit.pt:12 skins/custom_content/sort_edit.pt:23 -#: skins/custom_content/ssc_edit.pt:12 skins/custom_content/ssc_edit.pt:15 -#: skins/custom_content/topic_view.pt:25 -#: skins/custom_generic/talkback_tree.pt:15 -#: skins/custom_generic/talkback_tree.pt:16 -#: skins/custom_generic/talkback_tree.pt:36 -#: skins/custom_generic/viewThreadsAtBottom.pt:15 -#: skins/generic/calendar_macros.pt:26 skins/generic/calendar_macros.pt:30 -#: skins/generic/calendar_macros.pt:87 skins/generic/calendar_macros.pt:88 -#: skins/generic/gruf_macros.pt:32 skins/generic/gruf_macros.pt:93 -#: skins/generic/gruf_macros.pt:103 skins/generic/gruf_macros.pt:111 -#: skins/generic/gruf_macros.pt:455 skins/generic/gruf_macros.pt:456 -#: skins/generic/gruf_macros.pt:462 skins/generic/header_widgets.pt:189 -#: skins/generic/last_member_logs.pt:1 skins/generic/local_roles_macros.pt:18 -#: skins/generic/local_roles_macros.pt:39 -#: skins/generic/local_roles_macros.pt:44 -#: skins/generic/local_roles_macros.pt:84 -#: skins/generic/local_roles_macros.pt:99 -#: skins/generic/local_roles_macros.pt:122 -#: skins/generic/local_roles_macros.pt:126 -#: skins/generic/local_roles_macros.pt:160 -#: skins/generic/local_roles_macros.pt:174 skins/generic/send_email_form.pt:33 -#: skins/generic/send_email_form.pt:56 skins/generic/tabs.pt:25 -#: skins/generic/tabs.pt:42 skins/generic/wf_macros.pt:27 -msgid "${DYNAMIC_CONTENT}" +#: n/skins/content/no_preview.pt:11 +msgid "No preview available for this file" msgstr "" -#: skins/content/topic_edit_template.pt:12 +#: n/skins/content/topic_edit_template.pt:16 msgid "Reuse criteria from parent:" msgstr "" -#: skins/content/topic_edit_template.pt:13 +#: n/skins/content/topic_edit_template.pt:17 msgid "yes" msgstr "" -#: skins/content/topic_edit_template.pt:14 +#: n/skins/content/topic_edit_template.pt:18 msgid "no" msgstr "" -#: skins/content/topic_edit_template.pt:22 -#: skins/custom_content/event_edit_template.pt:135 -msgid "Save" -msgstr "" - -#: skins/content/topic_edit_template.pt:23 skins/generic/gruf_macros.pt:211 -#: skins/generic/gruf_macros.pt:235 +#: n/skins/content/topic_edit_template.pt:27 +#: n/skins/generic/gruf_macros.pt:211 n/skins/generic/gruf_macros.pt:235 msgid "Remove selected" msgstr "" -#: skins/content/topic_edit_template.pt:26 +#: n/skins/content/topic_edit_template.pt:30 msgid "New criterion:" msgstr "" -#: skins/content/topic_edit_template.pt:29 +#: n/skins/content/topic_edit_template.pt:33 msgid "Name:" msgstr "" -#: skins/content/topic_edit_template.pt:37 +#: n/skins/content/topic_edit_template.pt:41 msgid "Type:" msgstr "" -#: skins/content/topic_edit_template.pt:47 skins/generic/gruf_macros.pt:288 -#: skins/generic/gruf_macros.pt:327 +#: n/skins/content/topic_edit_template.pt:51 +#: n/skins/generic/gruf_macros.pt:288 n/skins/generic/gruf_macros.pt:327 msgid "Add" msgstr "" -#: skins/custom_content/discussionitem_view.pt:23 -msgid "Above in thread:" +#: n/skins/control/restore_revision.py:9 +msgid "%(type)s restored." msgstr "" -#: skins/custom_content/event_edit_template.pt:115 -#: skins/custom_content/event_view.pt:53 skins/generic/gruf_macros.pt:57 -#: skins/generic/gruf_macros.pt:313 skins/generic/header_widgets.pt:24 -msgid "Description" +#: n/skins/control/save_search_as_topic.py:20 +msgid "Topic added." msgstr "" -#: skins/custom_content/event_edit_template.pt:121 -#: skins/custom_content/event_view.pt:29 -msgid "Event URL" +#: n/skins/custom_content/content_status_history.pt:9 +#: n/skins/custom_content/transition_form.pt:46 +msgid "Reviewing history" +msgstr "" + +#: n/skins/custom_content/content_status_history.pt:12 +#: n/skins/custom_content/transition_form.pt:25 +msgid "Current state:" +msgstr "" + +#: n/skins/custom_content/discussionitem_view.pt:24 +msgid "Above in thread:" msgstr "" -#: skins/custom_content/event_edit_template.pt:20 -#: skins/custom_content/event_view.pt:7 +#: n/skins/custom_content/event_edit_template.pt:20 +#: n/skins/custom_content/event_view.pt:11 msgid "Event Name" msgstr "" -#: skins/custom_content/event_edit_template.pt:24 -#: skins/custom_content/event_view.pt:23 +#: n/skins/custom_content/event_edit_template.pt:24 +#: n/skins/custom_content/event_view.pt:27 msgid "Event type" msgstr "" -#: skins/custom_content/event_edit_template.pt:27 -#: skins/custom_content/event_view.pt:13 +#: n/skins/custom_content/event_edit_template.pt:27 +#: n/skins/custom_content/event_view.pt:17 msgid "Location" msgstr "" -#: skins/custom_content/event_edit_template.pt:38 -#: skins/custom_content/event_view.pt:9 +#: n/skins/custom_content/event_edit_template.pt:38 +#: n/skins/custom_content/event_view.pt:13 msgid "Contact Name" msgstr "" -#: skins/custom_content/event_edit_template.pt:44 -#: skins/custom_content/event_view.pt:15 +#: n/skins/custom_content/event_edit_template.pt:44 +#: n/skins/custom_content/event_view.pt:19 msgid "Contact Email" msgstr "" -#: skins/custom_content/event_edit_template.pt:50 -#: skins/custom_content/event_view.pt:25 +#: n/skins/custom_content/event_edit_template.pt:50 +#: n/skins/custom_content/event_view.pt:29 msgid "Contact Phone" msgstr "" -#: skins/custom_content/event_edit_template.pt:67 +#: n/skins/custom_content/event_edit_template.pt:67 msgid "Beginning" msgstr "" -#: skins/custom_content/event_edit_template.pt:78 -#: skins/custom_content/event_edit_template.pt:103 skins/generic/widgets.pt:92 +#: n/skins/custom_content/event_edit_template.pt:78 +#: n/skins/custom_content/event_edit_template.pt:103 +#: n/skins/generic/widgets.pt:94 msgid "" "${month} / ${day} / ${year}  ${hour} :" " ${minute}" msgstr "" -#: skins/custom_content/event_edit_template.pt:92 +#: n/skins/custom_content/event_edit_template.pt:92 msgid "End" msgstr "" -#: skins/custom_content/event_view.pt:40 +#: n/skins/custom_content/event_edit_template.pt:115 +#: n/skins/custom_content/event_view.pt:57 n/skins/generic/gruf_macros.pt:57 +#: n/skins/generic/gruf_macros.pt:313 n/skins/generic/header_widgets.pt:24 +#: n/skins/generic/header_widgets.pt:85 +msgid "Description" +msgstr "" + +#: n/skins/custom_content/event_edit_template.pt:121 +#: n/skins/custom_content/event_view.pt:33 +msgid "Event URL" +msgstr "" + +#: n/skins/custom_content/event_view.pt:44 msgid "Start Date" msgstr "" -#: skins/custom_content/event_view.pt:45 +#: n/skins/custom_content/event_view.pt:49 msgid "Stop Date" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:14 +#: n/skins/custom_content/friendlydatec_editform.pt:14 msgid "At the least:" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:17 +#: n/skins/custom_content/friendlydatec_editform.pt:17 msgid "At the most:" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:20 +#: n/skins/custom_content/friendlydatec_editform.pt:20 msgid "Within the day:" msgstr "" #. Default: "old" -#: skins/custom_content/friendlydatec_editform.pt:37 +#: n/skins/custom_content/friendlydatec_editform.pt:37 msgid "daterange_old" msgstr "" #. Default: "ahead" -#: skins/custom_content/friendlydatec_editform.pt:40 +#: n/skins/custom_content/friendlydatec_editform.pt:40 msgid "daterange_ahead" msgstr "" -#: skins/custom_content/listc_edit.pt:16 +#: n/skins/custom_content/listc_edit.pt:16 msgid "Operator:" msgstr "" -#: skins/custom_content/listc_edit.pt:18 +#: n/skins/custom_content/listc_edit.pt:18 msgid "or" msgstr "" -#: skins/custom_content/listc_edit.pt:21 -#: skins/custom_generic/talkback_tree.pt:29 +#: n/skins/custom_content/listc_edit.pt:21 +#: n/skins/custom_generic/talkback_tree.pt:32 msgid "and" msgstr "" -#: skins/custom_content/sic_edit.pt:15 +#: n/skins/custom_content/sic_edit.pt:15 msgid "Minimum" msgstr "" -#: skins/custom_content/sic_edit.pt:18 +#: n/skins/custom_content/sic_edit.pt:18 msgid "Maximum" msgstr "" -#: skins/custom_content/sic_edit.pt:21 +#: n/skins/custom_content/sic_edit.pt:21 msgid "Min/Max" msgstr "" -#: skins/custom_content/sort_edit.pt:16 +#: n/skins/custom_content/sort_edit.pt:16 msgid "Regular sort" msgstr "" -#: skins/custom_content/sort_edit.pt:20 +#: n/skins/custom_content/sort_edit.pt:20 msgid "Reversed sort" msgstr "" -#: skins/custom_content/topic_view.pt:41 +#: n/skins/custom_content/topic_view.pt:50 msgid "No result" msgstr "" -#: skins/custom_content/topic_view.pt:45 +#: n/skins/custom_content/topic_view.pt:54 msgid "Subtopics" msgstr "" -#: skins/custom_content/topic_view.pt:48 +#: n/skins/custom_content/topic_view.pt:57 msgid "Topic" msgstr "" -#: skins/custom_control/addtoFavorites.py:15 +#: n/skins/custom_content/transition_form.pt:15 +msgid "Transition of ${objectid}." +msgstr "" + +#: n/skins/custom_content/transition_form.pt:18 +msgid "Transition description." +msgstr "" + +#: n/skins/custom_content/transition_form.pt:30 +#: n/skins/generic/wf_macros.pt:19 +msgid "Comments" +msgstr "" + +#: n/skins/custom_content/transition_form.pt:40 +msgid "Transition" +msgstr "" + +#: n/skins/custom_control/addtoFavorites.py:15 msgid "Favorites" msgstr "" -#: skins/custom_control/folder_bottom_control.py:17 +#: n/skins/custom_control/folder_bottom_control.py:17 msgid "%d item moved to bottom.%d items moved to bottom." msgstr "" -#: skins/custom_control/folder_down_control.py:18 +#: n/skins/custom_control/folder_down_control.py:18 msgid "%d item moved down.%d items moved down." msgstr "" -#: skins/custom_control/folder_top_control.py:17 +#: n/skins/custom_control/folder_rename_control.py:13 +msgid "Item renamed." +msgstr "" + +#: n/skins/custom_control/folder_rename_control.py:15 +msgid "Items renamed." +msgstr "" + +#: n/skins/custom_control/folder_rename_control.py:18 +msgid "This item has not been renamed: \"%s\"" +msgstr "" + +#: n/skins/custom_control/folder_rename_control.py:21 +msgid "These items have not been renamed: %s" +msgstr "" + +#: n/skins/custom_control/folder_rename_control.py:24 +msgid "Rename failed." +msgstr "" + +#: n/skins/custom_control/folder_rename_control.py:26 +msgid "Nothing to change." +msgstr "" + +#: n/skins/custom_control/folder_top_control.py:17 msgid "%d item moved to top.%d items moved to top." msgstr "" -#: skins/custom_control/folder_up_control.py:17 +#: n/skins/custom_control/folder_up_control.py:17 msgid "%d item moved up.%d items moved up." msgstr "" -#: skins/custom_generic/folder_contents_template.pt:26 +#: n/skins/custom_generic/folder_contents_template.pt:26 msgid "Up" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:29 +#: n/skins/custom_generic/folder_contents_template.pt:29 msgid "Down" msgstr "" #. Default: "by" -#: skins/custom_generic/folder_contents_template.pt:31 +#: n/skins/custom_generic/folder_contents_template.pt:31 msgid "move_by" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:39 +#: n/skins/custom_generic/folder_contents_template.pt:39 msgid "Top" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:41 +#: n/skins/custom_generic/folder_contents_template.pt:41 msgid "Bottom" msgstr "" -#: skins/custom_generic/mail_password_template.py:30 +#: n/skins/custom_generic/logged_in.py:28 +msgid "Login failure" +msgstr "" + +#: n/skins/custom_generic/logged_in.py:50 +#: n/skins/photo_theme/homepage_dispatcher.py:13 +#: n/skins/photo_theme/homepage_dispatcher.py:16 +#: n/skins/photo_theme/homepage_dispatcher.py:24 +#: n/skins/photo_theme/homepage_dispatcher.py:27 +msgid "Login success" +msgstr "" + +#: n/skins/custom_generic/mail_password_template.py:30 msgid "${portal_title}: Membership reminder" msgstr "" -#: skins/custom_generic/mail_password_template.py:35 -#: skins/custom_generic/registered_notify_template.py:46 +#: n/skins/custom_generic/mail_password_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:46 msgid "" "Your member id and password are: Member ID: ${member_id} Password: " "${password}" msgstr "" -#: skins/custom_generic/mail_password_template.py:37 -#: skins/custom_generic/registered_notify_template.py:48 +#: n/skins/custom_generic/mail_password_template.py:37 +#: n/skins/custom_generic/registered_notify_template.py:48 msgid "You can use this URL to log in:" msgstr "" -#: skins/custom_generic/mail_password_template.py:45 -#: skins/custom_generic/registered_notify_template.py:56 +#: n/skins/custom_generic/mail_password_template.py:45 +#: n/skins/custom_generic/registered_notify_template.py:56 msgid "" "Be aware that this URL might wrap over two lines. If your browser shows an " "error message when you try to access the URL please make sure that you put " "in the complete string." msgstr "" -#: skins/custom_generic/mail_password_template.py:48 +#: n/skins/custom_generic/mail_password_template.py:48 +#: n/skins/generic/load_revision.py:31 n/skins/generic/load_revision.py:38 msgid "%Y/%m/%d at %I:%M:%S %p" msgstr "" -#: skins/custom_generic/mail_password_template.py:50 +#: n/skins/custom_generic/mail_password_template.py:50 msgid "Request made by IP ${ip} at ${time}" msgstr "" -#: skins/custom_generic/main_template_standard.pt:98 +#: n/skins/custom_generic/main_template_standard.pt:95 +#: n/skins/photo_theme/main_template_standard.pt:96 msgid "Skip to content" msgstr "" -#: skins/custom_generic/reconfig_template.pt:112 +#: n/skins/custom_generic/main_template_standard.pt:110 +#: n/skins/custom_generic/talkback_tree.pt:63 +#: n/skins/generic/main_template_ajax.pt:12 +#: n/skins/photo_theme/main_template_standard.pt:118 +msgid "Information" +msgstr "" + +#: n/skins/custom_generic/main_template_standard.pt:111 +#: n/skins/custom_generic/talkback_tree.pt:64 +#: n/skins/generic/main_template_ajax.pt:13 n/skins/generic/widgets.pt:17 +#: n/skins/photo_theme/main_template_standard.pt:119 +#: n/skins/photo_theme/search_results_macros.pt:38 +msgid "${DYNAMIC_CONTENT}" +msgstr "" + +#: n/skins/custom_generic/reconfig_template.pt:79 +msgid "Copyright notice" +msgstr "" + +#: n/skins/custom_generic/reconfig_template.pt:83 +msgid "Copyright notice displayed on the portal footer." +msgstr "" + +#: n/skins/custom_generic/reconfig_template.pt:124 msgid "Default ajax options" msgstr "" -#: skins/custom_generic/reconfig_template.pt:116 +#: n/skins/custom_generic/reconfig_template.pt:128 msgid "Enable handling of all clicks over links" msgstr "" -#: skins/custom_generic/reconfig_template.pt:121 +#: n/skins/custom_generic/reconfig_template.pt:133 msgid "Enable handling of all forms submissions" msgstr "" -#: skins/custom_generic/registered_notify_template.py:30 +#: n/skins/custom_generic/registered_notify_template.py:30 msgid "${portal_title}: Your Membership Information" msgstr "" -#: skins/custom_generic/registered_notify_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:35 msgid "" "You have been registered as a member of \"${portal_title}\", which allows " "you to personalize your view of the website and participate in the community." msgstr "" -#: skins/custom_generic/registered_notify_template.py:39 +#: n/skins/custom_generic/registered_notify_template.py:39 msgid "This describes the purpose of the website:" msgstr "" -#: skins/custom_generic/registered_notify_template.py:44 +#: n/skins/custom_generic/registered_notify_template.py:44 msgid "Visit us at ${portal_url}" msgstr "" -#: skins/custom_generic/talkback_tree.pt:24 +#: n/skins/custom_generic/talkback_tree.pt:27 msgid "by" msgstr "" -#: skins/custom_generic/talkback_tree.pt:33 +#: n/skins/custom_generic/talkback_tree.pt:36 msgid "unknown" msgstr "" #. Default: "at" -#: skins/custom_generic/talkback_tree.pt:34 skins/generic/recent_news.pt:41 +#: n/skins/custom_generic/talkback_tree.pt:37 +#: n/skins/generic/recent_news.pt:43 msgid "at_(date)" msgstr "" -#: skins/custom_generic/talkback_tree.pt:71 +#: n/skins/custom_generic/talkback_tree.pt:74 msgid "Body" msgstr "" -#: skins/custom_generic/talkback_tree.pt:79 skins/generic/gruf_macros.pt:77 -#: skins/generic/gruf_macros.pt:410 skins/generic/header_widgets.pt:32 -#: skins/generic/send_email_form.pt:70 +#: n/skins/custom_generic/talkback_tree.pt:82 +#: n/skins/generic/gruf_macros.pt:77 n/skins/generic/gruf_macros.pt:410 +#: n/skins/generic/header_widgets.pt:32 n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "" -#: skins/custom_generic/talkback_tree.pt:82 +#: n/skins/custom_generic/talkback_tree.pt:85 msgid "Cancel" msgstr "" -#: skins/custom_generic/viewThreadsAtBottom.pt:9 +#: n/skins/custom_generic/viewThreadsAtBottom.pt:10 msgid "Comments:" msgstr "" #. Default: "Previous${number}" -#: skins/generic/batch_macros.pt:21 +#: n/skins/generic/batch_macros.pt:26 msgid "batch_previous_x_items" msgstr "" #. Default: "Next${number}items" -#: skins/generic/batch_macros.pt:27 +#: n/skins/generic/batch_macros.pt:32 msgid "batch_next_x_items" msgstr "" -#: skins/generic/calendar_macros.pt:162 skins/generic/calendar_macros.pt:164 +#: n/skins/generic/calendar_macros.pt:78 n/skins/generic/calendar_macros.pt:81 +#: n/skins/generic/calendar_macros.pt:128 +#: n/skins/generic/calendar_macros.pt:130 +msgid "Click to see hidden items" +msgstr "" + +#: n/skins/generic/calendar_macros.pt:88 +msgid "${dayName} ${monthName} ${dayNumber}" +msgstr "" + +#: n/skins/generic/calendar_macros.pt:159 +#: n/skins/generic/calendar_macros.pt:161 msgid "Previous" msgstr "" -#: skins/generic/calendar_macros.pt:167 +#: n/skins/generic/calendar_macros.pt:164 msgid "Week" msgstr "" -#: skins/generic/calendar_macros.pt:169 +#: n/skins/generic/calendar_macros.pt:166 msgid "Month" msgstr "" -#: skins/generic/calendar_macros.pt:174 skins/generic/calendar_macros.pt:176 +#: n/skins/generic/calendar_macros.pt:171 +#: n/skins/generic/calendar_macros.pt:173 msgid "Next" msgstr "" -#: skins/generic/calendar_macros.pt:79 skins/generic/calendar_macros.pt:82 -#: skins/generic/calendar_macros.pt:131 skins/generic/calendar_macros.pt:133 -msgid "Click to see hidden items" +#: n/skins/generic/content_depublish_form.pt:8 +msgid "Depublish: \"${docTitle}\"" msgstr "" -#: skins/generic/calendar_macros.pt:89 -msgid "${dayName} ${monthName} ${dayNumber}" +#: n/skins/generic/content_depublish_form.pt:10 +msgid "depublish_transition_explanations" msgstr "" -#: skins/generic/content_depublish_form.pt:12 +#: n/skins/generic/content_depublish_form.pt:15 msgid "Select the destination state" msgstr "" -#: skins/generic/content_depublish_form.pt:15 +#: n/skins/generic/content_depublish_form.pt:18 msgid "Private" msgstr "" -#: skins/generic/content_depublish_form.pt:19 +#: n/skins/generic/content_depublish_form.pt:22 msgid "Shared" msgstr "" -#: skins/generic/content_depublish_form.pt:23 +#: n/skins/generic/content_depublish_form.pt:26 msgid "Depublish" msgstr "" -#: skins/generic/content_depublish_form.pt:5 -msgid "Depublish: \"${docTitle}\"" -msgstr "" - -#: skins/generic/content_depublish_form.pt:7 -msgid "depublish_transition_explanations" -msgstr "" - -#: skins/generic/content_make_private_form.pt:10 +#: n/skins/generic/content_make_private_form.pt:10 msgid "Make private: \"${docTitle}\"" msgstr "" #. Default: "share_transition_explanations" -#: skins/generic/content_make_private_form.pt:11 +#: n/skins/generic/content_make_private_form.pt:11 msgid "make_private_transition_explanations" msgstr "" -#: skins/generic/content_make_private_form.pt:16 +#: n/skins/generic/content_make_private_form.pt:16 msgid "Make private" msgstr "" -#: skins/generic/content_publish_form.pt:14 -#: skins/generic/content_reject_form.pt:13 -msgid "Notify by e-mail" -msgstr "" - -#: skins/generic/content_publish_form.pt:23 -msgid "Publish" -msgstr "" - -#: skins/generic/content_publish_form.pt:5 +#: n/skins/generic/content_publish_form.pt:8 msgid "Publish: \"${docTitle}\"" msgstr "" -#: skins/generic/content_publish_form.pt:7 +#: n/skins/generic/content_publish_form.pt:10 msgid "publish_transition_explanations" msgstr "" -#: skins/generic/content_reject_form.pt:22 skins/generic/pending_members.pt:30 -msgid "Reject" +#: n/skins/generic/content_publish_form.pt:17 +#: n/skins/generic/content_reject_form.pt:16 +msgid "Notify by e-mail" msgstr "" -#: skins/generic/content_reject_form.pt:5 +#: n/skins/generic/content_publish_form.pt:26 +msgid "Publish" +msgstr "" + +#: n/skins/generic/content_reject_form.pt:8 msgid "Reject: \"${objectid}\"" msgstr "" -#: skins/generic/content_reject_form.pt:6 +#: n/skins/generic/content_reject_form.pt:9 msgid "reject_transition_explanations" msgstr "" -#: skins/generic/content_retract_form.pt:12 -msgid "Retract" +#: n/skins/generic/content_reject_form.pt:25 +#: n/skins/generic/pending_members.pt:30 +msgid "Reject" msgstr "" -#: skins/generic/content_retract_form.pt:5 +#: n/skins/generic/content_retract_form.pt:8 msgid "Retract: \"${objectid}\"" msgstr "" -#: skins/generic/content_retract_form.pt:6 +#: n/skins/generic/content_retract_form.pt:9 msgid "retract_transition_explanations" msgstr "" -#: skins/generic/content_share_form.pt:10 +#: n/skins/generic/content_retract_form.pt:15 +msgid "Retract" +msgstr "" + +#: n/skins/generic/content_share_form.pt:10 msgid "Share: \"${docTitle}\"" msgstr "" -#: skins/generic/content_share_form.pt:11 +#: n/skins/generic/content_share_form.pt:11 msgid "share_transition_explanations" msgstr "" -#: skins/generic/content_share_form.pt:16 +#: n/skins/generic/content_share_form.pt:16 msgid "Share" msgstr "" -#: skins/generic/content_submit_form.pt:12 -msgid "Submit" -msgstr "" - -#: skins/generic/content_submit_form.pt:5 +#: n/skins/generic/content_submit_form.pt:8 msgid "Submit: \"${objectid}\" for Review." msgstr "" -#: skins/generic/content_submit_form.pt:6 +#: n/skins/generic/content_submit_form.pt:9 msgid "submit_transition_explanations" msgstr "" -#: skins/generic/default_home_page_content.pt:2 -msgid "Welcome to Plinn!" -msgstr "" - -#: skins/generic/default_home_page_content.pt:3 -msgid "This is the default home page." -msgstr "" - -#: skins/generic/default_home_page_content.pt:4 -#: skins/generic/default_member_content.pt:4 -msgid "To change the content just select \"Edit\" in the Tab bar on the top." +#: n/skins/generic/content_submit_form.pt:15 +msgid "Submit" msgstr "" -#: skins/generic/default_member_content.pt:2 +#: n/skins/generic/default_member_content.pt:2 msgid "Default page for ${memberFullName}" msgstr "" -#: skins/generic/default_member_content.pt:3 +#: n/skins/generic/default_member_content.pt:3 msgid "" "This is the default document created for you when you have been registered " "in this portal." msgstr "" -#: skins/generic/groups_members.pt:35 +#: n/skins/generic/default_member_content.pt:4 +msgid "To change the content just select \"Edit\" in the Tab bar on the top." +msgstr "" + +#: n/skins/generic/groups_members.pt:35 msgid "Members of \"${groupId}\"" msgstr "" -#: skins/generic/groups_members.pt:47 +#: n/skins/generic/groups_members.pt:47 msgid "Groups of \"${groupId}\"" msgstr "" -#: skins/generic/gruf_macros.pt:105 +#: n/skins/generic/gruf_macros.pt:25 +msgid "Group Tree" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:45 n/skins/generic/header_widgets.pt:70 +msgid "Identifier" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:63 n/skins/generic/gruf_macros.pt:319 +msgid "Shared folder" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:66 +msgid "Open shared folder..." +msgstr "" + +#: n/skins/generic/gruf_macros.pt:69 n/skins/generic/gruf_macros.pt:321 +msgid "Create" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:90 +msgid "Implicit roles" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:98 +msgid "Explicit roles" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:105 msgid "Remove" msgstr "" -#: skins/generic/gruf_macros.pt:112 +#: n/skins/generic/gruf_macros.pt:112 msgid "Append" msgstr "" -#: skins/generic/gruf_macros.pt:129 skins/generic/gruf_macros.pt:164 +#: n/skins/generic/gruf_macros.pt:129 n/skins/generic/gruf_macros.pt:164 msgid "Outside group" msgstr "" -#: skins/generic/gruf_macros.pt:131 skins/generic/gruf_macros.pt:166 +#: n/skins/generic/gruf_macros.pt:131 n/skins/generic/gruf_macros.pt:166 msgid "Inside group" msgstr "" -#: skins/generic/gruf_macros.pt:148 skins/generic/gruf_macros.pt:183 +#: n/skins/generic/gruf_macros.pt:148 n/skins/generic/gruf_macros.pt:183 msgid "None" msgstr "" -#: skins/generic/gruf_macros.pt:197 +#: n/skins/generic/gruf_macros.pt:197 msgid "All members" msgstr "" -#: skins/generic/gruf_macros.pt:210 +#: n/skins/generic/gruf_macros.pt:210 msgid "Edit" msgstr "" -#: skins/generic/gruf_macros.pt:224 +#: n/skins/generic/gruf_macros.pt:224 msgid "All groups" msgstr "" -#: skins/generic/gruf_macros.pt:247 +#: n/skins/generic/gruf_macros.pt:247 msgid "Add new member" msgstr "" -#: skins/generic/gruf_macros.pt:25 -msgid "Group Tree" +#: n/skins/generic/gruf_macros.pt:250 n/skins/generic/gruf_macros.pt:365 +msgid "Login" msgstr "" -#: skins/generic/gruf_macros.pt:256 skins/generic/gruf_macros.pt:378 -#: skins/generic/last_member_logs.pt:1 skins/generic/pending_members.pt:13 +#: n/skins/generic/gruf_macros.pt:256 n/skins/generic/gruf_macros.pt:378 +#: n/skins/generic/last_member_logs.pt:23 +#: n/skins/generic/pending_members.pt:13 msgid "Name" msgstr "" -#: skins/generic/gruf_macros.pt:262 skins/generic/gruf_macros.pt:384 +#: n/skins/generic/gruf_macros.pt:262 n/skins/generic/gruf_macros.pt:384 msgid "Given Name" msgstr "" -#: skins/generic/gruf_macros.pt:268 skins/generic/gruf_macros.pt:390 +#: n/skins/generic/gruf_macros.pt:268 n/skins/generic/gruf_macros.pt:390 msgid "Password" msgstr "" -#: skins/generic/gruf_macros.pt:274 skins/generic/gruf_macros.pt:396 +#: n/skins/generic/gruf_macros.pt:274 n/skins/generic/gruf_macros.pt:396 msgid "Confirm" msgstr "" -#: skins/generic/gruf_macros.pt:280 skins/generic/gruf_macros.pt:402 +#: n/skins/generic/gruf_macros.pt:280 n/skins/generic/gruf_macros.pt:402 msgid "Email address" msgstr "" -#: skins/generic/gruf_macros.pt:298 +#: n/skins/generic/gruf_macros.pt:298 msgid "Add new group" msgstr "" -#: skins/generic/gruf_macros.pt:301 +#: n/skins/generic/gruf_macros.pt:301 msgid "Id" msgstr "" -#: skins/generic/gruf_macros.pt:371 +#: n/skins/generic/gruf_macros.pt:371 msgid "Groups" msgstr "" -#: skins/generic/gruf_macros.pt:373 +#: n/skins/generic/gruf_macros.pt:373 msgid "explicitly:" msgstr "" -#: skins/generic/gruf_macros.pt:374 +#: n/skins/generic/gruf_macros.pt:374 msgid "implicitly:" msgstr "" -#: skins/generic/gruf_macros.pt:415 +#: n/skins/generic/gruf_macros.pt:415 msgid "Tree view by this member" msgstr "" -#: skins/generic/gruf_macros.pt:416 +#: n/skins/generic/gruf_macros.pt:416 msgid "Click here to see the tree viewed by this member >>" msgstr "" -#: skins/generic/gruf_macros.pt:440 +#: n/skins/generic/gruf_macros.pt:440 msgid "collapse all" msgstr "" -#: skins/generic/gruf_macros.pt:45 -msgid "Identifier" +#: n/skins/generic/gruf_macros.pt:471 +msgid "<< Back to member properties" msgstr "" -#: skins/generic/gruf_macros.pt:471 -msgid "<< Back to member properties" +#: n/skins/generic/header_widgets.pt:33 +msgid "Edit all metadata" msgstr "" -#: skins/generic/gruf_macros.pt:63 skins/generic/gruf_macros.pt:319 -msgid "Shared folder" +#: n/skins/generic/header_widgets.pt:54 +msgid "Enable Discussion?" msgstr "" -#: skins/generic/gruf_macros.pt:66 -msgid "Open shared folder..." +#: n/skins/generic/header_widgets.pt:57 +msgid "Default" msgstr "" -#: skins/generic/gruf_macros.pt:69 skins/generic/gruf_macros.pt:321 -msgid "Create" +#: n/skins/generic/header_widgets.pt:60 +msgid "Off" msgstr "" -#: skins/generic/gruf_macros.pt:90 -msgid "Implicit roles" +#: n/skins/generic/header_widgets.pt:63 +msgid "On" msgstr "" -#: skins/generic/gruf_macros.pt:98 -msgid "Explicit roles" +#: n/skins/generic/header_widgets.pt:91 +msgid "Subject" msgstr "" -#: skins/generic/header_widgets.pt:33 -msgid "Edit all metadata" +#: n/skins/generic/header_widgets.pt:108 +msgid "Contributors" msgstr "" -#: skins/generic/last_member_logs.pt:1 -msgid "Last member login times" +#: n/skins/generic/header_widgets.pt:115 +msgid "Creation Date" msgstr "" -#: skins/generic/last_member_logs.pt:1 -msgid "Last login time" +#: n/skins/generic/header_widgets.pt:118 +msgid "Last Modified Date" msgstr "" -#: skins/generic/local_roles_macros.pt:160 -msgid "No more group available for the ${role} role in this folder" +#: n/skins/generic/header_widgets.pt:130 +msgid "Effective Date" msgstr "" -#: skins/generic/local_roles_macros.pt:174 -msgid "No group have got the ${role} role in this folder" +#: n/skins/generic/header_widgets.pt:141 +msgid "Expiration Date" +msgstr "" + +#: n/skins/generic/header_widgets.pt:147 n/skins/generic/wysiwyg_support.pt:43 +msgid "Format" +msgstr "" + +#: n/skins/generic/header_widgets.pt:155 +msgid "Language" +msgstr "" + +#: n/skins/generic/header_widgets.pt:163 +msgid "Rights" +msgstr "" + +#: n/skins/generic/header_widgets.pt:174 +msgid "Edit standard metadata" +msgstr "" + +#: n/skins/generic/last_member_logs.pt:19 +msgid "Last member login times" msgstr "" -#: skins/generic/local_roles_macros.pt:39 -#: skins/generic/local_roles_macros.pt:122 +#: n/skins/generic/last_member_logs.pt:27 +msgid "Last login time" +msgstr "" + +#: n/skins/generic/load_revision.py:38 +msgid "state of %s" +msgstr "" + +#: n/skins/generic/local_roles_macros.pt:39 +#: n/skins/generic/local_roles_macros.pt:122 msgid "Current Role: \"${current_role}\"" msgstr "" -#: skins/generic/local_roles_macros.pt:45 -#: skins/generic/local_roles_macros.pt:127 +#: n/skins/generic/local_roles_macros.pt:45 +#: n/skins/generic/local_roles_macros.pt:127 msgid "ok" msgstr "" -#: skins/generic/local_roles_macros.pt:66 -#: skins/generic/local_roles_macros.pt:148 +#: n/skins/generic/local_roles_macros.pt:66 +#: n/skins/generic/local_roles_macros.pt:148 msgid "Haven't role" msgstr "" -#: skins/generic/local_roles_macros.pt:72 -#: skins/generic/local_roles_macros.pt:150 +#: n/skins/generic/local_roles_macros.pt:72 +#: n/skins/generic/local_roles_macros.pt:150 msgid "Have role" msgstr "" -#: skins/generic/local_roles_macros.pt:84 +#: n/skins/generic/local_roles_macros.pt:84 msgid "No more member available for the ${role} role in this folder" msgstr "" -#: skins/generic/local_roles_macros.pt:99 +#: n/skins/generic/local_roles_macros.pt:99 msgid "Nobody have got the ${role} role in this folder" msgstr "" +#: n/skins/generic/local_roles_macros.pt:160 +msgid "No more group available for the ${role} role in this folder" +msgstr "" + +#: n/skins/generic/local_roles_macros.pt:174 +msgid "No group have got the ${role} role in this folder" +msgstr "" + #. Default: "%m/%d/%Y %Hh%M" -#: skins/generic/locale_date_fmt.pt:1 +#: n/skins/generic/locale_date_fmt.pt:1 msgid "locale_date_fmt" msgstr "" -#: skins/generic/main_template_macros.pt:108 -msgid "Exit boxes editing" +#: n/skins/generic/main_template_macros.pt:78 +#: n/skins/photo_theme/main_template_macros.pt:91 +msgid "You are here:" msgstr "" -#: skins/generic/pending_members.pt:14 -msgid "Email" +#: n/skins/generic/main_template_macros.pt:91 +#: n/skins/generic/main_template_macros.pt:94 +#: n/skins/generic/main_template_macros.pt:112 +#: n/skins/generic/main_template_macros.pt:113 +#: n/skins/photo_theme/main_template_macros.pt:100 +#: n/skins/photo_theme/main_template_macros.pt:113 +msgid "Paste" msgstr "" -#: skins/generic/pending_members.pt:35 -msgid "Register" +#: n/skins/generic/main_template_macros.pt:109 +#: n/skins/photo_theme/main_template_macros.pt:110 +msgid "Exit boxes editing" msgstr "" -#: skins/generic/pending_members.pt:9 +#: n/skins/generic/pending_members.pt:9 msgid "Review members registration" msgstr "" -#: skins/generic/recent_news.pt:19 +#: n/skins/generic/pending_members.pt:14 +msgid "Email" +msgstr "" + +#: n/skins/generic/pending_members.pt:35 +msgid "Register" +msgstr "" + +#: n/skins/generic/recent_news.pt:21 n/skins/generic/widgets.pt:123 msgid "News" msgstr "" -#: skins/generic/recent_news.pt:34 +#: n/skins/generic/recent_news.pt:36 msgid "by:" msgstr "" #. Default: "Read More" -#: skins/generic/recent_news.pt:47 +#: n/skins/generic/recent_news.pt:49 msgid "read_more" msgstr "" -#: skins/generic/recent_news.pt:55 +#: n/skins/generic/recent_news.pt:57 msgid "No news is good news!" msgstr "" -#: skins/generic/reject_member_form.pt:14 +#: n/skins/generic/reject_member_form.pt:9 +msgid "Reject registration of ${fullname}" +msgstr "" + +#: n/skins/generic/reject_member_form.pt:14 msgid "From:" msgstr "" -#: skins/generic/reject_member_form.pt:20 +#: n/skins/generic/reject_member_form.pt:20 msgid "To:" msgstr "" -#: skins/generic/reject_member_form.pt:27 skins/generic/send_email_form.pt:87 +#: n/skins/generic/reject_member_form.pt:27 +#: n/skins/generic/send_email_form.pt:96 msgid "Subject:" msgstr "" -#: skins/generic/reject_member_form.pt:31 +#: n/skins/generic/reject_member_form.pt:31 msgid "Membership request denied" msgstr "" -#: skins/generic/reject_member_form.pt:35 skins/generic/send_email_form.pt:92 +#: n/skins/generic/reject_member_form.pt:35 +#: n/skins/generic/send_email_form.pt:101 msgid "Message body:" msgstr "" -#: skins/generic/reject_member_form.pt:39 +#: n/skins/generic/reject_member_form.pt:39 msgid "" "I'm sorry to have to inform you that your request has been denied. Please " "contact the site administrator." msgstr "" -#: skins/generic/reject_member_form.pt:45 +#: n/skins/generic/reject_member_form.pt:45 msgid "Send" msgstr "" -#: skins/generic/reject_member_form.pt:9 -msgid "Reject registration of ${fullname}" +#: n/skins/generic/request_password_reset_form.pt:11 +msgid "Password reset" msgstr "" -#: skins/generic/send_email_form.pt:101 -msgid "Note: This message will be stored in content history." +#: n/skins/generic/request_password_reset_form.pt:12 +msgid "" +"Enter your username below and click on the \"Send\" button. You will receive " +"an email with a link to reset your password." +msgstr "" + +#: n/skins/generic/request_password_reset_form.pt:18 +msgid "" +"If this will not work for you (for example, if you forget your username or " +"didn't enter your email address) send email to ${admin_email}." +msgstr "" + +#. Default: "Send" +#: n/skins/generic/request_password_reset_form.pt:25 +msgid " Send " +msgstr "" + +#: n/skins/generic/revision_context_header.pt:10 +msgid "" +"This is an old revision of this content, as edited by ${user} at ${datetime}." +msgstr "" + +#: n/skins/generic/revision_context_header.pt:16 +msgid "Restore this revision" +msgstr "" + +#: n/skins/generic/revision_context_header.pt:22 +msgid "← previous revision" +msgstr "" + +#: n/skins/generic/revision_context_header.pt:27 +msgid "current revision" +msgstr "" + +#: n/skins/generic/revision_context_header.pt:29 +msgid "next revision →" +msgstr "" + +#: n/skins/generic/search.py:109 n/skins/generic/search.py:113 +msgid "ascending sort" +msgstr "" + +#: n/skins/generic/search_results_template.pt:16 +msgid "Search Results" +msgstr "" + +#: n/skins/generic/search_results_template.pt:23 +msgid "Found ${count} ${item_s_match} '${text}'." +msgstr "" + +#: n/skins/generic/search_results_template.pt:27 +msgid "Found 1 item." +msgstr "" + +#: n/skins/generic/search_results_template.pt:28 +msgid "Found ${count} items." +msgstr "" + +#: n/skins/generic/search_results_template.pt:45 +msgid "Last modified" +msgstr "" + +#: n/skins/generic/search_results_template.pt:83 +msgid "Save this search as topic" +msgstr "" + +#: n/skins/generic/search_results_template.pt:84 +msgid "Title:" msgstr "" -#: skins/generic/send_email_form.pt:27 +#: n/skins/generic/search_results_template.pt:89 +msgid "There are no items matching your specified criteria." +msgstr "" + +#: n/skins/generic/send_email_form.pt:25 +msgid "Send an email" +msgstr "" + +#: n/skins/generic/send_email_form.pt:29 msgid "Recipients:" msgstr "" -#: skins/generic/send_email_form.pt:38 +#: n/skins/generic/send_email_form.pt:47 msgid "(as copy)" msgstr "" -#: skins/generic/send_email_form.pt:53 +#: n/skins/generic/send_email_form.pt:62 msgid "All (${nofpers} persons)" msgstr "" -#: skins/generic/send_email_form.pt:60 +#: n/skins/generic/send_email_form.pt:69 msgid "Show list" msgstr "" -#: skins/generic/send_email_form.pt:70 +#: n/skins/generic/send_email_form.pt:79 msgid "(not required)" msgstr "" -#: skins/generic/send_email_form.pt:81 +#: n/skins/generic/send_email_form.pt:90 msgid "Others (on address by line)" msgstr "" -#: skins/generic/send_email_form.pt:98 +#: n/skins/generic/send_email_form.pt:107 msgid "Send email" msgstr "" -#: skins/generic/wf_macros.pt:17 -msgid "Actor" +#: n/skins/generic/send_email_form.pt:110 +msgid "Note: This message will be stored in content history." msgstr "" -#: skins/generic/wf_macros.pt:18 -msgid "Action" +#: n/skins/generic/wf_macros.pt:17 +msgid "Actor" msgstr "" -#: skins/generic/wf_macros.pt:19 -msgid "Comments" +#: n/skins/generic/wf_macros.pt:18 +msgid "Action" msgstr "" -#: skins/generic/wf_macros.pt:20 +#: n/skins/generic/wf_macros.pt:20 msgid "Email sent to" msgstr "" -#: skins/generic/wf_macros.pt:28 +#: n/skins/generic/wf_macros.pt:28 msgid "(no comments)" msgstr "" -#: skins/generic/wf_macros.pt:33 +#: n/skins/generic/wf_macros.pt:33 msgid "(no email sent)" msgstr "" -#: skins/generic/widgets.pt:32 skins/generic/widgets.pt:33 +#: n/skins/generic/widgets.pt:32 n/skins/generic/widgets.pt:33 msgid "Edit metadata" msgstr "" -#: skins/generic/widgets.pt:53 +#: n/skins/generic/widgets.pt:53 msgid "Clipboard" msgstr "" -#: skins/generic/widgets.pt:59 -msgid "Delete" +#: n/skins/generic/widgets.pt:128 +msgid "News Item" msgstr "" -#: skins/generic/widgets.pt:60 -msgid "Empty" +#: n/skins/generic/wysiwyg_support.pt:47 +msgid "Structured text" msgstr "" -#: skins/generic/wysiwyg_support.pt:108 -msgid "Format" +#: n/skins/generic/wysiwyg_support.pt:53 +msgid "HTML" msgstr "" -#: skins/generic/wysiwyg_support.pt:112 -msgid "Structured text" +#: n/skins/generic/wysiwyg_support.pt:59 +msgid "Plain text" msgstr "" -#: skins/generic/wysiwyg_support.pt:118 -msgid "HTML" +#: n/skins/photo_theme/logout.py:15 +msgid "You have been logged out." msgstr "" -#: skins/generic/wysiwyg_support.pt:124 -msgid "Plain text" +#: n/skins/photo_theme/main_template_macros.pt:55 +msgid "Loading progress..." msgstr "" -# from plinn-manual -msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" +#: n/skins/photo_theme/realis_main_macros.pt:28 +msgid "Join" msgstr "" -msgid "%s's Home" +#: n/skins/photo_theme/search_results_macros.pt:12 +msgid "Title" msgstr "" -msgid "%s's front page" +#: n/skins/photo_theme/search_results_macros.pt:13 +msgid "Creator" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:14 +msgid "Type" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:15 +msgid "Date" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:32 +msgid "(No title)" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:45 +msgid "(No description)" +msgstr "" + +# from plinn-manual +msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" msgstr "" msgid "1 Day" @@ -1120,9 +1351,6 @@ msgstr "" msgid "Box title:" msgstr "" -msgid "Calendar View" -msgstr "" - msgid "catalog_index_allowedRolesAndUsers" msgstr "Allowed roles and users" @@ -1147,6 +1375,9 @@ msgstr "Effective date" msgid "catalog_index_expires" msgstr "Expiration date" +msgid "catalog_index_fTitle" +msgstr "" + msgid "catalog_index_getId" msgstr "Id" @@ -1261,7 +1492,7 @@ msgstr "" msgid "December_abbr" msgstr "Dec" -msgid "demande_avis_tut" +msgid "Delete" msgstr "" msgid "depublish" @@ -1279,9 +1510,6 @@ msgstr "Publish" msgid "Directories" msgstr "" -msgid "Directory" -msgstr "" - msgid "Do you realy want to delete ?" msgstr "" @@ -1360,6 +1588,9 @@ msgstr "" msgid "Height:" msgstr "" +msgid "History" +msgstr "" + msgid "Image block" msgstr "" @@ -1405,6 +1636,9 @@ msgstr "" msgid "June_abbr" msgstr "Jun" +msgid "immediately" +msgstr "" + msgid "KB" msgstr "" @@ -1429,9 +1663,6 @@ msgstr "" msgid "Listen" msgstr "" -msgid "Loading progress..." -msgstr "" - msgid "Local Roles" msgstr "" @@ -1534,10 +1765,10 @@ msgstr "" msgid "Move up" msgstr "" -msgid "New layer" +msgid "never" msgstr "" -msgid "News Item" +msgid "New layer" msgstr "" msgid "No document" @@ -1856,3 +2087,36 @@ msgid "" "WARNING: The current portal type is unknown. You must change the value to " "enable the member area creation." msgstr "" + +msgid "Approve" +msgstr "" + +msgid "approved" +msgstr "" + +msgid "Disapprove" +msgstr "" + +msgid "pending" +msgstr "" + +msgid "private" +msgstr "" + +msgid "items matching" +msgstr "" + +msgid "item matching" +msgstr "" + +msgid "mail_to" +msgstr "" + +msgid "mail_cc" +msgstr "" + +msgid "mail_bcc" +msgstr "" + +#~ msgid "List" +#~ msgstr "List" diff --git a/locales/fr/LC_MESSAGES/plinn.po b/locales/fr/LC_MESSAGES/plinn.po index 3b25aee..ca6297c 100755 --- a/locales/fr/LC_MESSAGES/plinn.po +++ b/locales/fr/LC_MESSAGES/plinn.po @@ -1,10 +1,11 @@ msgid "" msgstr "" "Project-Id-Version: Plinn 2.0\n" -"POT-Creation-Date: $Date: Fri Oct 30 14:42:26 2009 $\n" +"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" "PO-Revision-Date: 2009-10-30 14:43+0100\n" "Last-Translator: Benoît PIN\n" "Language-Team: CRI http://cri.ensmp.fr\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -15,59 +16,53 @@ msgstr "" "Domain: plinn\n" "X-Is-Fallback-For: fr-fr, fr-be fr-ca fr-lu fr-mc fr-ch\n" -#: EmailNotification.py:38 +#: n/EmailNotification.py:38 msgid "Object deleted" msgstr "Objet supprimé" -#: Folder.py:149 +#: n/Folder.py:162 msgid "Please rename each listed object." msgstr "Veuillez renommer tous les éléments listés." -#. Default: "" -#: MembershipTool.py:401 +#: n/MembershipTool.py:406 msgid "%s's Home" msgstr "Accueil : %s" -#. Default: "" -#: MembershipTool.py:402 +#: n/MembershipTool.py:407 msgid "%s's front page" msgstr "Page d'accueil de %s" -#: profiles/default/actions.xml:107 -msgid "List" -msgstr "Lister" - -#: profiles/default/actions.xml:122 -msgid "Manage Boxes" -msgstr "Gérer les boîtes" - -#: profiles/default/actions.xml:134 skins/generic/send_email_form.pt:25 -msgid "Send an email" -msgstr "Envoyer un e-mail" +#: n/RegistrationTool.py:217 +msgid "Invalid reset password request." +msgstr "" -#: profiles/default/actions.xml:156 -msgid "Configure Portal" -msgstr "Configurer le portail" +#: n/RegistrationTool.py:222 +msgid "Invalid userid." +msgstr "" -#: profiles/default/actions.xml:167 -msgid "Directory" -msgstr "Annuaire" +#: n/RegistrationTool.py:226 +msgid "Your reset password request has expired. You can ask a new one." +msgstr "" -#: profiles/default/actions.xml:181 -msgid "Add comment..." -msgstr "Ajouter un commentaire..." +#: n/RegistrationTool.py:235 +msgid "Password successfully resetted." +msgstr "" -#: profiles/default/actions.xml:209 -msgid "Calendar View" -msgstr "Calendrier" +#: n/RegistrationTool.py:237 +msgid "\"%s\" username not found." +msgstr "" -#: profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 -#: profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 -#: profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 msgid "Document state change notificaction" msgstr "Notification de changement d'état d'un document" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:35 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:35 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:35 msgid "" "\n" "You have been registered as a member of \"%(portal_title)s\", which\n" @@ -75,10 +70,12 @@ msgid "" "the community.\n" msgstr "" "\n" -"Vous venez d'être inscrit en tant que membre du portail « %(portal_title)s », " -"ce qui vous permet de participer à la rédaction des contenus.\n" +"Vous venez d'être inscrit en tant que membre du portail " +"« %(portal_title)s », ce qui vous permet de participer à la rédaction des " +"contenus.\n" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:43 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:43 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:43 msgid "" "You will receive an other mail with your randomly-generated\n" "password. Once you have logged in with this password, you\n" @@ -87,211 +84,185 @@ msgstr "" "Vous allez recevoir un autre e-mail avec votre mot de passe généré " "aléatoirement. Vous pourrez le changer dès votre première connexion." -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:55 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:55 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:55 msgid "your registration has been accepted" msgstr "votre inscription a été acceptée" -#: skins/content/cal_calendar_view.pt:30 +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:51 +msgid "Tracking number" +msgstr "" + +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:55 +msgid "Tracking url" +msgstr "" + +#: n/skins/content/cal_calendar_view.pt:30 msgid "Add a new event..." msgstr "Ajouter un nouvel événement..." -#: skins/content/cal_calendar_view.pt:37 skins/content/cal_calendar_view.pt:40 +#: n/skins/content/cal_calendar_view.pt:37 +#: n/skins/content/cal_calendar_view.pt:40 msgid "Remove event..." msgstr "Supprimer un événement..." -#: skins/content/cal_calendar_view.pt:50 +#: n/skins/content/cal_calendar_view.pt:50 msgid "The next click over an event will remove it!" msgstr "Le prochain clic sur un événement provoquera sa suppression !" -#: skins/content/cal_calendar_view.pt:51 +#: n/skins/content/cal_calendar_view.pt:51 msgid "Cancel delete mode" msgstr "Ne pas faire de suppression" -#: skins/content/changes_history_template.pt:24 +#: n/skins/content/changes_history_template.pt:24 msgid "« later revisions" msgstr "« révisions précédentes" -#: skins/content/changes_history_template.pt:28 +#: n/skins/content/changes_history_template.pt:28 msgid "earlier revisions »" msgstr "révisions suivantes »" -#: skins/content/changes_history_template.pt:36 -#: skins/content/list_pending_contents.pt:42 skins/generic/wf_macros.pt:16 -msgid "Date" -msgstr "Date" - -#: skins/content/changes_history_template.pt:37 +#: n/skins/content/changes_history_template.pt:37 msgid "user" msgstr "utilisateur" -#: skins/content/changes_history_template.pt:70 +#: n/skins/content/changes_history_template.pt:63 +#: n/skins/generic/load_revision.py:29 +msgid "nobody" +msgstr "personne" + +#: n/skins/content/changes_history_template.pt:70 msgid "Compare" msgstr "Comparer" -#: skins/content/changes_history_template.pt:72 +#: n/skins/content/changes_history_template.pt:72 msgid "Please select one revision per column to compare." msgstr "Veuillez sélectionner une révision par colonne pour comparer." -#: skins/content/content_info.pt:16 skins/content/file_info.pt:12 -#: skins/content/list_pending_contents.pt:31 -#: skins/custom_generic/talkback_tree.pt:68 skins/generic/gruf_macros.pt:51 -#: skins/generic/gruf_macros.pt:307 skins/generic/header_widgets.pt:18 -#: skins/generic/header_widgets.pt:75 -#: skins/generic/search_results_template.pt:37 -msgid "Title" -msgstr "Titre" - -#: skins/content/content_info.pt:20 skins/content/file_info.pt:20 -msgid "Created" -msgstr "Créé" - -#: skins/content/content_info.pt:24 skins/content/file_info.pt:24 -msgid "Modified" -msgstr "Modifié" - -#: skins/content/content_info.pt:9 skins/content/file_info.pt:5 -msgid "Preview:" -msgstr "Aperçu :" - -#: skins/content/dateCriterionResolvedDescription.py:15 +#: n/skins/content/dateCriterionResolvedDescription.py:15 msgid "search from the beginning of the world until %s" msgstr "recherche depuis la nuit des temps jusqu'au %s" -#: skins/content/dateCriterionResolvedDescription.py:17 +#: n/skins/content/dateCriterionResolvedDescription.py:17 msgid "search from %s and the end of the world" msgstr "recherche depuis le %s jusqu'à la fin du monde" -#: skins/content/dateCriterionResolvedDescription.py:19 +#: n/skins/content/dateCriterionResolvedDescription.py:19 msgid "search between %s and %s" msgstr "recherche entre le %s et le %s" -#: skins/content/file_info.pt:16 -msgid "Type" -msgstr "Type" - -#: skins/content/folder_notifications_template.pt:23 -#: skins/content/topic_edit_template.pt:26 -#: skins/custom_content/event_edit_template.pt:135 -#: skins/generic/search_results_template.pt:87 +#: n/skins/content/folder_notifications_template.pt:23 +#: n/skins/content/topic_edit_template.pt:26 +#: n/skins/custom_content/event_edit_template.pt:135 +#: n/skins/generic/search_results_template.pt:87 msgid "Save" msgstr "Enregistrer" -#: skins/content/list_pending_contents.pt:23 +#: n/skins/content/list_pending_contents.pt:23 msgid "Pending documents" msgstr "Documents en attente" -#: skins/content/list_pending_contents.pt:37 +#: n/skins/content/list_pending_contents.pt:37 msgid "Submit by:" msgstr "Soumis par :" -#: skins/content/no_preview.pt:11 +#: n/skins/content/no_preview.pt:11 msgid "No preview available for this file" msgstr "Pas d'aperçu disponible pour ce fichier" -#: skins/content/topic_edit_template.pt:16 +#: n/skins/content/topic_edit_template.pt:16 msgid "Reuse criteria from parent:" msgstr "Réutiliser les critères du parent :" -#: skins/content/topic_edit_template.pt:17 +#: n/skins/content/topic_edit_template.pt:17 msgid "yes" msgstr "oui" -#: skins/content/topic_edit_template.pt:18 +#: n/skins/content/topic_edit_template.pt:18 msgid "no" msgstr "non" -#: skins/content/topic_edit_template.pt:27 skins/generic/gruf_macros.pt:211 -#: skins/generic/gruf_macros.pt:235 +#: n/skins/content/topic_edit_template.pt:27 +#: n/skins/generic/gruf_macros.pt:211 n/skins/generic/gruf_macros.pt:235 msgid "Remove selected" msgstr "Supprimer la sélection" -#: skins/content/topic_edit_template.pt:30 +#: n/skins/content/topic_edit_template.pt:30 msgid "New criterion:" msgstr "Nouveau critère :" -#: skins/content/topic_edit_template.pt:33 +#: n/skins/content/topic_edit_template.pt:33 msgid "Name:" msgstr "Nom :" -#: skins/content/topic_edit_template.pt:41 +#: n/skins/content/topic_edit_template.pt:41 msgid "Type:" msgstr "Type :" -#: skins/content/topic_edit_template.pt:51 skins/generic/gruf_macros.pt:288 -#: skins/generic/gruf_macros.pt:327 +#: n/skins/content/topic_edit_template.pt:51 +#: n/skins/generic/gruf_macros.pt:288 n/skins/generic/gruf_macros.pt:327 msgid "Add" msgstr "Ajouter" -#: skins/control/restore_revision.py:9 +#: n/skins/control/restore_revision.py:9 msgid "%(type)s restored." msgstr "%(type)s restauré." -#: skins/control/save_search_as_topic.py:20 +#: n/skins/control/save_search_as_topic.py:20 msgid "Topic added." msgstr "Thème ajouté." -#: skins/custom_content/content_status_history.pt:12 -#: skins/custom_content/transition_form.pt:25 -msgid "Current state:" -msgstr "État actuel :" - -#: skins/custom_content/content_status_history.pt:9 -#: skins/custom_content/transition_form.pt:46 +#: n/skins/custom_content/content_status_history.pt:9 +#: n/skins/custom_content/transition_form.pt:46 msgid "Reviewing history" msgstr "Historique" -#: skins/custom_content/discussionitem_view.pt:24 +#: n/skins/custom_content/content_status_history.pt:12 +#: n/skins/custom_content/transition_form.pt:25 +msgid "Current state:" +msgstr "État actuel :" + +#: n/skins/custom_content/discussionitem_view.pt:24 msgid "Above in thread:" msgstr "Plus haut dans le fil :" -#: skins/custom_content/event_edit_template.pt:115 -#: skins/custom_content/event_view.pt:57 skins/generic/gruf_macros.pt:57 -#: skins/generic/gruf_macros.pt:313 skins/generic/header_widgets.pt:24 -#: skins/generic/header_widgets.pt:85 -msgid "Description" -msgstr "Description" - -#: skins/custom_content/event_edit_template.pt:121 -#: skins/custom_content/event_view.pt:33 -msgid "Event URL" -msgstr "Url de l'événement" - -#: skins/custom_content/event_edit_template.pt:20 -#: skins/custom_content/event_view.pt:11 +#: n/skins/custom_content/event_edit_template.pt:20 +#: n/skins/custom_content/event_view.pt:11 msgid "Event Name" msgstr "Titre" -#: skins/custom_content/event_edit_template.pt:24 -#: skins/custom_content/event_view.pt:27 +#: n/skins/custom_content/event_edit_template.pt:24 +#: n/skins/custom_content/event_view.pt:27 msgid "Event type" msgstr "Catégorie" -#: skins/custom_content/event_edit_template.pt:27 -#: skins/custom_content/event_view.pt:17 +#: n/skins/custom_content/event_edit_template.pt:27 +#: n/skins/custom_content/event_view.pt:17 msgid "Location" msgstr "Lieu" -#: skins/custom_content/event_edit_template.pt:38 -#: skins/custom_content/event_view.pt:13 +#: n/skins/custom_content/event_edit_template.pt:38 +#: n/skins/custom_content/event_view.pt:13 msgid "Contact Name" msgstr "Nom du contact" -#: skins/custom_content/event_edit_template.pt:44 -#: skins/custom_content/event_view.pt:19 +#: n/skins/custom_content/event_edit_template.pt:44 +#: n/skins/custom_content/event_view.pt:19 msgid "Contact Email" msgstr "E-mail du contact" -#: skins/custom_content/event_edit_template.pt:50 -#: skins/custom_content/event_view.pt:29 +#: n/skins/custom_content/event_edit_template.pt:50 +#: n/skins/custom_content/event_view.pt:29 msgid "Contact Phone" msgstr "Tel. du contact" -#: skins/custom_content/event_edit_template.pt:67 +#: n/skins/custom_content/event_edit_template.pt:67 msgid "Beginning" msgstr "Début" -#: skins/custom_content/event_edit_template.pt:78 -#: skins/custom_content/event_edit_template.pt:103 skins/generic/widgets.pt:94 +#: n/skins/custom_content/event_edit_template.pt:78 +#: n/skins/custom_content/event_edit_template.pt:103 +#: n/skins/generic/widgets.pt:94 msgid "" "${month} / ${day} / ${year}  ${hour} :" " ${minute}" @@ -299,180 +270,197 @@ msgstr "" "${day} / ${month} / ${year}  ${hour} :" " ${minute}" -#: skins/custom_content/event_edit_template.pt:92 +#: n/skins/custom_content/event_edit_template.pt:92 msgid "End" msgstr "Fin" -#: skins/custom_content/event_view.pt:44 +#: n/skins/custom_content/event_edit_template.pt:115 +#: n/skins/custom_content/event_view.pt:57 n/skins/generic/gruf_macros.pt:57 +#: n/skins/generic/gruf_macros.pt:313 n/skins/generic/header_widgets.pt:24 +#: n/skins/generic/header_widgets.pt:85 +msgid "Description" +msgstr "Description" + +#: n/skins/custom_content/event_edit_template.pt:121 +#: n/skins/custom_content/event_view.pt:33 +msgid "Event URL" +msgstr "Url de l'événement" + +#: n/skins/custom_content/event_view.pt:44 msgid "Start Date" msgstr "Début" -#: skins/custom_content/event_view.pt:49 +#: n/skins/custom_content/event_view.pt:49 msgid "Stop Date" msgstr "Fin" -#: skins/custom_content/friendlydatec_editform.pt:14 +#: n/skins/custom_content/friendlydatec_editform.pt:14 msgid "At the least:" msgstr "Au moins :" -#: skins/custom_content/friendlydatec_editform.pt:17 +#: n/skins/custom_content/friendlydatec_editform.pt:17 msgid "At the most:" msgstr "Au plus :" -#: skins/custom_content/friendlydatec_editform.pt:20 +#: n/skins/custom_content/friendlydatec_editform.pt:20 msgid "Within the day:" msgstr "Au jour de :" #. Default: "old" -#: skins/custom_content/friendlydatec_editform.pt:37 +#: n/skins/custom_content/friendlydatec_editform.pt:37 msgid "daterange_old" msgstr "passé" #. Default: "ahead" -#: skins/custom_content/friendlydatec_editform.pt:40 +#: n/skins/custom_content/friendlydatec_editform.pt:40 msgid "daterange_ahead" msgstr "futur" -#: skins/custom_content/listc_edit.pt:16 +#: n/skins/custom_content/listc_edit.pt:16 msgid "Operator:" msgstr "Opérateur :" -#: skins/custom_content/listc_edit.pt:18 +#: n/skins/custom_content/listc_edit.pt:18 msgid "or" msgstr "ou" -#: skins/custom_content/listc_edit.pt:21 -#: skins/custom_generic/talkback_tree.pt:32 +#: n/skins/custom_content/listc_edit.pt:21 +#: n/skins/custom_generic/talkback_tree.pt:32 msgid "and" msgstr "et" -#: skins/custom_content/sic_edit.pt:15 +#: n/skins/custom_content/sic_edit.pt:15 msgid "Minimum" msgstr "Mininum" -#: skins/custom_content/sic_edit.pt:18 +#: n/skins/custom_content/sic_edit.pt:18 msgid "Maximum" msgstr "Maximum" -#: skins/custom_content/sic_edit.pt:21 +#: n/skins/custom_content/sic_edit.pt:21 msgid "Min/Max" msgstr "Min/Max" -#: skins/custom_content/sort_edit.pt:16 +#: n/skins/custom_content/sort_edit.pt:16 msgid "Regular sort" msgstr "Tri normal" -#: skins/custom_content/sort_edit.pt:20 +#: n/skins/custom_content/sort_edit.pt:20 msgid "Reversed sort" msgstr "Tri inversé" -#: skins/custom_content/topic_view.pt:50 +#: n/skins/custom_content/topic_view.pt:50 msgid "No result" msgstr "Pas de résultat" -#: skins/custom_content/topic_view.pt:54 +#: n/skins/custom_content/topic_view.pt:54 msgid "Subtopics" msgstr "Sous-thèmes" -#: skins/custom_content/topic_view.pt:57 +#: n/skins/custom_content/topic_view.pt:57 msgid "Topic" msgstr "Thème" -#: skins/custom_content/transition_form.pt:15 +#: n/skins/custom_content/transition_form.pt:15 msgid "Transition of ${objectid}." msgstr "Transition de « ${objectid} »." -#: skins/custom_content/transition_form.pt:18 +#: n/skins/custom_content/transition_form.pt:18 msgid "Transition description." msgstr "Description" -#: skins/custom_content/transition_form.pt:30 skins/generic/wf_macros.pt:19 +#: n/skins/custom_content/transition_form.pt:30 +#: n/skins/generic/wf_macros.pt:19 msgid "Comments" msgstr "Commentaires" -#: skins/custom_content/transition_form.pt:40 +#: n/skins/custom_content/transition_form.pt:40 msgid "Transition" msgstr "Transition" -#: skins/custom_control/addtoFavorites.py:15 +#: n/skins/custom_control/addtoFavorites.py:15 msgid "Favorites" msgstr "Favoris" -#: skins/custom_control/folder_bottom_control.py:17 +#: n/skins/custom_control/folder_bottom_control.py:17 msgid "%d item moved to bottom.%d items moved to bottom." msgstr "%d élément déplacé en bas.%d éléments déplacés en bas." -#: skins/custom_control/folder_down_control.py:18 +#: n/skins/custom_control/folder_down_control.py:18 msgid "%d item moved down.%d items moved down." msgstr "%d élément déplacé vers le bas.%d éléments déplacés vers le bas." -#: skins/custom_control/folder_rename_control.py:13 +#: n/skins/custom_control/folder_rename_control.py:13 msgid "Item renamed." msgstr "Élément renommé." -#: skins/custom_control/folder_rename_control.py:15 +#: n/skins/custom_control/folder_rename_control.py:15 msgid "Items renamed." msgstr "Éléments renommés." -#: skins/custom_control/folder_rename_control.py:18 +#: n/skins/custom_control/folder_rename_control.py:18 msgid "This item has not been renamed: \"%s\"" msgstr "Cet élément n'a pas été renommé : \"%s\"" -#: skins/custom_control/folder_rename_control.py:21 +#: n/skins/custom_control/folder_rename_control.py:21 msgid "These items have not been renamed: %s" msgstr "Ces éléments n'ont pas été renommés : %s" -#: skins/custom_control/folder_rename_control.py:24 +#: n/skins/custom_control/folder_rename_control.py:24 msgid "Rename failed." msgstr "Renommage échoué." -#: skins/custom_control/folder_rename_control.py:26 +#: n/skins/custom_control/folder_rename_control.py:26 msgid "Nothing to change." msgstr "Aucun changement." -#: skins/custom_control/folder_top_control.py:17 +#: n/skins/custom_control/folder_top_control.py:17 msgid "%d item moved to top.%d items moved to top." msgstr "%d élément déplacé en haut.%d éléments déplacés en haut." -#: skins/custom_control/folder_up_control.py:17 +#: n/skins/custom_control/folder_up_control.py:17 msgid "%d item moved up.%d items moved up." msgstr "%d élément déplacé vers le haut.%d éléments déplacés vers le haut." -#: skins/custom_generic/folder_contents_template.pt:26 +#: n/skins/custom_generic/folder_contents_template.pt:26 msgid "Up" msgstr "Haut" -#: skins/custom_generic/folder_contents_template.pt:29 +#: n/skins/custom_generic/folder_contents_template.pt:29 msgid "Down" msgstr "Bas" #. Default: "by" -#: skins/custom_generic/folder_contents_template.pt:31 +#: n/skins/custom_generic/folder_contents_template.pt:31 msgid "move_by" msgstr "de" -#: skins/custom_generic/folder_contents_template.pt:39 +#: n/skins/custom_generic/folder_contents_template.pt:39 msgid "Top" msgstr "Premier" -#: skins/custom_generic/folder_contents_template.pt:41 +#: n/skins/custom_generic/folder_contents_template.pt:41 msgid "Bottom" msgstr "Dernier" -#: skins/custom_generic/logged_in.py:28 +#: n/skins/custom_generic/logged_in.py:28 msgid "Login failure" msgstr "Échec de la connexion" -#: skins/custom_generic/logged_in.py:50 +#: n/skins/custom_generic/logged_in.py:50 +#: n/skins/photo_theme/homepage_dispatcher.py:13 +#: n/skins/photo_theme/homepage_dispatcher.py:16 +#: n/skins/photo_theme/homepage_dispatcher.py:24 +#: n/skins/photo_theme/homepage_dispatcher.py:27 msgid "Login success" msgstr "Connexion réussie" -#: skins/custom_generic/mail_password_template.py:30 +#: n/skins/custom_generic/mail_password_template.py:30 msgid "${portal_title}: Membership reminder" msgstr "${portal_title} : rappel du mot de passe" -#: skins/custom_generic/mail_password_template.py:35 -#: skins/custom_generic/registered_notify_template.py:46 +#: n/skins/custom_generic/mail_password_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:46 msgid "" "Your member id and password are: Member ID: ${member_id} Password: " "${password}" @@ -480,13 +468,13 @@ msgstr "" "Vos login et mot de passe sont :login : ${member_id}mot de passe : " "${password}" -#: skins/custom_generic/mail_password_template.py:37 -#: skins/custom_generic/registered_notify_template.py:48 +#: n/skins/custom_generic/mail_password_template.py:37 +#: n/skins/custom_generic/registered_notify_template.py:48 msgid "You can use this URL to log in:" msgstr "Vous pouvez utiliser ce lien pour vous connecter :" -#: skins/custom_generic/mail_password_template.py:45 -#: skins/custom_generic/registered_notify_template.py:56 +#: n/skins/custom_generic/mail_password_template.py:45 +#: n/skins/custom_generic/registered_notify_template.py:56 msgid "" "Be aware that this URL might wrap over two lines. If your browser shows an " "error message when you try to access the URL please make sure that you put " @@ -496,56 +484,60 @@ msgstr "" "affiche un message d'erreur lorsque vous essayez d'y accéder, vérifier bien " "qu'il n'y a pas eu de troncature." -#: skins/custom_generic/mail_password_template.py:48 -#: skins/generic/load_revision.py:31 skins/generic/load_revision.py:38 +#: n/skins/custom_generic/mail_password_template.py:48 +#: n/skins/generic/load_revision.py:31 n/skins/generic/load_revision.py:38 msgid "%Y/%m/%d at %I:%M:%S %p" msgstr "%d/%m/%Y à %H:%M:%S" -#: skins/custom_generic/mail_password_template.py:50 +#: n/skins/custom_generic/mail_password_template.py:50 msgid "Request made by IP ${ip} at ${time}" msgstr "Requête faîte par l'IP ${ip} à ${time}" -#: skins/custom_generic/main_template_standard.pt:110 -#: skins/custom_generic/talkback_tree.pt:63 -#: skins/generic/main_template_ajax.pt:12 +#: n/skins/custom_generic/main_template_standard.pt:95 +#: n/skins/photo_theme/main_template_standard.pt:96 +msgid "Skip to content" +msgstr "Sauter au contenu" + +#: n/skins/custom_generic/main_template_standard.pt:110 +#: n/skins/custom_generic/talkback_tree.pt:63 +#: n/skins/generic/main_template_ajax.pt:12 +#: n/skins/photo_theme/main_template_standard.pt:118 msgid "Information" msgstr "Information" -#: skins/custom_generic/main_template_standard.pt:111 -#: skins/custom_generic/talkback_tree.pt:64 -#: skins/generic/main_template_ajax.pt:13 skins/generic/widgets.pt:17 +#: n/skins/custom_generic/main_template_standard.pt:111 +#: n/skins/custom_generic/talkback_tree.pt:64 +#: n/skins/generic/main_template_ajax.pt:13 n/skins/generic/widgets.pt:17 +#: n/skins/photo_theme/main_template_standard.pt:119 +#: n/skins/photo_theme/search_results_macros.pt:38 msgid "${DYNAMIC_CONTENT}" msgstr "${DYNAMIC_CONTENT}" -#: skins/custom_generic/main_template_standard.pt:95 -msgid "Skip to content" -msgstr "Sauter au contenu" +#: n/skins/custom_generic/reconfig_template.pt:79 +msgid "Copyright notice" +msgstr "Mention légale" -#: skins/custom_generic/reconfig_template.pt:124 +#: n/skins/custom_generic/reconfig_template.pt:83 +msgid "Copyright notice displayed on the portal footer." +msgstr "Mention légale affichée sur le pied de page du portail." + +#: n/skins/custom_generic/reconfig_template.pt:124 msgid "Default ajax options" msgstr "Options ajax par défaut" -#: skins/custom_generic/reconfig_template.pt:128 +#: n/skins/custom_generic/reconfig_template.pt:128 msgid "Enable handling of all clicks over links" msgstr "Activer l'interception de tous les clicks sur les liens" -#: skins/custom_generic/reconfig_template.pt:133 +#: n/skins/custom_generic/reconfig_template.pt:133 msgid "Enable handling of all forms submissions" msgstr "Activer l'interception de tous les envois de formulaires" -#: skins/custom_generic/reconfig_template.pt:79 -msgid "Copyright notice" -msgstr "Mention légale" - -#: skins/custom_generic/reconfig_template.pt:83 -msgid "Copyright notice displayed on the portal footer." -msgstr "Mention légale affichée sur le pied de page du portail." - -#: skins/custom_generic/registered_notify_template.py:30 +#: n/skins/custom_generic/registered_notify_template.py:30 msgid "${portal_title}: Your Membership Information" msgstr "${portal_title} : Vos informations d'inscription" -#: skins/custom_generic/registered_notify_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:35 msgid "" "You have been registered as a member of \"${portal_title}\", which allows " "you to personalize your view of the website and participate in the community." @@ -554,216 +546,207 @@ msgstr "" "vous permet de participer à la rédaction des contenus ainsi qu'à la " "communauté de ce site." -#: skins/custom_generic/registered_notify_template.py:39 +#: n/skins/custom_generic/registered_notify_template.py:39 msgid "This describes the purpose of the website:" msgstr "Voici le but de ce site web :" -#: skins/custom_generic/registered_notify_template.py:44 +#: n/skins/custom_generic/registered_notify_template.py:44 msgid "Visit us at ${portal_url}" msgstr "Rejoignez-nous sur ${portal_url}" -#: skins/custom_generic/talkback_tree.pt:27 +#: n/skins/custom_generic/talkback_tree.pt:27 msgid "by" msgstr "par" -#: skins/custom_generic/talkback_tree.pt:36 +#: n/skins/custom_generic/talkback_tree.pt:36 msgid "unknown" msgstr "inconnu" #. Default: "at" -#: skins/custom_generic/talkback_tree.pt:37 skins/generic/recent_news.pt:43 +#: n/skins/custom_generic/talkback_tree.pt:37 +#: n/skins/generic/recent_news.pt:43 msgid "at_(date)" msgstr "le" -#: skins/custom_generic/talkback_tree.pt:74 +#: n/skins/custom_generic/talkback_tree.pt:74 msgid "Body" msgstr "Corps" -#: skins/custom_generic/talkback_tree.pt:82 skins/generic/gruf_macros.pt:77 -#: skins/generic/gruf_macros.pt:410 skins/generic/header_widgets.pt:32 -#: skins/generic/header_widgets.pt:173 skins/generic/send_email_form.pt:79 +#: n/skins/custom_generic/talkback_tree.pt:82 +#: n/skins/generic/gruf_macros.pt:77 n/skins/generic/gruf_macros.pt:410 +#: n/skins/generic/header_widgets.pt:32 n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "Valider" -#: skins/custom_generic/talkback_tree.pt:85 +#: n/skins/custom_generic/talkback_tree.pt:85 msgid "Cancel" msgstr "Annuler" -#: skins/custom_generic/viewThreadsAtBottom.pt:10 +#: n/skins/custom_generic/viewThreadsAtBottom.pt:10 msgid "Comments:" msgstr "Commentaires :" #. Default: "Previous${number}" -#: skins/generic/batch_macros.pt:26 +#: n/skins/generic/batch_macros.pt:26 msgid "batch_previous_x_items" msgstr "${number} précédents" #. Default: "Next${number}items" -#: skins/generic/batch_macros.pt:32 +#: n/skins/generic/batch_macros.pt:32 msgid "batch_next_x_items" msgstr "${number} suivants" -#: skins/generic/calendar_macros.pt:159 skins/generic/calendar_macros.pt:161 +#: n/skins/generic/calendar_macros.pt:78 n/skins/generic/calendar_macros.pt:81 +#: n/skins/generic/calendar_macros.pt:128 +#: n/skins/generic/calendar_macros.pt:130 +msgid "Click to see hidden items" +msgstr "Cliquer pour voir les éléments masqués" + +#: n/skins/generic/calendar_macros.pt:88 +msgid "${dayName} ${monthName} ${dayNumber}" +msgstr "${dayName} ${dayNumber} ${monthName}" + +#: n/skins/generic/calendar_macros.pt:159 +#: n/skins/generic/calendar_macros.pt:161 msgid "Previous" msgstr "Précédent" -#: skins/generic/calendar_macros.pt:164 +#: n/skins/generic/calendar_macros.pt:164 msgid "Week" msgstr "Semaine" -#: skins/generic/calendar_macros.pt:166 +#: n/skins/generic/calendar_macros.pt:166 msgid "Month" msgstr "Mois" -#: skins/generic/calendar_macros.pt:171 skins/generic/calendar_macros.pt:173 +#: n/skins/generic/calendar_macros.pt:171 +#: n/skins/generic/calendar_macros.pt:173 msgid "Next" msgstr "Suivant" -#: skins/generic/calendar_macros.pt:78 skins/generic/calendar_macros.pt:81 -#: skins/generic/calendar_macros.pt:128 skins/generic/calendar_macros.pt:130 -msgid "Click to see hidden items" -msgstr "Cliquer pour voir les éléments masqués" - -#: skins/generic/calendar_macros.pt:88 -msgid "${dayName} ${monthName} ${dayNumber}" -msgstr "${dayName} ${dayNumber} ${monthName}" +#: n/skins/generic/content_depublish_form.pt:8 +msgid "Depublish: \"${docTitle}\"" +msgstr "Dépublier : « ${docTitle} Â»" -#: skins/generic/content_depublish_form.pt:10 +#: n/skins/generic/content_depublish_form.pt:10 msgid "depublish_transition_explanations" msgstr "" "La dépublication de ce document annulera son partage entre tout les membres " "du site et permettra à son créateur de le modifier à nouveau. Vous devez " "choisir quel sera l'état de destination pour effectuer l'opération." -#: skins/generic/content_depublish_form.pt:15 +#: n/skins/generic/content_depublish_form.pt:15 msgid "Select the destination state" msgstr "Sélectionnez l'état de destination" -#: skins/generic/content_depublish_form.pt:18 +#: n/skins/generic/content_depublish_form.pt:18 msgid "Private" msgstr "Privé" -#: skins/generic/content_depublish_form.pt:22 +#: n/skins/generic/content_depublish_form.pt:22 msgid "Shared" msgstr "Partagé" -#: skins/generic/content_depublish_form.pt:26 +#: n/skins/generic/content_depublish_form.pt:26 msgid "Depublish" msgstr "Dépublier" -#: skins/generic/content_depublish_form.pt:8 -msgid "Depublish: \"${docTitle}\"" -msgstr "Dépublier : « ${docTitle} Â»" - -#: skins/generic/content_make_private_form.pt:10 +#: n/skins/generic/content_make_private_form.pt:10 msgid "Make private: \"${docTitle}\"" msgstr "Rendre privé : « ${docTitle} Â»" #. Default: "share_transition_explanations" -#: skins/generic/content_make_private_form.pt:11 +#: n/skins/generic/content_make_private_form.pt:11 msgid "make_private_transition_explanations" msgstr "" "Une fois ce changement effectué, ce document ne sera visible que par vous " "même ainsi que les coordonnateurs." -#: skins/generic/content_make_private_form.pt:16 +#: n/skins/generic/content_make_private_form.pt:16 msgid "Make private" msgstr "Rendre privé" -#: skins/generic/content_publish_form.pt:10 +#: n/skins/generic/content_publish_form.pt:8 +msgid "Publish: \"${docTitle}\"" +msgstr "Publier : « ${docTitle} Â»" + +#: n/skins/generic/content_publish_form.pt:10 msgid "publish_transition_explanations" msgstr "" "La publication de ce document aura pour effet de le rendre disponible à " "l'ensemble des membres du site ainsi que d'empêcher sa supression." -#: skins/generic/content_publish_form.pt:17 -#: skins/generic/content_reject_form.pt:16 +#: n/skins/generic/content_publish_form.pt:17 +#: n/skins/generic/content_reject_form.pt:16 msgid "Notify by e-mail" msgstr "Notifier par mail" -#: skins/generic/content_publish_form.pt:26 +#: n/skins/generic/content_publish_form.pt:26 msgid "Publish" msgstr "Publier" -#: skins/generic/content_publish_form.pt:8 -msgid "Publish: \"${docTitle}\"" -msgstr "Publier : « ${docTitle} Â»" - -#: skins/generic/content_reject_form.pt:25 skins/generic/pending_members.pt:30 -msgid "Reject" -msgstr "Rejeter" - -#: skins/generic/content_reject_form.pt:8 +#: n/skins/generic/content_reject_form.pt:8 msgid "Reject: \"${objectid}\"" msgstr "Rejeter : « ${objectid} Â»" -#: skins/generic/content_reject_form.pt:9 +#: n/skins/generic/content_reject_form.pt:9 msgid "reject_transition_explanations" msgstr "" "Rejeter la publication de ce document pour que son propriétaire puisse " "continuer à travailler." -#: skins/generic/content_retract_form.pt:15 -msgid "Retract" -msgstr "Retirer" +#: n/skins/generic/content_reject_form.pt:25 +#: n/skins/generic/pending_members.pt:30 +msgid "Reject" +msgstr "Rejeter" -#: skins/generic/content_retract_form.pt:8 +#: n/skins/generic/content_retract_form.pt:8 msgid "Retract: \"${objectid}\"" msgstr "Retirer : « ${objectid} Â»" -#: skins/generic/content_retract_form.pt:9 +#: n/skins/generic/content_retract_form.pt:9 msgid "retract_transition_explanations" msgstr "" "Le retrait d'un document a pour effet d'annuler sa soumission pour le " "remettre à l'état privé." -#: skins/generic/content_share_form.pt:10 +#: n/skins/generic/content_retract_form.pt:15 +msgid "Retract" +msgstr "Retirer" + +#: n/skins/generic/content_share_form.pt:10 msgid "Share: \"${docTitle}\"" msgstr "Partager : « ${docTitle} Â»" -#: skins/generic/content_share_form.pt:11 +#: n/skins/generic/content_share_form.pt:11 msgid "share_transition_explanations" msgstr "" "Partager signifie que l'ensemble des utilisateurs ayant accès à ce dossier " "pourra lire ce document." -#: skins/generic/content_share_form.pt:16 +#: n/skins/generic/content_share_form.pt:16 msgid "Share" msgstr "Partager" -#: skins/generic/content_submit_form.pt:15 -msgid "Submit" -msgstr "Soumettre" - -#: skins/generic/content_submit_form.pt:8 +#: n/skins/generic/content_submit_form.pt:8 msgid "Submit: \"${objectid}\" for Review." msgstr "Soumettre : « ${objectid} Â» pour validation." -#: skins/generic/content_submit_form.pt:9 +#: n/skins/generic/content_submit_form.pt:9 msgid "submit_transition_explanations" msgstr "" "Soumettre ce document en vue d'une validation accordée par un modérateur." -#: skins/generic/default_home_page_content.pt:2 -msgid "Welcome to Plinn!" -msgstr "Bienvenue sur Plinn !" - -#: skins/generic/default_home_page_content.pt:3 -msgid "This is the default home page." -msgstr "Ceci est la page d'accueil par défaut." - -#: skins/generic/default_home_page_content.pt:4 -#: skins/generic/default_member_content.pt:4 -msgid "To change the content just select \"Edit\" in the Tab bar on the top." -msgstr "" -"Pour modifier cette page, sélectionner « Modifier » dans la barre d'onglets " -"ci-dessus. " +#: n/skins/generic/content_submit_form.pt:15 +msgid "Submit" +msgstr "Soumettre" -#: skins/generic/default_member_content.pt:2 +#: n/skins/generic/default_member_content.pt:2 msgid "Default page for ${memberFullName}" msgstr "Page d'accueil de ${memberFullName}" -#: skins/generic/default_member_content.pt:3 +#: n/skins/generic/default_member_content.pt:3 msgid "" "This is the default document created for you when you have been registered " "in this portal." @@ -771,322 +754,334 @@ msgstr "" "Ceci est la page par défaut qui a été créé" "e automatiquement lorsque vous avez été inscrit sur le portail." -#: skins/generic/groups_members.pt:35 +#: n/skins/generic/default_member_content.pt:4 +msgid "To change the content just select \"Edit\" in the Tab bar on the top." +msgstr "" +"Pour modifier cette page, sélectionner « Modifier » dans la barre d'onglets " +"ci-dessus. " + +#: n/skins/generic/groups_members.pt:35 msgid "Members of \"${groupId}\"" msgstr "Membres pour « ${groupId} Â»" -#: skins/generic/groups_members.pt:47 +#: n/skins/generic/groups_members.pt:47 msgid "Groups of \"${groupId}\"" msgstr "Groupes pour « ${groupId} Â»" -#: skins/generic/gruf_macros.pt:105 +#: n/skins/generic/gruf_macros.pt:25 +msgid "Group Tree" +msgstr "Arborescence des groupes" + +#: n/skins/generic/gruf_macros.pt:45 n/skins/generic/header_widgets.pt:70 +msgid "Identifier" +msgstr "Identifiant" + +#: n/skins/generic/gruf_macros.pt:63 n/skins/generic/gruf_macros.pt:319 +msgid "Shared folder" +msgstr "Dossier partagé" + +#: n/skins/generic/gruf_macros.pt:66 +msgid "Open shared folder..." +msgstr "Ouvrir le dossier partagé" + +#: n/skins/generic/gruf_macros.pt:69 n/skins/generic/gruf_macros.pt:321 +msgid "Create" +msgstr "Créer" + +#: n/skins/generic/gruf_macros.pt:90 +msgid "Implicit roles" +msgstr "Rôles implicites" + +#: n/skins/generic/gruf_macros.pt:98 +msgid "Explicit roles" +msgstr "Rôles explicites" + +#: n/skins/generic/gruf_macros.pt:105 msgid "Remove" msgstr "Retirer" -#: skins/generic/gruf_macros.pt:112 +#: n/skins/generic/gruf_macros.pt:112 msgid "Append" msgstr "Ajouter" -#: skins/generic/gruf_macros.pt:129 skins/generic/gruf_macros.pt:164 +#: n/skins/generic/gruf_macros.pt:129 n/skins/generic/gruf_macros.pt:164 msgid "Outside group" msgstr "Non membres" -#: skins/generic/gruf_macros.pt:131 skins/generic/gruf_macros.pt:166 +#: n/skins/generic/gruf_macros.pt:131 n/skins/generic/gruf_macros.pt:166 msgid "Inside group" msgstr "Membres" -#: skins/generic/gruf_macros.pt:148 skins/generic/gruf_macros.pt:183 +#: n/skins/generic/gruf_macros.pt:148 n/skins/generic/gruf_macros.pt:183 msgid "None" msgstr "Aucun" -#: skins/generic/gruf_macros.pt:197 +#: n/skins/generic/gruf_macros.pt:197 msgid "All members" msgstr "Tous les membres" -#: skins/generic/gruf_macros.pt:210 +#: n/skins/generic/gruf_macros.pt:210 msgid "Edit" msgstr "Modifier" -#: skins/generic/gruf_macros.pt:224 +#: n/skins/generic/gruf_macros.pt:224 msgid "All groups" msgstr "Tous les groupes" -#: skins/generic/gruf_macros.pt:247 +#: n/skins/generic/gruf_macros.pt:247 msgid "Add new member" msgstr "Nouveau membre" -#: skins/generic/gruf_macros.pt:25 -msgid "Group Tree" -msgstr "Arborescence des groupes" - -#: skins/generic/gruf_macros.pt:250 skins/generic/gruf_macros.pt:365 +#: n/skins/generic/gruf_macros.pt:250 n/skins/generic/gruf_macros.pt:365 msgid "Login" msgstr "Login" -#: skins/generic/gruf_macros.pt:256 skins/generic/gruf_macros.pt:378 -#: skins/generic/last_member_logs.pt:23 skins/generic/pending_members.pt:13 +#: n/skins/generic/gruf_macros.pt:256 n/skins/generic/gruf_macros.pt:378 +#: n/skins/generic/last_member_logs.pt:23 +#: n/skins/generic/pending_members.pt:13 msgid "Name" msgstr "Nom" -#: skins/generic/gruf_macros.pt:262 skins/generic/gruf_macros.pt:384 +#: n/skins/generic/gruf_macros.pt:262 n/skins/generic/gruf_macros.pt:384 msgid "Given Name" msgstr "Prénom" -#: skins/generic/gruf_macros.pt:268 skins/generic/gruf_macros.pt:390 +#: n/skins/generic/gruf_macros.pt:268 n/skins/generic/gruf_macros.pt:390 msgid "Password" msgstr "Mot de passe" -#: skins/generic/gruf_macros.pt:274 skins/generic/gruf_macros.pt:396 +#: n/skins/generic/gruf_macros.pt:274 n/skins/generic/gruf_macros.pt:396 msgid "Confirm" msgstr "Confirmation" -#: skins/generic/gruf_macros.pt:280 skins/generic/gruf_macros.pt:402 +#: n/skins/generic/gruf_macros.pt:280 n/skins/generic/gruf_macros.pt:402 msgid "Email address" msgstr "Adresse e-mail" -#: skins/generic/gruf_macros.pt:298 +#: n/skins/generic/gruf_macros.pt:298 msgid "Add new group" msgstr "Nouveau groupe" -#: skins/generic/gruf_macros.pt:301 +#: n/skins/generic/gruf_macros.pt:301 msgid "Id" msgstr "Identifiant" -#: skins/generic/gruf_macros.pt:371 +#: n/skins/generic/gruf_macros.pt:371 msgid "Groups" msgstr "Groupes" -#: skins/generic/gruf_macros.pt:373 +#: n/skins/generic/gruf_macros.pt:373 msgid "explicitly:" msgstr "explicitement :" -#: skins/generic/gruf_macros.pt:374 +#: n/skins/generic/gruf_macros.pt:374 msgid "implicitly:" msgstr "implicitement :" -#: skins/generic/gruf_macros.pt:415 +#: n/skins/generic/gruf_macros.pt:415 msgid "Tree view by this member" msgstr "Arborescence vue par ce membre" -#: skins/generic/gruf_macros.pt:416 +#: n/skins/generic/gruf_macros.pt:416 msgid "Click here to see the tree viewed by this member >>" msgstr "Cliquer ici pour afficher l'arborescence vue par ce membre >>" -#: skins/generic/gruf_macros.pt:440 +#: n/skins/generic/gruf_macros.pt:440 msgid "collapse all" msgstr "condenser tout" -#: skins/generic/gruf_macros.pt:45 skins/generic/header_widgets.pt:70 -msgid "Identifier" -msgstr "Identifiant" - -#: skins/generic/gruf_macros.pt:471 +#: n/skins/generic/gruf_macros.pt:471 msgid "<< Back to member properties" msgstr "<< Revenir aux propriétés du membre" -#: skins/generic/gruf_macros.pt:63 skins/generic/gruf_macros.pt:319 -msgid "Shared folder" -msgstr "Dossier partagé" +#: n/skins/generic/header_widgets.pt:33 +msgid "Edit all metadata" +msgstr "Éditer toutes les métadonnées" -#: skins/generic/gruf_macros.pt:66 -msgid "Open shared folder..." -msgstr "Ouvrir le dossier partagé" +#: n/skins/generic/header_widgets.pt:54 +msgid "Enable Discussion?" +msgstr "Activer les commentaires ?" -#: skins/generic/gruf_macros.pt:69 skins/generic/gruf_macros.pt:321 -msgid "Create" -msgstr "Créer" +#: n/skins/generic/header_widgets.pt:57 +msgid "Default" +msgstr "Par défaut" -#: skins/generic/gruf_macros.pt:90 -msgid "Implicit roles" -msgstr "Rôles implicites" +#: n/skins/generic/header_widgets.pt:60 +msgid "Off" +msgstr "Désactiver" -#: skins/generic/gruf_macros.pt:98 -msgid "Explicit roles" -msgstr "Rôles explicites" +#: n/skins/generic/header_widgets.pt:63 +msgid "On" +msgstr "Activer" + +#: n/skins/generic/header_widgets.pt:91 +msgid "Subject" +msgstr "Sujet" -#: skins/generic/header_widgets.pt:108 +#: n/skins/generic/header_widgets.pt:108 msgid "Contributors" msgstr "Contributeurs" -#: skins/generic/header_widgets.pt:115 +#: n/skins/generic/header_widgets.pt:115 msgid "Creation Date" msgstr "Date de création" -#: skins/generic/header_widgets.pt:118 +#: n/skins/generic/header_widgets.pt:118 msgid "Last Modified Date" msgstr "Dernière modification" -#: skins/generic/header_widgets.pt:130 +#: n/skins/generic/header_widgets.pt:130 msgid "Effective Date" msgstr "Date de mise en ligne" -#: skins/generic/header_widgets.pt:141 +#: n/skins/generic/header_widgets.pt:141 msgid "Expiration Date" msgstr "Date d'expiration" -#: skins/generic/header_widgets.pt:147 skins/generic/wysiwyg_support.pt:108 +#: n/skins/generic/header_widgets.pt:147 n/skins/generic/wysiwyg_support.pt:43 msgid "Format" msgstr "Format" -#: skins/generic/header_widgets.pt:155 +#: n/skins/generic/header_widgets.pt:155 msgid "Language" msgstr "Langue" -#: skins/generic/header_widgets.pt:163 +#: n/skins/generic/header_widgets.pt:163 msgid "Rights" msgstr "Droits" -#: skins/generic/header_widgets.pt:174 +#: n/skins/generic/header_widgets.pt:174 msgid "Edit standard metadata" msgstr "Éditer les métadonnées standard" -#: skins/generic/header_widgets.pt:33 -msgid "Edit all metadata" -msgstr "Éditer toutes les métadonnées" - -#: skins/generic/header_widgets.pt:54 -msgid "Enable Discussion?" -msgstr "Activer les commentaires ?" - -#: skins/generic/header_widgets.pt:57 -msgid "Default" -msgstr "Par défaut" - -#: skins/generic/header_widgets.pt:60 -msgid "Off" -msgstr "Désactiver" - -#: skins/generic/header_widgets.pt:63 -msgid "On" -msgstr "Activer" - -#: skins/generic/header_widgets.pt:91 -msgid "Subject" -msgstr "Sujet" - -#: skins/generic/last_member_logs.pt:19 +#: n/skins/generic/last_member_logs.pt:19 msgid "Last member login times" msgstr "Dates de dernière connexion des membres" -#: skins/generic/last_member_logs.pt:27 +#: n/skins/generic/last_member_logs.pt:27 msgid "Last login time" msgstr "Dernière connexion" -#: skins/generic/load_revision.py:29 -#: skins/content/changes_history_template.pt:63 -msgid "nobody" -msgstr "personne" - -#: skins/generic/load_revision.py:38 +#: n/skins/generic/load_revision.py:38 msgid "state of %s" msgstr "état au %s" -#: skins/generic/local_roles_macros.pt:160 -msgid "No more group available for the ${role} role in this folder" -msgstr "Plus de groupe disponible pour le rôle de ${role} dans ce dossier" - -#: skins/generic/local_roles_macros.pt:174 -msgid "No group have got the ${role} role in this folder" -msgstr "Aucun groupe ne dispose du rôle de ${role} dans ce dossier" - -#: skins/generic/local_roles_macros.pt:39 -#: skins/generic/local_roles_macros.pt:122 +#: n/skins/generic/local_roles_macros.pt:39 +#: n/skins/generic/local_roles_macros.pt:122 msgid "Current Role: \"${current_role}\"" msgstr "Rôle sélectionné : « ${current_role} Â»" -#: skins/generic/local_roles_macros.pt:45 -#: skins/generic/local_roles_macros.pt:127 +#: n/skins/generic/local_roles_macros.pt:45 +#: n/skins/generic/local_roles_macros.pt:127 msgid "ok" msgstr "ok" -#: skins/generic/local_roles_macros.pt:66 -#: skins/generic/local_roles_macros.pt:148 +#: n/skins/generic/local_roles_macros.pt:66 +#: n/skins/generic/local_roles_macros.pt:148 msgid "Haven't role" msgstr "N'a pas le rôle" -#: skins/generic/local_roles_macros.pt:72 -#: skins/generic/local_roles_macros.pt:150 +#: n/skins/generic/local_roles_macros.pt:72 +#: n/skins/generic/local_roles_macros.pt:150 msgid "Have role" msgstr "A le rôle" -#: skins/generic/local_roles_macros.pt:84 +#: n/skins/generic/local_roles_macros.pt:84 msgid "No more member available for the ${role} role in this folder" msgstr "Plus de membre disponible pour le rôle de ${role} dans ce dossier" -#: skins/generic/local_roles_macros.pt:99 +#: n/skins/generic/local_roles_macros.pt:99 msgid "Nobody have got the ${role} role in this folder" msgstr "Personne ne dispose du rôle de ${role} dans ce dossier" +#: n/skins/generic/local_roles_macros.pt:160 +msgid "No more group available for the ${role} role in this folder" +msgstr "Plus de groupe disponible pour le rôle de ${role} dans ce dossier" + +#: n/skins/generic/local_roles_macros.pt:174 +msgid "No group have got the ${role} role in this folder" +msgstr "Aucun groupe ne dispose du rôle de ${role} dans ce dossier" + #. Default: "%m/%d/%Y %Hh%M" -#: skins/generic/locale_date_fmt.pt:1 +#: n/skins/generic/locale_date_fmt.pt:1 msgid "locale_date_fmt" msgstr "%d/%m/%Y %Hh%M" -#: skins/generic/main_template_macros.pt:109 -msgid "Exit boxes editing" -msgstr "Quitter l'édition des boîtes" - -#: skins/generic/main_template_macros.pt:78 +#: n/skins/generic/main_template_macros.pt:78 +#: n/skins/photo_theme/main_template_macros.pt:91 msgid "You are here:" msgstr "Vous êtes ici :" -#: skins/generic/main_template_macros.pt:91 -#: skins/generic/main_template_macros.pt:94 -#: skins/generic/main_template_macros.pt:112 -#: skins/generic/main_template_macros.pt:113 +#: n/skins/generic/main_template_macros.pt:91 +#: n/skins/generic/main_template_macros.pt:94 +#: n/skins/generic/main_template_macros.pt:112 +#: n/skins/generic/main_template_macros.pt:113 +#: n/skins/photo_theme/main_template_macros.pt:100 +#: n/skins/photo_theme/main_template_macros.pt:113 msgid "Paste" msgstr "Coller" -#: skins/generic/pending_members.pt:14 +#: n/skins/generic/main_template_macros.pt:109 +#: n/skins/photo_theme/main_template_macros.pt:110 +msgid "Exit boxes editing" +msgstr "Quitter l'édition des boîtes" + +#: n/skins/generic/pending_members.pt:9 +msgid "Review members registration" +msgstr "Modérer l'inscription des membres" + +#: n/skins/generic/pending_members.pt:14 msgid "Email" msgstr "E-mail" -#: skins/generic/pending_members.pt:35 +#: n/skins/generic/pending_members.pt:35 msgid "Register" msgstr "Inscrire" -#: skins/generic/pending_members.pt:9 -msgid "Review members registration" -msgstr "Modérer l'inscription des membres" - -#: skins/generic/recent_news.pt:21 skins/generic/widgets.pt:123 +#: n/skins/generic/recent_news.pt:21 n/skins/generic/widgets.pt:123 msgid "News" msgstr "Actualités" -#: skins/generic/recent_news.pt:36 +#: n/skins/generic/recent_news.pt:36 msgid "by:" msgstr "par :" #. Default: "Read More" -#: skins/generic/recent_news.pt:49 +#: n/skins/generic/recent_news.pt:49 msgid "read_more" msgstr "lire la suite..." -#: skins/generic/recent_news.pt:57 +#: n/skins/generic/recent_news.pt:57 msgid "No news is good news!" msgstr "Pas de nouvelle bonne nouvelle !" -#: skins/generic/reject_member_form.pt:14 +#: n/skins/generic/reject_member_form.pt:9 +msgid "Reject registration of ${fullname}" +msgstr "Refuser l'inscription de ${fullname}" + +#: n/skins/generic/reject_member_form.pt:14 msgid "From:" msgstr "De :" -#: skins/generic/reject_member_form.pt:20 +#: n/skins/generic/reject_member_form.pt:20 msgid "To:" msgstr "À :" -#: skins/generic/reject_member_form.pt:27 skins/generic/send_email_form.pt:96 +#: n/skins/generic/reject_member_form.pt:27 +#: n/skins/generic/send_email_form.pt:96 msgid "Subject:" msgstr "Sujet :" -#: skins/generic/reject_member_form.pt:31 +#: n/skins/generic/reject_member_form.pt:31 msgid "Membership request denied" msgstr "Demande d'inscription refusée" -#: skins/generic/reject_member_form.pt:35 skins/generic/send_email_form.pt:101 +#: n/skins/generic/reject_member_form.pt:35 +#: n/skins/generic/send_email_form.pt:101 msgid "Message body:" msgstr "Texte du message :" -#: skins/generic/reject_member_form.pt:39 +#: n/skins/generic/reject_member_form.pt:39 msgid "" "I'm sorry to have to inform you that your request has been denied. Please " "contact the site administrator." @@ -1094,157 +1089,206 @@ msgstr "" "Nous sommes dans le regret de vous informer que votre demande d'inscription " "a été refusée. Merci de contacter l'administrateur du site." -#: skins/generic/reject_member_form.pt:45 +#: n/skins/generic/reject_member_form.pt:45 msgid "Send" msgstr "Envoyer" -#: skins/generic/reject_member_form.pt:9 -msgid "Reject registration of ${fullname}" -msgstr "Refuser l'inscription de ${fullname}" +#: n/skins/generic/request_password_reset_form.pt:11 +msgid "Password reset" +msgstr "" -#: skins/generic/revision_context_header.pt:10 +#: n/skins/generic/request_password_reset_form.pt:12 +msgid "" +"Enter your username below and click on the \"Send\" button. You will receive " +"an email with a link to reset your password." +msgstr "" + +#: n/skins/generic/request_password_reset_form.pt:18 +msgid "" +"If this will not work for you (for example, if you forget your username or " +"didn't enter your email address) send email to ${admin_email}." +msgstr "" + +#. Default: "Send" +#: n/skins/generic/request_password_reset_form.pt:25 +msgid " Send " +msgstr "" + +#: n/skins/generic/revision_context_header.pt:10 msgid "" "This is an old revision of this content, as edited by ${user} at ${datetime}." msgstr "" "Ceci est une révision archivée de ce contenu, tel qu'il a été enregistré par " "${user} le ${datetime}" -#: skins/generic/revision_context_header.pt:16 +#: n/skins/generic/revision_context_header.pt:16 msgid "Restore this revision" msgstr "Restaurer cette révision" -#: skins/generic/revision_context_header.pt:22 +#: n/skins/generic/revision_context_header.pt:22 msgid "← previous revision" msgstr "← révision précédente" -#: skins/generic/revision_context_header.pt:27 +#: n/skins/generic/revision_context_header.pt:27 msgid "current revision" msgstr "révision actuelle" -#: skins/generic/revision_context_header.pt:29 +#: n/skins/generic/revision_context_header.pt:29 msgid "next revision →" msgstr "révision suivante →" -#: skins/generic/search.py:109 skins/generic/search.py:113 +#: n/skins/generic/search.py:109 n/skins/generic/search.py:113 msgid "ascending sort" msgstr "tri croissant" -#: skins/generic/search_results_template.pt:16 +#: n/skins/generic/search_results_template.pt:16 msgid "Search Results" msgstr "Résultats de la recherche" -#: skins/generic/search_results_template.pt:23 +#: n/skins/generic/search_results_template.pt:23 msgid "Found ${count} ${item_s_match} '${text}'." msgstr "${count} ${item_s_match} « ${text} »" -#: skins/generic/search_results_template.pt:27 +#: n/skins/generic/search_results_template.pt:27 msgid "Found 1 item." msgstr "1 élément trouvé." -#: skins/generic/search_results_template.pt:28 +#: n/skins/generic/search_results_template.pt:28 msgid "Found ${count} items." msgstr "${count} éléments trouvés." -#: skins/generic/search_results_template.pt:41 -msgid "Creator" -msgstr "Créateur" - -#: skins/generic/search_results_template.pt:45 +#: n/skins/generic/search_results_template.pt:45 msgid "Last modified" msgstr "Dernière modification" -#: skins/generic/search_results_template.pt:65 -msgid "(No title)" -msgstr "(Sans titre)" - -#: skins/generic/search_results_template.pt:83 +#: n/skins/generic/search_results_template.pt:83 msgid "Save this search as topic" msgstr "Enregistrer cette recherche dans un thème" -#: skins/generic/search_results_template.pt:84 +#: n/skins/generic/search_results_template.pt:84 msgid "Title:" msgstr "Titre :" -#: skins/generic/search_results_template.pt:89 +#: n/skins/generic/search_results_template.pt:89 msgid "There are no items matching your specified criteria." msgstr "Aucun élément ne correspond aux critères de recherche." -#: skins/generic/send_email_form.pt:107 -msgid "Send email" -msgstr "Envoyer l'email" - -#: skins/generic/send_email_form.pt:110 -msgid "Note: This message will be stored in content history." -msgstr "Nota : Ce message sera enregistré dans l'historique du document." +#: n/skins/generic/send_email_form.pt:25 +msgid "Send an email" +msgstr "Envoyer un e-mail" -#: skins/generic/send_email_form.pt:29 +#: n/skins/generic/send_email_form.pt:29 msgid "Recipients:" msgstr "Destinataires :" -#: skins/generic/send_email_form.pt:47 +#: n/skins/generic/send_email_form.pt:47 msgid "(as copy)" msgstr "(en copie)" -#: skins/generic/send_email_form.pt:62 +#: n/skins/generic/send_email_form.pt:62 msgid "All (${nofpers} persons)" msgstr "Tous (${nofpers} personnes)" -#: skins/generic/send_email_form.pt:69 +#: n/skins/generic/send_email_form.pt:69 msgid "Show list" msgstr "Afficher la liste" -#: skins/generic/send_email_form.pt:79 +#: n/skins/generic/send_email_form.pt:79 msgid "(not required)" msgstr "(facultatif)" -#: skins/generic/send_email_form.pt:90 +#: n/skins/generic/send_email_form.pt:90 msgid "Others (on address by line)" msgstr "Autres (une adresse par ligne)" -#: skins/generic/wf_macros.pt:17 +#: n/skins/generic/send_email_form.pt:107 +msgid "Send email" +msgstr "Envoyer l'email" + +#: n/skins/generic/send_email_form.pt:110 +msgid "Note: This message will be stored in content history." +msgstr "Nota : Ce message sera enregistré dans l'historique du document." + +#: n/skins/generic/wf_macros.pt:17 msgid "Actor" msgstr "Acteur" -#: skins/generic/wf_macros.pt:18 +#: n/skins/generic/wf_macros.pt:18 msgid "Action" msgstr "Action" -#: skins/generic/wf_macros.pt:20 +#: n/skins/generic/wf_macros.pt:20 msgid "Email sent to" msgstr "E-mail envoyé à" -#: skins/generic/wf_macros.pt:28 +#: n/skins/generic/wf_macros.pt:28 msgid "(no comments)" msgstr "(pas de commentaire)" -#: skins/generic/wf_macros.pt:33 +#: n/skins/generic/wf_macros.pt:33 msgid "(no email sent)" msgstr "(pas d'e-mail envoyé)" -#: skins/generic/widgets.pt:128 -msgid "News Item" -msgstr "Actualité" - -#: skins/generic/widgets.pt:32 skins/generic/widgets.pt:33 +#: n/skins/generic/widgets.pt:32 n/skins/generic/widgets.pt:33 msgid "Edit metadata" msgstr "Éditer les métadonnées" -#: skins/generic/widgets.pt:53 +#: n/skins/generic/widgets.pt:53 msgid "Clipboard" msgstr "Presse-papier" -#: skins/generic/wysiwyg_support.pt:112 +#: n/skins/generic/widgets.pt:128 +msgid "News Item" +msgstr "Actualité" + +#: n/skins/generic/wysiwyg_support.pt:47 msgid "Structured text" msgstr "Texte structuré" -#: skins/generic/wysiwyg_support.pt:118 +#: n/skins/generic/wysiwyg_support.pt:53 msgid "HTML" msgstr "HTML" -#: skins/generic/wysiwyg_support.pt:124 +#: n/skins/generic/wysiwyg_support.pt:59 msgid "Plain text" msgstr "Texte brut" +#: n/skins/photo_theme/logout.py:15 +msgid "You have been logged out." +msgstr "" + +#: n/skins/photo_theme/main_template_macros.pt:55 +msgid "Loading progress..." +msgstr "Chargement en cours..." + +#: n/skins/photo_theme/realis_main_macros.pt:28 +msgid "Join" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:12 +msgid "Title" +msgstr "Titre" + +#: n/skins/photo_theme/search_results_macros.pt:13 +msgid "Creator" +msgstr "Créateur" + +#: n/skins/photo_theme/search_results_macros.pt:14 +msgid "Type" +msgstr "Type" + +#: n/skins/photo_theme/search_results_macros.pt:15 +msgid "Date" +msgstr "Date" + +#: n/skins/photo_theme/search_results_macros.pt:32 +msgid "(No title)" +msgstr "(Sans titre)" + +#: n/skins/photo_theme/search_results_macros.pt:45 +msgid "(No description)" +msgstr "" + msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" msgstr "${day}/${month}/${year}  ${hour}:${minute}:${second}" @@ -1656,9 +1700,6 @@ msgstr "Lister le dossier parent" msgid "Listen" msgstr "Écouter" -msgid "Loading progress..." -msgstr "Chargement en cours..." - msgid "Local Roles" msgstr "Rôles locaux" @@ -2130,6 +2171,39 @@ msgstr "Cc" msgid "mail_bcc" msgstr "Cci" +#~ msgid "List" +#~ msgstr "Lister" + +#~ msgid "Manage Boxes" +#~ msgstr "Gérer les boîtes" + +#~ msgid "Configure Portal" +#~ msgstr "Configurer le portail" + +#~ msgid "Directory" +#~ msgstr "Annuaire" + +#~ msgid "Add comment..." +#~ msgstr "Ajouter un commentaire..." + +#~ msgid "Calendar View" +#~ msgstr "Calendrier" + +#~ msgid "Created" +#~ msgstr "Créé" + +#~ msgid "Modified" +#~ msgstr "Modifié" + +#~ msgid "Preview:" +#~ msgstr "Aperçu :" + +#~ msgid "Welcome to Plinn!" +#~ msgstr "Bienvenue sur Plinn !" + +#~ msgid "This is the default home page." +#~ msgstr "Ceci est la page d'accueil par défaut." + #~ msgid "" #~ "You have been registered as a member of \"%(portal_title)s\", which\n" #~ "allows you to personalize your view of the website and participate in\n" diff --git a/locales/plinn-manual.pot b/locales/plinn-manual.pot index dad2ec4..a7b6772 100644 --- a/locales/plinn-manual.pot +++ b/locales/plinn-manual.pot @@ -411,9 +411,6 @@ msgstr "" msgid "Listen" msgstr "" -msgid "Loading progress..." -msgstr "" - msgid "Local Roles" msgstr "" diff --git a/locales/plinn.pot b/locales/plinn.pot index d702b38..daff451 100644 --- a/locales/plinn.pot +++ b/locales/plinn.pot @@ -1,75 +1,75 @@ -############################################################ -# Copyright © 2005-2009 Benoît Pin # -# Plinn - http://plinn.org # -# # -# This program is free software; you can redistribute it # -# and/or modify it under the terms of the Creative Commons # -# "Attribution-Noncommercial 2.0 Generic" # -# http://creativecommons.org/licenses/by-nc/2.0/ # -############################################################ +############################################################################## +# +# Copyright (c) 2003-2004 Zope Foundation and Contributors. +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# +############################################################################## msgid "" msgstr "" -"Project-Id-Version: Plinn 2\n" -"POT-Creation-Date: $Date: Fri Oct 30 14:42:26 2009 $\n" -"Language-Team: Benoît Pin \n" +"Project-Id-Version: 2.0 beta 1\n" +"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Zope 3 Developers \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Generated-By: zope/app/locales/extract.py\n" -#: EmailNotification.py:38 +#: n/EmailNotification.py:38 msgid "Object deleted" msgstr "" -#: Folder.py:149 +#: n/Folder.py:162 msgid "Please rename each listed object." msgstr "" -#: MembershipTool.py:401 -#. Default: "" +#: n/MembershipTool.py:406 msgid "%s's Home" msgstr "" -#: MembershipTool.py:402 -#. Default: "" +#: n/MembershipTool.py:407 msgid "%s's front page" msgstr "" -#: profiles/default/actions.xml:107 -msgid "List" +#: n/RegistrationTool.py:217 +msgid "Invalid reset password request." msgstr "" -#: profiles/default/actions.xml:122 -msgid "Manage Boxes" +#: n/RegistrationTool.py:222 +msgid "Invalid userid." msgstr "" -#: profiles/default/actions.xml:134 -#: skins/generic/send_email_form.pt:25 -msgid "Send an email" -msgstr "" - -#: profiles/default/actions.xml:156 -msgid "Configure Portal" -msgstr "" - -#: profiles/default/actions.xml:167 -msgid "Directory" +#: n/RegistrationTool.py:226 +msgid "Your reset password request has expired. You can ask a new one." msgstr "" -#: profiles/default/actions.xml:181 -msgid "Add comment..." +#: n/RegistrationTool.py:235 +msgid "Password successfully resetted." msgstr "" -#: profiles/default/actions.xml:209 -msgid "Calendar View" +#: n/RegistrationTool.py:237 +msgid "\"%s\" username not found." msgstr "" -#: profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 -#: profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 -#: profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/default/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/default_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 +#: n/profiles/photo/workflows/portfolio_workflow/scripts/sendNotificationEmail.py:52 msgid "Document state change notificaction" msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:35 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:35 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:35 msgid "" "\n" "You have been registered as a member of \"%(portal_title)s\", which\n" @@ -77,1168 +77,2064 @@ msgid "" "the community.\n" msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:43 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:43 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:43 msgid "" "You will receive an other mail with your randomly-generated\n" "password. Once you have logged in with this password, you\n" "may change it to anything you like." msgstr "" -#: profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:55 +#: n/profiles/default/workflows/member_workflow/scripts/sendNotificationEmail.py:55 +#: n/profiles/photo/workflows/member_workflow/scripts/sendNotificationEmail.py:55 msgid "your registration has been accepted" msgstr "" -#: skins/content/cal_calendar_view.pt:30 -#: skins/content/cal_calendar_view.pt:30 +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:51 +msgid "Tracking number" +msgstr "" + +#: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:55 +msgid "Tracking url" +msgstr "" + +#: n/skins/content/cal_calendar_view.pt:30 +#: n/skins/content/cal_calendar_view.pt:30 msgid "Add a new event..." msgstr "" -#: skins/content/cal_calendar_view.pt:37 -#: skins/content/cal_calendar_view.pt:40 +#: n/skins/content/cal_calendar_view.pt:37 +#: n/skins/content/cal_calendar_view.pt:40 msgid "Remove event..." msgstr "" -#: skins/content/cal_calendar_view.pt:50 +#: n/skins/content/cal_calendar_view.pt:50 msgid "The next click over an event will remove it!" msgstr "" -#: skins/content/cal_calendar_view.pt:51 +#: n/skins/content/cal_calendar_view.pt:51 msgid "Cancel delete mode" msgstr "" -#: skins/content/changes_history_template.pt:24 +#: n/skins/content/changes_history_template.pt:24 msgid "\302\253 later revisions" msgstr "" -#: skins/content/changes_history_template.pt:28 +#: n/skins/content/changes_history_template.pt:28 msgid "earlier revisions \302\273" msgstr "" -#: skins/content/changes_history_template.pt:36 -#: skins/content/list_pending_contents.pt:42 -#: skins/generic/wf_macros.pt:16 -msgid "Date" +#: n/skins/content/changes_history_template.pt:37 +msgid "user" msgstr "" -#: skins/content/changes_history_template.pt:37 -msgid "user" +#: n/skins/content/changes_history_template.pt:63 +#: n/skins/generic/load_revision.py:29 +msgid "nobody" msgstr "" -#: skins/content/changes_history_template.pt:70 +#: n/skins/content/changes_history_template.pt:70 msgid "Compare" msgstr "" -#: skins/content/changes_history_template.pt:72 +#: n/skins/content/changes_history_template.pt:72 msgid "Please select one revision per column to compare." msgstr "" -#: skins/content/content_info.pt:16 -#: skins/content/file_info.pt:12 -#: skins/content/list_pending_contents.pt:31 -#: skins/custom_generic/talkback_tree.pt:68 -#: skins/generic/gruf_macros.pt:51 -#: skins/generic/gruf_macros.pt:307 -#: skins/generic/header_widgets.pt:18 -#: skins/generic/header_widgets.pt:75 -#: skins/generic/search_results_template.pt:37 -msgid "Title" -msgstr "" - -#: skins/content/content_info.pt:20 -#: skins/content/file_info.pt:20 -msgid "Created" -msgstr "" - -#: skins/content/content_info.pt:24 -#: skins/content/file_info.pt:24 -msgid "Modified" -msgstr "" - -#: skins/content/content_info.pt:9 -#: skins/content/file_info.pt:5 -msgid "Preview:" -msgstr "" - -#: skins/content/dateCriterionResolvedDescription.py:15 +#: n/skins/content/dateCriterionResolvedDescription.py:15 msgid "search from the beginning of the world until %s" msgstr "" -#: skins/content/dateCriterionResolvedDescription.py:17 +#: n/skins/content/dateCriterionResolvedDescription.py:17 msgid "search from %s and the end of the world" msgstr "" -#: skins/content/dateCriterionResolvedDescription.py:19 +#: n/skins/content/dateCriterionResolvedDescription.py:19 msgid "search between %s and %s" msgstr "" -#: skins/content/file_info.pt:16 -msgid "Type" -msgstr "" - -#: skins/content/folder_notifications_template.pt:23 -#: skins/content/topic_edit_template.pt:26 -#: skins/custom_content/event_edit_template.pt:135 -#: skins/generic/search_results_template.pt:87 +#: n/skins/content/folder_notifications_template.pt:23 +#: n/skins/content/topic_edit_template.pt:26 +#: n/skins/custom_content/event_edit_template.pt:135 +#: n/skins/generic/search_results_template.pt:87 msgid "Save" msgstr "" -#: skins/content/list_pending_contents.pt:23 +#: n/skins/content/list_pending_contents.pt:23 msgid "Pending documents" msgstr "" -#: skins/content/list_pending_contents.pt:37 +#: n/skins/content/list_pending_contents.pt:37 msgid "Submit by:" msgstr "" -#: skins/content/no_preview.pt:11 +#: n/skins/content/no_preview.pt:11 msgid "No preview available for this file" msgstr "" -#: skins/content/topic_edit_template.pt:16 +#: n/skins/content/topic_edit_template.pt:16 msgid "Reuse criteria from parent:" msgstr "" -#: skins/content/topic_edit_template.pt:17 +#: n/skins/content/topic_edit_template.pt:17 msgid "yes" msgstr "" -#: skins/content/topic_edit_template.pt:18 +#: n/skins/content/topic_edit_template.pt:18 msgid "no" msgstr "" -#: skins/content/topic_edit_template.pt:27 -#: skins/generic/gruf_macros.pt:211 -#: skins/generic/gruf_macros.pt:235 +#: n/skins/content/topic_edit_template.pt:27 +#: n/skins/generic/gruf_macros.pt:211 +#: n/skins/generic/gruf_macros.pt:235 msgid "Remove selected" msgstr "" -#: skins/content/topic_edit_template.pt:30 +#: n/skins/content/topic_edit_template.pt:30 msgid "New criterion:" msgstr "" -#: skins/content/topic_edit_template.pt:33 +#: n/skins/content/topic_edit_template.pt:33 msgid "Name:" msgstr "" -#: skins/content/topic_edit_template.pt:41 +#: n/skins/content/topic_edit_template.pt:41 msgid "Type:" msgstr "" -#: skins/content/topic_edit_template.pt:51 -#: skins/generic/gruf_macros.pt:288 -#: skins/generic/gruf_macros.pt:327 +#: n/skins/content/topic_edit_template.pt:51 +#: n/skins/generic/gruf_macros.pt:288 +#: n/skins/generic/gruf_macros.pt:327 msgid "Add" msgstr "" -#: skins/control/restore_revision.py:9 +#: n/skins/control/restore_revision.py:9 msgid "%(type)s restored." msgstr "" -#: skins/control/save_search_as_topic.py:20 +#: n/skins/control/save_search_as_topic.py:20 msgid "Topic added." msgstr "" -#: skins/custom_content/content_status_history.pt:12 -#: skins/custom_content/transition_form.pt:25 -msgid "Current state:" -msgstr "" - -#: skins/custom_content/content_status_history.pt:9 -#: skins/custom_content/transition_form.pt:46 +#: n/skins/custom_content/content_status_history.pt:9 +#: n/skins/custom_content/transition_form.pt:46 msgid "Reviewing history" msgstr "" -#: skins/custom_content/discussionitem_view.pt:24 -msgid "Above in thread:" -msgstr "" - -#: skins/custom_content/event_edit_template.pt:115 -#: skins/custom_content/event_view.pt:57 -#: skins/generic/gruf_macros.pt:57 -#: skins/generic/gruf_macros.pt:313 -#: skins/generic/header_widgets.pt:24 -#: skins/generic/header_widgets.pt:85 -msgid "Description" +#: n/skins/custom_content/content_status_history.pt:12 +#: n/skins/custom_content/transition_form.pt:25 +msgid "Current state:" msgstr "" -#: skins/custom_content/event_edit_template.pt:121 -#: skins/custom_content/event_view.pt:33 -msgid "Event URL" +#: n/skins/custom_content/discussionitem_view.pt:24 +msgid "Above in thread:" msgstr "" -#: skins/custom_content/event_edit_template.pt:20 -#: skins/custom_content/event_view.pt:11 +#: n/skins/custom_content/event_edit_template.pt:20 +#: n/skins/custom_content/event_view.pt:11 msgid "Event Name" msgstr "" -#: skins/custom_content/event_edit_template.pt:24 -#: skins/custom_content/event_view.pt:27 +#: n/skins/custom_content/event_edit_template.pt:24 +#: n/skins/custom_content/event_view.pt:27 msgid "Event type" msgstr "" -#: skins/custom_content/event_edit_template.pt:27 -#: skins/custom_content/event_view.pt:17 +#: n/skins/custom_content/event_edit_template.pt:27 +#: n/skins/custom_content/event_view.pt:17 msgid "Location" msgstr "" -#: skins/custom_content/event_edit_template.pt:38 -#: skins/custom_content/event_view.pt:13 +#: n/skins/custom_content/event_edit_template.pt:38 +#: n/skins/custom_content/event_view.pt:13 msgid "Contact Name" msgstr "" -#: skins/custom_content/event_edit_template.pt:44 -#: skins/custom_content/event_view.pt:19 +#: n/skins/custom_content/event_edit_template.pt:44 +#: n/skins/custom_content/event_view.pt:19 msgid "Contact Email" msgstr "" -#: skins/custom_content/event_edit_template.pt:50 -#: skins/custom_content/event_view.pt:29 +#: n/skins/custom_content/event_edit_template.pt:50 +#: n/skins/custom_content/event_view.pt:29 msgid "Contact Phone" msgstr "" -#: skins/custom_content/event_edit_template.pt:67 +#: n/skins/custom_content/event_edit_template.pt:67 msgid "Beginning" msgstr "" -#: skins/custom_content/event_edit_template.pt:78 -#: skins/custom_content/event_edit_template.pt:103 -#: skins/generic/widgets.pt:94 +#: n/skins/custom_content/event_edit_template.pt:78 +#: n/skins/custom_content/event_edit_template.pt:103 +#: n/skins/generic/widgets.pt:94 msgid "${month} / ${day} / ${year}  ${hour} : ${minute}" msgstr "" -#: skins/custom_content/event_edit_template.pt:92 +#: n/skins/custom_content/event_edit_template.pt:92 msgid "End" msgstr "" -#: skins/custom_content/event_view.pt:44 +#: n/skins/custom_content/event_edit_template.pt:115 +#: n/skins/custom_content/event_view.pt:57 +#: n/skins/generic/gruf_macros.pt:57 +#: n/skins/generic/gruf_macros.pt:313 +#: n/skins/generic/header_widgets.pt:24 +#: n/skins/generic/header_widgets.pt:85 +msgid "Description" +msgstr "" + +#: n/skins/custom_content/event_edit_template.pt:121 +#: n/skins/custom_content/event_view.pt:33 +msgid "Event URL" +msgstr "" + +#: n/skins/custom_content/event_view.pt:44 msgid "Start Date" msgstr "" -#: skins/custom_content/event_view.pt:49 +#: n/skins/custom_content/event_view.pt:49 msgid "Stop Date" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:14 +#: n/skins/custom_content/friendlydatec_editform.pt:14 msgid "At the least:" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:17 +#: n/skins/custom_content/friendlydatec_editform.pt:17 msgid "At the most:" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:20 +#: n/skins/custom_content/friendlydatec_editform.pt:20 msgid "Within the day:" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:37 +#: n/skins/custom_content/friendlydatec_editform.pt:37 #. Default: "old" msgid "daterange_old" msgstr "" -#: skins/custom_content/friendlydatec_editform.pt:40 +#: n/skins/custom_content/friendlydatec_editform.pt:40 #. Default: "ahead" msgid "daterange_ahead" msgstr "" -#: skins/custom_content/listc_edit.pt:16 +#: n/skins/custom_content/listc_edit.pt:16 msgid "Operator:" msgstr "" -#: skins/custom_content/listc_edit.pt:18 +#: n/skins/custom_content/listc_edit.pt:18 msgid "or" msgstr "" -#: skins/custom_content/listc_edit.pt:21 -#: skins/custom_generic/talkback_tree.pt:32 +#: n/skins/custom_content/listc_edit.pt:21 +#: n/skins/custom_generic/talkback_tree.pt:32 msgid "and" msgstr "" -#: skins/custom_content/sic_edit.pt:15 +#: n/skins/custom_content/sic_edit.pt:15 msgid "Minimum" msgstr "" -#: skins/custom_content/sic_edit.pt:18 +#: n/skins/custom_content/sic_edit.pt:18 msgid "Maximum" msgstr "" -#: skins/custom_content/sic_edit.pt:21 +#: n/skins/custom_content/sic_edit.pt:21 msgid "Min/Max" msgstr "" -#: skins/custom_content/sort_edit.pt:16 +#: n/skins/custom_content/sort_edit.pt:16 msgid "Regular sort" msgstr "" -#: skins/custom_content/sort_edit.pt:20 +#: n/skins/custom_content/sort_edit.pt:20 msgid "Reversed sort" msgstr "" -#: skins/custom_content/topic_view.pt:50 +#: n/skins/custom_content/topic_view.pt:50 msgid "No result" msgstr "" -#: skins/custom_content/topic_view.pt:54 +#: n/skins/custom_content/topic_view.pt:54 msgid "Subtopics" msgstr "" -#: skins/custom_content/topic_view.pt:57 +#: n/skins/custom_content/topic_view.pt:57 msgid "Topic" msgstr "" -#: skins/custom_content/transition_form.pt:15 +#: n/skins/custom_content/transition_form.pt:15 msgid "Transition of ${objectid}." msgstr "" -#: skins/custom_content/transition_form.pt:18 +#: n/skins/custom_content/transition_form.pt:18 msgid "Transition description." msgstr "" -#: skins/custom_content/transition_form.pt:30 -#: skins/generic/wf_macros.pt:19 +#: n/skins/custom_content/transition_form.pt:30 +#: n/skins/generic/wf_macros.pt:19 msgid "Comments" msgstr "" -#: skins/custom_content/transition_form.pt:40 +#: n/skins/custom_content/transition_form.pt:40 msgid "Transition" msgstr "" -#: skins/custom_control/addtoFavorites.py:15 +#: n/skins/custom_control/addtoFavorites.py:15 msgid "Favorites" msgstr "" -#: skins/custom_control/folder_bottom_control.py:17 +#: n/skins/custom_control/folder_bottom_control.py:17 msgid "%d item moved to bottom.%d items moved to bottom." msgstr "" -#: skins/custom_control/folder_down_control.py:18 +#: n/skins/custom_control/folder_down_control.py:18 msgid "%d item moved down.%d items moved down." msgstr "" -#: skins/custom_control/folder_rename_control.py:13 +#: n/skins/custom_control/folder_rename_control.py:13 msgid "Item renamed." msgstr "" -#: skins/custom_control/folder_rename_control.py:15 +#: n/skins/custom_control/folder_rename_control.py:15 msgid "Items renamed." msgstr "" -#: skins/custom_control/folder_rename_control.py:18 +#: n/skins/custom_control/folder_rename_control.py:18 msgid "This item has not been renamed: \"%s\"" msgstr "" -#: skins/custom_control/folder_rename_control.py:21 +#: n/skins/custom_control/folder_rename_control.py:21 msgid "These items have not been renamed: %s" msgstr "" -#: skins/custom_control/folder_rename_control.py:24 +#: n/skins/custom_control/folder_rename_control.py:24 msgid "Rename failed." msgstr "" -#: skins/custom_control/folder_rename_control.py:26 +#: n/skins/custom_control/folder_rename_control.py:26 msgid "Nothing to change." msgstr "" -#: skins/custom_control/folder_top_control.py:17 +#: n/skins/custom_control/folder_top_control.py:17 msgid "%d item moved to top.%d items moved to top." msgstr "" -#: skins/custom_control/folder_up_control.py:17 +#: n/skins/custom_control/folder_up_control.py:17 msgid "%d item moved up.%d items moved up." msgstr "" -#: skins/custom_generic/folder_contents_template.pt:26 +#: n/skins/custom_generic/folder_contents_template.pt:26 msgid "Up" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:29 +#: n/skins/custom_generic/folder_contents_template.pt:29 msgid "Down" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:31 +#: n/skins/custom_generic/folder_contents_template.pt:31 #. Default: "by" msgid "move_by" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:39 +#: n/skins/custom_generic/folder_contents_template.pt:39 msgid "Top" msgstr "" -#: skins/custom_generic/folder_contents_template.pt:41 +#: n/skins/custom_generic/folder_contents_template.pt:41 msgid "Bottom" msgstr "" -#: skins/custom_generic/logged_in.py:28 +#: n/skins/custom_generic/logged_in.py:28 msgid "Login failure" msgstr "" -#: skins/custom_generic/logged_in.py:50 +#: n/skins/custom_generic/logged_in.py:50 +#: n/skins/photo_theme/homepage_dispatcher.py:13 +#: n/skins/photo_theme/homepage_dispatcher.py:16 +#: n/skins/photo_theme/homepage_dispatcher.py:24 +#: n/skins/photo_theme/homepage_dispatcher.py:27 msgid "Login success" msgstr "" -#: skins/custom_generic/mail_password_template.py:30 +#: n/skins/custom_generic/mail_password_template.py:30 msgid "${portal_title}: Membership reminder" msgstr "" -#: skins/custom_generic/mail_password_template.py:35 -#: skins/custom_generic/registered_notify_template.py:46 +#: n/skins/custom_generic/mail_password_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:46 msgid "Your member id and password are: Member ID: ${member_id} Password: ${password}" msgstr "" -#: skins/custom_generic/mail_password_template.py:37 -#: skins/custom_generic/registered_notify_template.py:48 +#: n/skins/custom_generic/mail_password_template.py:37 +#: n/skins/custom_generic/registered_notify_template.py:48 msgid "You can use this URL to log in:" msgstr "" -#: skins/custom_generic/mail_password_template.py:45 -#: skins/custom_generic/registered_notify_template.py:56 +#: n/skins/custom_generic/mail_password_template.py:45 +#: n/skins/custom_generic/registered_notify_template.py:56 msgid "Be aware that this URL might wrap over two lines. If your browser shows an error message when you try to access the URL please make sure that you put in the complete string." msgstr "" -#: skins/custom_generic/mail_password_template.py:48 -#: skins/generic/load_revision.py:31 -#: skins/generic/load_revision.py:38 +#: n/skins/custom_generic/mail_password_template.py:48 +#: n/skins/generic/load_revision.py:31 +#: n/skins/generic/load_revision.py:38 msgid "%Y/%m/%d at %I:%M:%S %p" msgstr "" -#: skins/custom_generic/mail_password_template.py:50 +#: n/skins/custom_generic/mail_password_template.py:50 msgid "Request made by IP ${ip} at ${time}" msgstr "" -#: skins/custom_generic/main_template_standard.pt:110 -#: skins/custom_generic/talkback_tree.pt:63 -#: skins/generic/main_template_ajax.pt:12 +#: n/skins/custom_generic/main_template_standard.pt:95 +#: n/skins/photo_theme/main_template_standard.pt:96 +msgid "Skip to content" +msgstr "" + +#: n/skins/custom_generic/main_template_standard.pt:110 +#: n/skins/custom_generic/talkback_tree.pt:63 +#: n/skins/generic/main_template_ajax.pt:12 +#: n/skins/photo_theme/main_template_standard.pt:118 msgid "Information" msgstr "" -#: skins/custom_generic/main_template_standard.pt:111 -#: skins/custom_generic/talkback_tree.pt:64 -#: skins/generic/main_template_ajax.pt:13 -#: skins/generic/widgets.pt:17 +#: n/skins/custom_generic/main_template_standard.pt:111 +#: n/skins/custom_generic/talkback_tree.pt:64 +#: n/skins/generic/main_template_ajax.pt:13 +#: n/skins/generic/widgets.pt:17 +#: n/skins/photo_theme/main_template_standard.pt:119 +#: n/skins/photo_theme/search_results_macros.pt:38 msgid "${DYNAMIC_CONTENT}" msgstr "" -#: skins/custom_generic/main_template_standard.pt:95 -msgid "Skip to content" +#: n/skins/custom_generic/reconfig_template.pt:79 +msgid "Copyright notice" +msgstr "" + +#: n/skins/custom_generic/reconfig_template.pt:83 +msgid "Copyright notice displayed on the portal footer." msgstr "" -#: skins/custom_generic/reconfig_template.pt:124 +#: n/skins/custom_generic/reconfig_template.pt:124 msgid "Default ajax options" msgstr "" -#: skins/custom_generic/reconfig_template.pt:128 +#: n/skins/custom_generic/reconfig_template.pt:128 msgid "Enable handling of all clicks over links" msgstr "" -#: skins/custom_generic/reconfig_template.pt:133 +#: n/skins/custom_generic/reconfig_template.pt:133 msgid "Enable handling of all forms submissions" msgstr "" -#: skins/custom_generic/reconfig_template.pt:79 -msgid "Copyright notice" -msgstr "" - -#: skins/custom_generic/reconfig_template.pt:83 -msgid "Copyright notice displayed on the portal footer." -msgstr "" - -#: skins/custom_generic/registered_notify_template.py:30 +#: n/skins/custom_generic/registered_notify_template.py:30 msgid "${portal_title}: Your Membership Information" msgstr "" -#: skins/custom_generic/registered_notify_template.py:35 +#: n/skins/custom_generic/registered_notify_template.py:35 msgid "You have been registered as a member of \"${portal_title}\", which allows you to personalize your view of the website and participate in the community." msgstr "" -#: skins/custom_generic/registered_notify_template.py:39 +#: n/skins/custom_generic/registered_notify_template.py:39 msgid "This describes the purpose of the website:" msgstr "" -#: skins/custom_generic/registered_notify_template.py:44 +#: n/skins/custom_generic/registered_notify_template.py:44 msgid "Visit us at ${portal_url}" msgstr "" -#: skins/custom_generic/talkback_tree.pt:27 +#: n/skins/custom_generic/talkback_tree.pt:27 msgid "by" msgstr "" -#: skins/custom_generic/talkback_tree.pt:36 +#: n/skins/custom_generic/talkback_tree.pt:36 msgid "unknown" msgstr "" -#: skins/custom_generic/talkback_tree.pt:37 -#: skins/generic/recent_news.pt:43 +#: n/skins/custom_generic/talkback_tree.pt:37 +#: n/skins/generic/recent_news.pt:43 #. Default: "at" msgid "at_(date)" msgstr "" -#: skins/custom_generic/talkback_tree.pt:74 +#: n/skins/custom_generic/talkback_tree.pt:74 msgid "Body" msgstr "" -#: skins/custom_generic/talkback_tree.pt:82 -#: skins/generic/gruf_macros.pt:77 -#: skins/generic/gruf_macros.pt:410 -#: skins/generic/header_widgets.pt:32 -#: skins/generic/header_widgets.pt:173 -#: skins/generic/send_email_form.pt:79 +#: n/skins/custom_generic/talkback_tree.pt:82 +#: n/skins/generic/gruf_macros.pt:77 +#: n/skins/generic/gruf_macros.pt:410 +#: n/skins/generic/header_widgets.pt:32 +#: n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "" -#: skins/custom_generic/talkback_tree.pt:85 +#: n/skins/custom_generic/talkback_tree.pt:85 msgid "Cancel" msgstr "" -#: skins/custom_generic/viewThreadsAtBottom.pt:10 +#: n/skins/custom_generic/viewThreadsAtBottom.pt:10 msgid "Comments:" msgstr "" -#: skins/generic/batch_macros.pt:26 +#: n/skins/generic/batch_macros.pt:26 #. Default: "Previous${number}" msgid "batch_previous_x_items" msgstr "" -#: skins/generic/batch_macros.pt:32 +#: n/skins/generic/batch_macros.pt:32 #. Default: "Next${number}items" msgid "batch_next_x_items" msgstr "" -#: skins/generic/calendar_macros.pt:159 -#: skins/generic/calendar_macros.pt:161 +#: n/skins/generic/calendar_macros.pt:78 +#: n/skins/generic/calendar_macros.pt:81 +#: n/skins/generic/calendar_macros.pt:128 +#: n/skins/generic/calendar_macros.pt:130 +msgid "Click to see hidden items" +msgstr "" + +#: n/skins/generic/calendar_macros.pt:88 +msgid "${dayName} ${monthName} ${dayNumber}" +msgstr "" + +#: n/skins/generic/calendar_macros.pt:159 +#: n/skins/generic/calendar_macros.pt:161 msgid "Previous" msgstr "" -#: skins/generic/calendar_macros.pt:164 +#: n/skins/generic/calendar_macros.pt:164 msgid "Week" msgstr "" -#: skins/generic/calendar_macros.pt:166 +#: n/skins/generic/calendar_macros.pt:166 msgid "Month" msgstr "" -#: skins/generic/calendar_macros.pt:171 -#: skins/generic/calendar_macros.pt:173 +#: n/skins/generic/calendar_macros.pt:171 +#: n/skins/generic/calendar_macros.pt:173 msgid "Next" msgstr "" -#: skins/generic/calendar_macros.pt:78 -#: skins/generic/calendar_macros.pt:81 -#: skins/generic/calendar_macros.pt:128 -#: skins/generic/calendar_macros.pt:130 -msgid "Click to see hidden items" -msgstr "" - -#: skins/generic/calendar_macros.pt:88 -msgid "${dayName} ${monthName} ${dayNumber}" +#: n/skins/generic/content_depublish_form.pt:8 +msgid "Depublish: \"${docTitle}\"" msgstr "" -#: skins/generic/content_depublish_form.pt:10 +#: n/skins/generic/content_depublish_form.pt:10 msgid "depublish_transition_explanations" msgstr "" -#: skins/generic/content_depublish_form.pt:15 +#: n/skins/generic/content_depublish_form.pt:15 msgid "Select the destination state" msgstr "" -#: skins/generic/content_depublish_form.pt:18 +#: n/skins/generic/content_depublish_form.pt:18 msgid "Private" msgstr "" -#: skins/generic/content_depublish_form.pt:22 +#: n/skins/generic/content_depublish_form.pt:22 msgid "Shared" msgstr "" -#: skins/generic/content_depublish_form.pt:26 +#: n/skins/generic/content_depublish_form.pt:26 msgid "Depublish" msgstr "" -#: skins/generic/content_depublish_form.pt:8 -msgid "Depublish: \"${docTitle}\"" -msgstr "" - -#: skins/generic/content_make_private_form.pt:10 +#: n/skins/generic/content_make_private_form.pt:10 msgid "Make private: \"${docTitle}\"" msgstr "" -#: skins/generic/content_make_private_form.pt:11 +#: n/skins/generic/content_make_private_form.pt:11 #. Default: "share_transition_explanations" msgid "make_private_transition_explanations" msgstr "" -#: skins/generic/content_make_private_form.pt:16 +#: n/skins/generic/content_make_private_form.pt:16 msgid "Make private" msgstr "" -#: skins/generic/content_publish_form.pt:10 +#: n/skins/generic/content_publish_form.pt:8 +msgid "Publish: \"${docTitle}\"" +msgstr "" + +#: n/skins/generic/content_publish_form.pt:10 msgid "publish_transition_explanations" msgstr "" -#: skins/generic/content_publish_form.pt:17 -#: skins/generic/content_reject_form.pt:16 +#: n/skins/generic/content_publish_form.pt:17 +#: n/skins/generic/content_reject_form.pt:16 msgid "Notify by e-mail" msgstr "" -#: skins/generic/content_publish_form.pt:26 +#: n/skins/generic/content_publish_form.pt:26 msgid "Publish" msgstr "" -#: skins/generic/content_publish_form.pt:8 -msgid "Publish: \"${docTitle}\"" -msgstr "" - -#: skins/generic/content_reject_form.pt:25 -#: skins/generic/pending_members.pt:30 -msgid "Reject" -msgstr "" - -#: skins/generic/content_reject_form.pt:8 +#: n/skins/generic/content_reject_form.pt:8 msgid "Reject: \"${objectid}\"" msgstr "" -#: skins/generic/content_reject_form.pt:9 +#: n/skins/generic/content_reject_form.pt:9 msgid "reject_transition_explanations" msgstr "" -#: skins/generic/content_retract_form.pt:15 -msgid "Retract" +#: n/skins/generic/content_reject_form.pt:25 +#: n/skins/generic/pending_members.pt:30 +msgid "Reject" msgstr "" -#: skins/generic/content_retract_form.pt:8 +#: n/skins/generic/content_retract_form.pt:8 msgid "Retract: \"${objectid}\"" msgstr "" -#: skins/generic/content_retract_form.pt:9 +#: n/skins/generic/content_retract_form.pt:9 msgid "retract_transition_explanations" msgstr "" -#: skins/generic/content_share_form.pt:10 +#: n/skins/generic/content_retract_form.pt:15 +msgid "Retract" +msgstr "" + +#: n/skins/generic/content_share_form.pt:10 msgid "Share: \"${docTitle}\"" msgstr "" -#: skins/generic/content_share_form.pt:11 +#: n/skins/generic/content_share_form.pt:11 msgid "share_transition_explanations" msgstr "" -#: skins/generic/content_share_form.pt:16 +#: n/skins/generic/content_share_form.pt:16 msgid "Share" msgstr "" -#: skins/generic/content_submit_form.pt:15 -msgid "Submit" -msgstr "" - -#: skins/generic/content_submit_form.pt:8 +#: n/skins/generic/content_submit_form.pt:8 msgid "Submit: \"${objectid}\" for Review." msgstr "" -#: skins/generic/content_submit_form.pt:9 +#: n/skins/generic/content_submit_form.pt:9 msgid "submit_transition_explanations" msgstr "" -#: skins/generic/default_home_page_content.pt:2 -msgid "Welcome to Plinn!" +#: n/skins/generic/content_submit_form.pt:15 +msgid "Submit" +msgstr "" + +#: n/skins/generic/default_member_content.pt:2 +msgid "Default page for ${memberFullName}" msgstr "" -#: skins/generic/default_home_page_content.pt:3 -msgid "This is the default home page." +#: n/skins/generic/default_member_content.pt:3 +msgid "This is the default document created for you when you have been registered in this portal." msgstr "" -#: skins/generic/default_home_page_content.pt:4 -#: skins/generic/default_member_content.pt:4 +#: n/skins/generic/default_member_content.pt:4 msgid "To change the content just select \"Edit\" in the Tab bar on the top." msgstr "" -#: skins/generic/default_member_content.pt:2 -msgid "Default page for ${memberFullName}" +#: n/skins/generic/groups_members.pt:35 +msgid "Members of \"${groupId}\"" msgstr "" -#: skins/generic/default_member_content.pt:3 -msgid "This is the default document created for you when you have been registered in this portal." +#: n/skins/generic/groups_members.pt:47 +msgid "Groups of \"${groupId}\"" msgstr "" -#: skins/generic/groups_members.pt:35 -msgid "Members of \"${groupId}\"" +#: n/skins/generic/gruf_macros.pt:25 +msgid "Group Tree" msgstr "" -#: skins/generic/groups_members.pt:47 -msgid "Groups of \"${groupId}\"" +#: n/skins/generic/gruf_macros.pt:45 +#: n/skins/generic/header_widgets.pt:70 +msgid "Identifier" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:63 +#: n/skins/generic/gruf_macros.pt:319 +msgid "Shared folder" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:66 +msgid "Open shared folder..." +msgstr "" + +#: n/skins/generic/gruf_macros.pt:69 +#: n/skins/generic/gruf_macros.pt:321 +msgid "Create" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:90 +msgid "Implicit roles" +msgstr "" + +#: n/skins/generic/gruf_macros.pt:98 +msgid "Explicit roles" msgstr "" -#: skins/generic/gruf_macros.pt:105 +#: n/skins/generic/gruf_macros.pt:105 msgid "Remove" msgstr "" -#: skins/generic/gruf_macros.pt:112 +#: n/skins/generic/gruf_macros.pt:112 msgid "Append" msgstr "" -#: skins/generic/gruf_macros.pt:129 -#: skins/generic/gruf_macros.pt:164 +#: n/skins/generic/gruf_macros.pt:129 +#: n/skins/generic/gruf_macros.pt:164 msgid "Outside group" msgstr "" -#: skins/generic/gruf_macros.pt:131 -#: skins/generic/gruf_macros.pt:166 +#: n/skins/generic/gruf_macros.pt:131 +#: n/skins/generic/gruf_macros.pt:166 msgid "Inside group" msgstr "" -#: skins/generic/gruf_macros.pt:148 -#: skins/generic/gruf_macros.pt:183 +#: n/skins/generic/gruf_macros.pt:148 +#: n/skins/generic/gruf_macros.pt:183 msgid "None" msgstr "" -#: skins/generic/gruf_macros.pt:197 +#: n/skins/generic/gruf_macros.pt:197 msgid "All members" msgstr "" -#: skins/generic/gruf_macros.pt:210 +#: n/skins/generic/gruf_macros.pt:210 msgid "Edit" msgstr "" -#: skins/generic/gruf_macros.pt:224 +#: n/skins/generic/gruf_macros.pt:224 msgid "All groups" msgstr "" -#: skins/generic/gruf_macros.pt:247 +#: n/skins/generic/gruf_macros.pt:247 msgid "Add new member" msgstr "" -#: skins/generic/gruf_macros.pt:25 -msgid "Group Tree" -msgstr "" - -#: skins/generic/gruf_macros.pt:250 -#: skins/generic/gruf_macros.pt:365 +#: n/skins/generic/gruf_macros.pt:250 +#: n/skins/generic/gruf_macros.pt:365 msgid "Login" msgstr "" -#: skins/generic/gruf_macros.pt:256 -#: skins/generic/gruf_macros.pt:378 -#: skins/generic/last_member_logs.pt:23 -#: skins/generic/pending_members.pt:13 +#: n/skins/generic/gruf_macros.pt:256 +#: n/skins/generic/gruf_macros.pt:378 +#: n/skins/generic/last_member_logs.pt:23 +#: n/skins/generic/pending_members.pt:13 msgid "Name" msgstr "" -#: skins/generic/gruf_macros.pt:262 -#: skins/generic/gruf_macros.pt:384 +#: n/skins/generic/gruf_macros.pt:262 +#: n/skins/generic/gruf_macros.pt:384 msgid "Given Name" msgstr "" -#: skins/generic/gruf_macros.pt:268 -#: skins/generic/gruf_macros.pt:390 +#: n/skins/generic/gruf_macros.pt:268 +#: n/skins/generic/gruf_macros.pt:390 msgid "Password" msgstr "" -#: skins/generic/gruf_macros.pt:274 -#: skins/generic/gruf_macros.pt:396 +#: n/skins/generic/gruf_macros.pt:274 +#: n/skins/generic/gruf_macros.pt:396 msgid "Confirm" msgstr "" -#: skins/generic/gruf_macros.pt:280 -#: skins/generic/gruf_macros.pt:402 +#: n/skins/generic/gruf_macros.pt:280 +#: n/skins/generic/gruf_macros.pt:402 msgid "Email address" msgstr "" -#: skins/generic/gruf_macros.pt:298 +#: n/skins/generic/gruf_macros.pt:298 msgid "Add new group" msgstr "" -#: skins/generic/gruf_macros.pt:301 +#: n/skins/generic/gruf_macros.pt:301 msgid "Id" msgstr "" -#: skins/generic/gruf_macros.pt:371 +#: n/skins/generic/gruf_macros.pt:371 msgid "Groups" msgstr "" -#: skins/generic/gruf_macros.pt:373 +#: n/skins/generic/gruf_macros.pt:373 msgid "explicitly:" msgstr "" -#: skins/generic/gruf_macros.pt:374 +#: n/skins/generic/gruf_macros.pt:374 msgid "implicitly:" msgstr "" -#: skins/generic/gruf_macros.pt:415 +#: n/skins/generic/gruf_macros.pt:415 msgid "Tree view by this member" msgstr "" -#: skins/generic/gruf_macros.pt:416 +#: n/skins/generic/gruf_macros.pt:416 msgid "Click here to see the tree viewed by this member >>" msgstr "" -#: skins/generic/gruf_macros.pt:440 -#: skins/generic/gruf_macros.pt:440 +#: n/skins/generic/gruf_macros.pt:440 +#: n/skins/generic/gruf_macros.pt:440 msgid "collapse all" msgstr "" -#: skins/generic/gruf_macros.pt:45 -#: skins/generic/header_widgets.pt:70 -msgid "Identifier" +#: n/skins/generic/gruf_macros.pt:471 +msgid "<< Back to member properties" msgstr "" -#: skins/generic/gruf_macros.pt:471 -msgid "<< Back to member properties" +#: n/skins/generic/header_widgets.pt:33 +msgid "Edit all metadata" msgstr "" -#: skins/generic/gruf_macros.pt:63 -#: skins/generic/gruf_macros.pt:319 -msgid "Shared folder" +#: n/skins/generic/header_widgets.pt:54 +msgid "Enable Discussion?" msgstr "" -#: skins/generic/gruf_macros.pt:66 -msgid "Open shared folder..." +#: n/skins/generic/header_widgets.pt:57 +msgid "Default" msgstr "" -#: skins/generic/gruf_macros.pt:69 -#: skins/generic/gruf_macros.pt:321 -msgid "Create" +#: n/skins/generic/header_widgets.pt:60 +msgid "Off" msgstr "" -#: skins/generic/gruf_macros.pt:90 -msgid "Implicit roles" +#: n/skins/generic/header_widgets.pt:63 +msgid "On" msgstr "" -#: skins/generic/gruf_macros.pt:98 -msgid "Explicit roles" +#: n/skins/generic/header_widgets.pt:91 +msgid "Subject" msgstr "" -#: skins/generic/header_widgets.pt:108 +#: n/skins/generic/header_widgets.pt:108 msgid "Contributors" msgstr "" -#: skins/generic/header_widgets.pt:115 +#: n/skins/generic/header_widgets.pt:115 msgid "Creation Date" msgstr "" -#: skins/generic/header_widgets.pt:118 +#: n/skins/generic/header_widgets.pt:118 msgid "Last Modified Date" msgstr "" -#: skins/generic/header_widgets.pt:130 +#: n/skins/generic/header_widgets.pt:130 msgid "Effective Date" msgstr "" -#: skins/generic/header_widgets.pt:141 +#: n/skins/generic/header_widgets.pt:141 msgid "Expiration Date" msgstr "" -#: skins/generic/header_widgets.pt:147 -#: skins/generic/wysiwyg_support.pt:108 +#: n/skins/generic/header_widgets.pt:147 +#: n/skins/generic/wysiwyg_support.pt:43 msgid "Format" msgstr "" -#: skins/generic/header_widgets.pt:155 +#: n/skins/generic/header_widgets.pt:155 msgid "Language" msgstr "" -#: skins/generic/header_widgets.pt:163 +#: n/skins/generic/header_widgets.pt:163 msgid "Rights" msgstr "" -#: skins/generic/header_widgets.pt:174 +#: n/skins/generic/header_widgets.pt:174 msgid "Edit standard metadata" msgstr "" -#: skins/generic/header_widgets.pt:33 -msgid "Edit all metadata" -msgstr "" - -#: skins/generic/header_widgets.pt:54 -msgid "Enable Discussion?" -msgstr "" - -#: skins/generic/header_widgets.pt:57 -msgid "Default" -msgstr "" - -#: skins/generic/header_widgets.pt:60 -msgid "Off" -msgstr "" - -#: skins/generic/header_widgets.pt:63 -msgid "On" -msgstr "" - -#: skins/generic/header_widgets.pt:91 -msgid "Subject" -msgstr "" - -#: skins/generic/last_member_logs.pt:19 +#: n/skins/generic/last_member_logs.pt:19 msgid "Last member login times" msgstr "" -#: skins/generic/last_member_logs.pt:27 +#: n/skins/generic/last_member_logs.pt:27 msgid "Last login time" msgstr "" -#: skins/generic/load_revision.py:29 -#: skins/content/changes_history_template.pt:63 -msgid "nobody" -msgstr "" - -#: skins/generic/load_revision.py:38 +#: n/skins/generic/load_revision.py:38 msgid "state of %s" msgstr "" -#: skins/generic/local_roles_macros.pt:160 -msgid "No more group available for the ${role} role in this folder" -msgstr "" - -#: skins/generic/local_roles_macros.pt:174 -msgid "No group have got the ${role} role in this folder" -msgstr "" - -#: skins/generic/local_roles_macros.pt:39 -#: skins/generic/local_roles_macros.pt:122 +#: n/skins/generic/local_roles_macros.pt:39 +#: n/skins/generic/local_roles_macros.pt:122 msgid "Current Role: \"${current_role}\"" msgstr "" -#: skins/generic/local_roles_macros.pt:45 -#: skins/generic/local_roles_macros.pt:127 +#: n/skins/generic/local_roles_macros.pt:45 +#: n/skins/generic/local_roles_macros.pt:127 msgid "ok" msgstr "" -#: skins/generic/local_roles_macros.pt:66 -#: skins/generic/local_roles_macros.pt:148 +#: n/skins/generic/local_roles_macros.pt:66 +#: n/skins/generic/local_roles_macros.pt:148 msgid "Haven't role" msgstr "" -#: skins/generic/local_roles_macros.pt:72 -#: skins/generic/local_roles_macros.pt:150 +#: n/skins/generic/local_roles_macros.pt:72 +#: n/skins/generic/local_roles_macros.pt:150 msgid "Have role" msgstr "" -#: skins/generic/local_roles_macros.pt:84 +#: n/skins/generic/local_roles_macros.pt:84 msgid "No more member available for the ${role} role in this folder" msgstr "" -#: skins/generic/local_roles_macros.pt:99 +#: n/skins/generic/local_roles_macros.pt:99 msgid "Nobody have got the ${role} role in this folder" msgstr "" -#: skins/generic/locale_date_fmt.pt:1 -#. Default: "%m/%d/%Y %Hh%M" -msgid "locale_date_fmt" +#: n/skins/generic/local_roles_macros.pt:160 +msgid "No more group available for the ${role} role in this folder" msgstr "" -#: skins/generic/main_template_macros.pt:109 -msgid "Exit boxes editing" +#: n/skins/generic/local_roles_macros.pt:174 +msgid "No group have got the ${role} role in this folder" +msgstr "" + +#: n/skins/generic/locale_date_fmt.pt:1 +#. Default: "%m/%d/%Y %Hh%M" +msgid "locale_date_fmt" msgstr "" -#: skins/generic/main_template_macros.pt:78 +#: n/skins/generic/main_template_macros.pt:78 +#: n/skins/photo_theme/main_template_macros.pt:91 msgid "You are here:" msgstr "" -#: skins/generic/main_template_macros.pt:91 -#: skins/generic/main_template_macros.pt:94 -#: skins/generic/main_template_macros.pt:112 -#: skins/generic/main_template_macros.pt:113 +#: n/skins/generic/main_template_macros.pt:91 +#: n/skins/generic/main_template_macros.pt:94 +#: n/skins/generic/main_template_macros.pt:112 +#: n/skins/generic/main_template_macros.pt:113 +#: n/skins/photo_theme/main_template_macros.pt:100 +#: n/skins/photo_theme/main_template_macros.pt:100 +#: n/skins/photo_theme/main_template_macros.pt:113 +#: n/skins/photo_theme/main_template_macros.pt:113 msgid "Paste" msgstr "" -#: skins/generic/pending_members.pt:14 -msgid "Email" +#: n/skins/generic/main_template_macros.pt:109 +#: n/skins/photo_theme/main_template_macros.pt:110 +msgid "Exit boxes editing" msgstr "" -#: skins/generic/pending_members.pt:35 -msgid "Register" +#: n/skins/generic/pending_members.pt:9 +msgid "Review members registration" msgstr "" -#: skins/generic/pending_members.pt:9 -msgid "Review members registration" +#: n/skins/generic/pending_members.pt:14 +msgid "Email" +msgstr "" + +#: n/skins/generic/pending_members.pt:35 +msgid "Register" msgstr "" -#: skins/generic/recent_news.pt:21 -#: skins/generic/widgets.pt:123 +#: n/skins/generic/recent_news.pt:21 +#: n/skins/generic/widgets.pt:123 msgid "News" msgstr "" -#: skins/generic/recent_news.pt:36 +#: n/skins/generic/recent_news.pt:36 msgid "by:" msgstr "" -#: skins/generic/recent_news.pt:49 +#: n/skins/generic/recent_news.pt:49 #. Default: "Read More" msgid "read_more" msgstr "" -#: skins/generic/recent_news.pt:57 +#: n/skins/generic/recent_news.pt:57 msgid "No news is good news!" msgstr "" -#: skins/generic/reject_member_form.pt:14 +#: n/skins/generic/reject_member_form.pt:9 +msgid "Reject registration of ${fullname}" +msgstr "" + +#: n/skins/generic/reject_member_form.pt:14 msgid "From:" msgstr "" -#: skins/generic/reject_member_form.pt:20 +#: n/skins/generic/reject_member_form.pt:20 msgid "To:" msgstr "" -#: skins/generic/reject_member_form.pt:27 -#: skins/generic/send_email_form.pt:96 +#: n/skins/generic/reject_member_form.pt:27 +#: n/skins/generic/send_email_form.pt:96 msgid "Subject:" msgstr "" -#: skins/generic/reject_member_form.pt:31 +#: n/skins/generic/reject_member_form.pt:31 msgid "Membership request denied" msgstr "" -#: skins/generic/reject_member_form.pt:35 -#: skins/generic/send_email_form.pt:101 +#: n/skins/generic/reject_member_form.pt:35 +#: n/skins/generic/send_email_form.pt:101 msgid "Message body:" msgstr "" -#: skins/generic/reject_member_form.pt:39 +#: n/skins/generic/reject_member_form.pt:39 msgid "I'm sorry to have to inform you that your request has been denied. Please contact the site administrator." msgstr "" -#: skins/generic/reject_member_form.pt:45 +#: n/skins/generic/reject_member_form.pt:45 msgid "Send" msgstr "" -#: skins/generic/reject_member_form.pt:9 -msgid "Reject registration of ${fullname}" +#: n/skins/generic/request_password_reset_form.pt:11 +msgid "Password reset" +msgstr "" + +#: n/skins/generic/request_password_reset_form.pt:12 +msgid "Enter your username below and click on the \"Send\" button. You will receive an email with a link to reset your password." +msgstr "" + +#: n/skins/generic/request_password_reset_form.pt:18 +msgid "If this will not work for you (for example, if you forget your username or didn't enter your email address) send email to ${admin_email}." msgstr "" -#: skins/generic/revision_context_header.pt:10 +#: n/skins/generic/request_password_reset_form.pt:25 +#. Default: "Send" +msgid " Send " +msgstr "" + +#: n/skins/generic/revision_context_header.pt:10 msgid "This is an old revision of this content, as edited by ${user} at ${datetime}." msgstr "" -#: skins/generic/revision_context_header.pt:16 +#: n/skins/generic/revision_context_header.pt:16 msgid "Restore this revision" msgstr "" -#: skins/generic/revision_context_header.pt:22 +#: n/skins/generic/revision_context_header.pt:22 msgid "\342\206\220 previous revision" msgstr "" -#: skins/generic/revision_context_header.pt:27 +#: n/skins/generic/revision_context_header.pt:27 msgid "current revision" msgstr "" -#: skins/generic/revision_context_header.pt:29 +#: n/skins/generic/revision_context_header.pt:29 msgid "next revision \342\206\222" msgstr "" -#: skins/generic/search.py:109 -#: skins/generic/search.py:113 +#: n/skins/generic/search.py:109 +#: n/skins/generic/search.py:113 msgid "ascending sort" msgstr "" -#: skins/generic/search_results_template.pt:16 +#: n/skins/generic/search_results_template.pt:16 msgid "Search Results" msgstr "" -#: skins/generic/search_results_template.pt:23 +#: n/skins/generic/search_results_template.pt:23 msgid "Found ${count} ${item_s_match} '${text}'." msgstr "" -#: skins/generic/search_results_template.pt:27 +#: n/skins/generic/search_results_template.pt:27 msgid "Found 1 item." msgstr "" -#: skins/generic/search_results_template.pt:28 +#: n/skins/generic/search_results_template.pt:28 msgid "Found ${count} items." msgstr "" -#: skins/generic/search_results_template.pt:41 -msgid "Creator" -msgstr "" - -#: skins/generic/search_results_template.pt:45 +#: n/skins/generic/search_results_template.pt:45 msgid "Last modified" msgstr "" -#: skins/generic/search_results_template.pt:65 -msgid "(No title)" -msgstr "" - -#: skins/generic/search_results_template.pt:83 +#: n/skins/generic/search_results_template.pt:83 msgid "Save this search as topic" msgstr "" -#: skins/generic/search_results_template.pt:84 +#: n/skins/generic/search_results_template.pt:84 msgid "Title:" msgstr "" -#: skins/generic/search_results_template.pt:89 +#: n/skins/generic/search_results_template.pt:89 msgid "There are no items matching your specified criteria." msgstr "" -#: skins/generic/send_email_form.pt:107 -msgid "Send email" -msgstr "" - -#: skins/generic/send_email_form.pt:110 -msgid "Note: This message will be stored in content history." +#: n/skins/generic/send_email_form.pt:25 +msgid "Send an email" msgstr "" -#: skins/generic/send_email_form.pt:29 +#: n/skins/generic/send_email_form.pt:29 msgid "Recipients:" msgstr "" -#: skins/generic/send_email_form.pt:47 +#: n/skins/generic/send_email_form.pt:47 msgid "(as copy)" msgstr "" -#: skins/generic/send_email_form.pt:62 +#: n/skins/generic/send_email_form.pt:62 msgid "All (${nofpers} persons)" msgstr "" -#: skins/generic/send_email_form.pt:69 +#: n/skins/generic/send_email_form.pt:69 msgid "Show list" msgstr "" -#: skins/generic/send_email_form.pt:79 +#: n/skins/generic/send_email_form.pt:79 msgid "(not required)" msgstr "" -#: skins/generic/send_email_form.pt:90 +#: n/skins/generic/send_email_form.pt:90 msgid "Others (on address by line)" msgstr "" -#: skins/generic/wf_macros.pt:17 +#: n/skins/generic/send_email_form.pt:107 +msgid "Send email" +msgstr "" + +#: n/skins/generic/send_email_form.pt:110 +msgid "Note: This message will be stored in content history." +msgstr "" + +#: n/skins/generic/wf_macros.pt:17 msgid "Actor" msgstr "" -#: skins/generic/wf_macros.pt:18 +#: n/skins/generic/wf_macros.pt:18 msgid "Action" msgstr "" -#: skins/generic/wf_macros.pt:20 +#: n/skins/generic/wf_macros.pt:20 msgid "Email sent to" msgstr "" -#: skins/generic/wf_macros.pt:28 +#: n/skins/generic/wf_macros.pt:28 msgid "(no comments)" msgstr "" -#: skins/generic/wf_macros.pt:33 +#: n/skins/generic/wf_macros.pt:33 msgid "(no email sent)" msgstr "" -#: skins/generic/widgets.pt:128 -msgid "News Item" -msgstr "" - -#: skins/generic/widgets.pt:32 -#: skins/generic/widgets.pt:33 +#: n/skins/generic/widgets.pt:32 +#: n/skins/generic/widgets.pt:33 msgid "Edit metadata" msgstr "" -#: skins/generic/widgets.pt:53 +#: n/skins/generic/widgets.pt:53 msgid "Clipboard" msgstr "" -#: skins/generic/wysiwyg_support.pt:112 +#: n/skins/generic/widgets.pt:128 +msgid "News Item" +msgstr "" + +#: n/skins/generic/wysiwyg_support.pt:47 msgid "Structured text" msgstr "" -#: skins/generic/wysiwyg_support.pt:118 +#: n/skins/generic/wysiwyg_support.pt:53 msgid "HTML" msgstr "" -#: skins/generic/wysiwyg_support.pt:124 +#: n/skins/generic/wysiwyg_support.pt:59 msgid "Plain text" msgstr "" +#: n/skins/photo_theme/logout.py:15 +msgid "You have been logged out." +msgstr "" + +#: n/skins/photo_theme/main_template_macros.pt:55 +msgid "Loading progress..." +msgstr "" + +#: n/skins/photo_theme/realis_main_macros.pt:28 +msgid "Join" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:12 +msgid "Title" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:13 +msgid "Creator" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:14 +msgid "Type" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:15 +msgid "Date" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:32 +msgid "(No title)" +msgstr "" + +#: n/skins/photo_theme/search_results_macros.pt:45 +msgid "(No description)" +msgstr "" + +# from plinn-manual + +msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" +msgstr "" + +msgid "1 Day" +msgstr "" + +msgid "2 Days" +msgstr "" + +msgid "5 Days" +msgstr "" + +msgid "1 Week" +msgstr "" + +msgid "2 Weeks" +msgstr "" + +msgid "1 Month" +msgstr "" + +msgid "3 Months" +msgstr "" + +msgid "6 Months" +msgstr "" + +msgid "1 Year" +msgstr "" + +msgid "2 years" +msgstr "" + +msgid "Action Box Block" +msgstr "" + +msgid "Action box settings" +msgstr "" + +msgid "Activity block" +msgstr "" + +msgid "Add a document..." +msgstr "" + +msgid "Add an activity" +msgstr "" + +msgid "Add node" +msgstr "" + +msgid "Advanced search" +msgstr "" + +msgid "Anonymous registration" +msgstr "" + +msgid "Appointment" +msgstr "" + +msgid "Append Roles" +msgstr "" + +msgid "Append or remove groups" +msgstr "" + +msgid "Append or remove members" +msgstr "" + +msgid "April" +msgstr "" + +msgid "April_abbr" +msgstr "" + +msgid "Assign local roles: Search Members" +msgstr "" + +msgid "Assign local roles: Search Results" +msgstr "" + +msgid "August" +msgstr "" + +msgid "August_abbr" +msgstr "" + +msgid "B" +msgstr "" + +msgid "Backlinks" +msgstr "" + +msgid "Base folder of members' folders" +msgstr "" + +msgid "Box title:" +msgstr "" + +msgid "catalog_index_allowedRolesAndUsers" +msgstr "" + +msgid "catalog_index_created" +msgstr "" + +msgid "catalog_index_Creator" +msgstr "" + +msgid "catalog_index_Date" +msgstr "" + +msgid "catalog_index_DateTimeOriginal" +msgstr "" + +msgid "catalog_index_Description" +msgstr "" + +msgid "catalog_index_effective" +msgstr "" + +msgid "catalog_index_expires" +msgstr "" + +msgid "catalog_index_fTitle" +msgstr "" + +msgid "catalog_index_getId" +msgstr "" + +msgid "catalog_index_listCreators" +msgstr "" + +msgid "catalog_index_modified" +msgstr "" + +msgid "catalog_index_path" +msgstr "" + +msgid "catalog_index_portal_type" +msgstr "" + +msgid "catalog_index_review_state" +msgstr "" + +msgid "catalog_index_SearchableText" +msgstr "" + +msgid "catalog_index_Subject" +msgstr "" + +msgid "catalog_index_Title" +msgstr "" + +msgid "Categories:" +msgstr "" + +msgid "Change" +msgstr "" + +msgid "Change image:" +msgstr "" + +msgid "Click here to modify roles..." +msgstr "" + +msgid "Click to get raw image" +msgstr "" + +msgid "Click to see image full-size" +msgstr "" + +msgid "Close" +msgstr "" + +msgid "Collapse" +msgstr "" + +msgid "Comment" +msgstr "" + +msgid "Configure ${portal_calendar} Tool" +msgstr "" + +msgid "Container block" +msgstr "" + +msgid "Contributor" +msgstr "" + +msgid "Convention" +msgstr "" + +msgid "Copy" +msgstr "" + +msgid "Create a mosaic document" +msgstr "" + +msgid "Saved changes." +msgstr "" + +msgid "Import a photo zipped file" +msgstr "" + +msgid "send_email" +msgstr "" + +msgid "Set Mapping" +msgstr "" + +msgid "shared_submit" +msgstr "" + +msgid "sort_by_index_created" +msgstr "" + +msgid "sort_by_index_DateTimeOriginal" +msgstr "" + +msgid "Criteria" +msgstr "" + +msgid "coordonateur" +msgstr "" + +msgid "Currently assigned local roles" +msgstr "" + +msgid "DateTimeOriginal" +msgstr "" + +msgid "Day" +msgstr "" + +msgid "December" +msgstr "" + +msgid "December_abbr" +msgstr "" + +msgid "Delete" +msgstr "" + +msgid "depublish" +msgstr "" + +msgid "depublish_to_private" +msgstr "" + +msgid "depublish_to_shared" +msgstr "" + +msgid "Direct_publish" +msgstr "" + +msgid "Directories" +msgstr "" + +msgid "Do you realy want to delete ?" +msgstr "" + +msgid "confirm_layer_delete" +msgstr "" + +msgid "eleve" +msgstr "" + +msgid "Empty image: upload an image file in \"Edit\" tab." +msgstr "" + +msgid "ExifImageWidth" +msgstr "" + +msgid "ExifImageHeight" +msgstr "" + +msgid "Expand" +msgstr "" + +msgid "Export as zip" +msgstr "" + +msgid "ExposureTime" +msgstr "" + +msgid "February" +msgstr "" + +msgid "February_abbr" +msgstr "" + +msgid "File" +msgstr "" + +msgid "File Block" +msgstr "" + +msgid "Filter (meta_type list) :" +msgstr "" + +msgid "FNumber" +msgstr "" + +msgid "FocalLength" +msgstr "" + +msgid "Folder contents" +msgstr "" + +msgid "Folders are created upon first login." +msgstr "" + +msgid "Fri" +msgstr "" + +msgid "Friday" +msgstr "" + +msgid "Friendly Date Criterion" +msgstr "" + +msgid "Global actions" +msgstr "" + +msgid "Group folder area" +msgstr "" + +msgid "Group's roles settings" +msgstr "" + +msgid "GroupManager" +msgstr "" + +msgid "Height:" +msgstr "" + +msgid "History" +msgstr "" + +msgid "Image block" +msgstr "" + +msgid "Implicitly member of groups" +msgstr "" + +msgid "Import" +msgstr "" + +msgid "Insert file" +msgstr "" + +msgid "Insert image" +msgstr "" + +msgid "Insert inside text" +msgstr "" + +msgid "Insert new block:" +msgstr "" + +msgid "Integer Criterion" +msgstr "" + +msgid "ISOSpeedRatings" +msgstr "" + +msgid "January" +msgstr "" + +msgid "January_abbr" +msgstr "" + +msgid "July" +msgstr "" + +msgid "July_abbr" +msgstr "" + +msgid "June" +msgstr "" + +msgid "June_abbr" +msgstr "" + +msgid "immediately" +msgstr "" + +msgid "KB" +msgstr "" + +msgid "lang_iso" +msgstr "" + +msgid "Layer" +msgstr "" + +msgid "Left boxes" +msgstr "" + +msgid "List Criterion" +msgstr "" + +msgid "List Folder" +msgstr "" + +msgid "List parent folder" +msgstr "" + +msgid "Listen" +msgstr "" + +msgid "Local Roles" +msgstr "" + +msgid "MB" +msgstr "" + +msgid "make_private" +msgstr "" + +msgid "Manage Groups" +msgstr "" + +msgid "Manage boxes" +msgstr "" + +msgid "Manage group's datas" +msgstr "" + +msgid "Manage group's members" +msgstr "" + +msgid "Manage portal's groups" +msgstr "" + +msgid "Manage portal's members" +msgstr "" + +msgid "Manager" +msgstr "" + +msgid "March" +msgstr "" + +msgid "March_abbr" +msgstr "" + +msgid "May" +msgstr "" + +msgid "May_abbr" +msgstr "" + +msgid "Meeting" +msgstr "" + +msgid "Member" +msgstr "" + +msgid "Members" +msgstr "" + +msgid "Members folder id" +msgstr "" + +msgid "Member of groups" +msgstr "" + +msgid "Member properties" +msgstr "" + +msgid "member_creation_area_explanations" +msgstr "" + +msgid "member_creation_area_title" +msgstr "" + +msgid "Membership role mappings" +msgstr "" + +msgid "membership_role_mapping_explanations" +msgstr "" + +msgid "Metadata" +msgstr "" + +msgid "Sort Criterion" +msgstr "" + +msgid "sort_by_index_modified" +msgstr "" + +msgid "Modify" +msgstr "" + +msgid "Mon" +msgstr "" + +msgid "Monday" +msgstr "" + +msgid "Move down" +msgstr "" + +msgid "Move left" +msgstr "" + +msgid "Move right" +msgstr "" + +msgid "Move up" +msgstr "" + +msgid "never" +msgstr "" + +msgid "New layer" +msgstr "" + +msgid "No document" +msgstr "" + +msgid "Node block" +msgstr "" + +msgid "November" +msgstr "" + +msgid "November_abbr" +msgstr "" + +msgid "Now" +msgstr "" + +msgid "Number of br:" +msgstr "" + +msgid "October" +msgstr "" + +msgid "October_abbr" +msgstr "" + +msgid "Owner" +msgstr "" + +msgid "person selected" +msgstr "" + +msgid "persons selected" +msgstr "" + +msgid "Play" +msgstr "" + +msgid "Portal manager registration" +msgstr "" + +msgid "Portal Role" +msgstr "" + +msgid "Portlets" +msgstr "" + +msgid "Preview..." +msgstr "" + +msgid "private_submit" +msgstr "" + +msgid "Properties of: ${memberFullName}" +msgstr "" + +msgid "publish" +msgstr "" + +msgid "Reader" +msgstr "" + +msgid "Right boxes" +msgstr "" + +msgid "Remove layer" +msgstr "" + +msgid "Reply..." +msgstr "" + +msgid "Represent a simple field-match for a string value." +msgstr "" + +msgid "retract_to_private" +msgstr "" + +msgid "retract_to_shared" +msgstr "" + +msgid "Reviewed registration" +msgstr "" + +msgid "Reviewer" +msgstr "" + +msgid "Role(s)" +msgstr "" + +msgid "Role mapping mismatch : click Validate to solve this problem !" +msgstr "" + +msgid "Roles to assign:" +msgstr "" + +msgid "Root object expression:" +msgstr "" + +msgid "Sat" +msgstr "" + +msgid "Saturday" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Search by" +msgstr "" + +msgid "Search Term" +msgstr "" + +msgid "Section block" +msgstr "" + +msgid "Select date indexes" +msgstr "" + +msgid "Select default time range displayed in calendar week view" +msgstr "" + +msgid "Select member area folder type to construct:" +msgstr "" + +msgid "Select Member(s) and a role(s) to assign:" +msgstr "" + +msgid "Select registration mode" +msgstr "" + +msgid "September" +msgstr "" + +msgid "September_abbr" +msgstr "" + +msgid "Set Roles" +msgstr "" + +msgid "share" +msgstr "" + +msgid "Show layer" +msgstr "" + +msgid "Slide show" +msgstr "" + +msgid "Social Event" +msgstr "" + +msgid "Sorry, no members matched your search." +msgstr "" + +msgid "Source file:" +msgstr "" + +msgid "Spacer block" +msgstr "" + +msgid "(start and end time in hour)" +msgstr "" + +msgid "Status history" +msgstr "" + +msgid "Stop" +msgstr "" + +msgid "String Criterion" +msgstr "" + +msgid "Sun" +msgstr "" + +msgid "Sunday" +msgstr "" + +msgid "Text block" +msgstr "" + +msgid "These users currently have local roles assigned in this folder:" +msgstr "" + + +msgid "This folder has to be in the same container as the membership tool." +msgstr "" + +msgid "Thu" +msgstr "" + +msgid "Thursday" +msgstr "" + +msgid "Title :" +msgstr "" + +msgid "Tree Box Block" +msgstr "" + +msgid "Tree box settings" +msgstr "" + +msgid "Tree viewed by: ${memberFullName}" +msgstr "" + +msgid "Tue" +msgstr "" + +msgid "Tuesday" +msgstr "" + +msgid "Turn folder creation off" +msgstr "" + +msgid "Turn folder creation on" +msgstr "" + +msgid "Two images block" +msgstr "" + +msgid "Upload" +msgstr "" + +msgid "User" +msgstr "" + +msgid "User Folder-defined Role" +msgstr "" + +msgid "UserManager" +msgstr "" + +msgid "Untitled-" +msgstr "" + +msgid "Validate pending documents" +msgstr "" + +msgid "Visitor" +msgstr "" + +msgid "View" +msgstr "" + +msgid "View history" +msgstr "" + +msgid "View local roles" +msgstr "" + +msgid "Wed" +msgstr "" + +msgid "Wednesday" +msgstr "" + +msgid "Width:" +msgstr "" + +msgid "width / height:" +msgstr "" + +msgid "Work" +msgstr "" + +msgid "Workflow chain" +msgstr "" + +msgid "You are not allowed to delete: " +msgstr "" + +msgid "collaborator" +msgstr "" + +msgid "collapse" +msgstr "" + +msgid "expand" +msgstr "" + +msgid "file type:" +msgstr "" + +msgid "Hide layer" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "name" +msgstr "" + +msgid "No Folders are created." +msgstr "" + +msgid "" +"Put a friendly interface on date range searches, like 'where effective " +"date is less than 5 days old'." +msgstr "" + +msgid "" +"Represent a criterion which is a list of values (for an 'OR' search)." +msgstr "" + +msgid "" +"Represent a simple field-match for an integer value, including catalog " +"range searches." +msgstr "" + +msgid "" +"Represent a mock criterion, to allow spelling the sort order and reversal " +"items in a catalog query." +msgstr "" + +msgid "" +"WARNING: The current portal type is unknown. You must change the value to " +"enable the member area creation." +msgstr "" + +msgid "Approve" +msgstr "" + +msgid "approved" +msgstr "" + +msgid "Disapprove" +msgstr "" + +msgid "pending" +msgstr "" + +msgid "private" +msgstr "" + +msgid "items matching" +msgstr "" + +msgid "item matching" +msgstr "" + +msgid "mail_to" +msgstr "" + +msgid "mail_cc" +msgstr "" + +msgid "mail_bcc" +msgstr "" diff --git a/update-i18n.sh b/update-i18n.sh new file mode 100755 index 0000000..d2283eb --- /dev/null +++ b/update-i18n.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +i18nextract --path . --site_zcml ../../etc/site.zcml --domain plinn -o locales + +cat locales/plinn.pot locales/plinn-manual.pot > locales/plinn-all.pot +mv locales/plinn-all.pot locales/plinn.pot + +msgmerge --update --no-fuzzy-matching locales/fr/LC_MESSAGES/plinn.po locales/plinn.pot +msgmerge --update --no-fuzzy-matching locales/en/LC_MESSAGES/plinn.po locales/plinn.pot -- 2.20.1 From 6a89240a614c8f9654ea91b0614170e6cab59ac7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 15:19:20 +0200 Subject: [PATCH 05/16] =?utf8?q?Mise=20=C3=A0=20jour=20localisation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- locales/en/LC_MESSAGES/plinn.mo | Bin 2328 -> 2313 bytes locales/fr/LC_MESSAGES/plinn.mo | Bin 36503 -> 37466 bytes locales/fr/LC_MESSAGES/plinn.po | 30 +++++++++++++++--------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/locales/en/LC_MESSAGES/plinn.mo b/locales/en/LC_MESSAGES/plinn.mo index 021fbfd23813947c68db55a2aba52d2d87677478..4f25697537c04e0ce265ac24ab9bdc7874ca9f4a 100644 GIT binary patch delta 880 zcmYk)KWLLd7{~D^O-yZTZGCN%YP5Y@4Y(AVqy`KfDrC|K4h41W&?ZBg;t&uVGNenv zK?t>_o9Ln-{t1FDbm&kagJ3BRf`1@T=w!F*AmaBIFW~Xs`?)*reeb#FZp~ZvD&M@& zic#X!bJT3W>@pTRcu}Tieg79ABcoe}~Mk z*n1lK(H?4nCJy2c^e_}M8^$P}!89t+o2YpUcp9rXhO2IT6QlG$y8Z!b-XA=R-Z8TX z>)SXDEtEwqa0@lzE)L)WROF9Qfjmbo+`tHa$2Vl{2#MLAb^h~(^EL9=Ti4%mZcEm; z9XHT$esJzOKRG`m!P{3XSi z8v2PMSDLjG{X`{99cs1AMp41EOPofGsz9{~WvX4y)6fQWJPJ(rKu0{Rk%3x&FnURO z_`mpcE>N{ET`OHVopvo3EYvrG)sCSXizWYBx#%aa_=(9(BArR3{NzL;RhtQyx^uIo Ue0erMm+|Y{;YgtVrE@Cq7YRO0y8r+H delta 895 zcmX}qPe@cz6vy#1^WK}elbSX;j{Ws%{()#=GFplfM7vxRxJlf}zzE`|vQ01$Wz_Z| zxGX{hY2`$JXwfEcq2Z!Miy~SSv~Uvyt(3mMnaf<}@VWQSd-t4o-g}Z?%U4&!{C8`N zK{#!en#NJH^!>(ma08E+1vjw;=dcYccodiY`VqFWPB4ehyqg%ZeuX;c9XkAoRUPz+ ziEjLgI`B6t(LXG3Z-99`foJgoG7qmK1&3wSbr0}3u3;a(^!s~QWc|yp50L93qG~6Z z46)ILSCK@~EhIs-i28p8JMlSEdGs17B>I3Pj?_Wj|CjDGwtaIAvF z)NXwYdcSsx=phQpLAp4=^EU_It@RQ-lMN8(h%-bnnG7o7^up~swHLv|boWf76yT2{c?PJ(}|xA@Z%Z=(86OtY-YH~_2TD2zcjM&ojf#0OCI z9>XYn237wcR>NbciG6|<@CH`IKQMy+t%$bH%%Y67Q59}8#$qM%EzSLQCf^w~ke;S| zl*v!PT9g-{25=Xu<8@dLH(?EY5Np!EwTFa8{2FQoCs7ZcLv?)B+`o=m`U>rwnK!{I z(Qafmjtspq6?v>bW_n`s+~>+=2m(Y$pjVi<;4^sF}WnIvXdD7r{D@nrL)}vlaDF?WY7tXaJe0k@iL{;Skgr z@L>~Nh-!EXs^J}|!xTh4_X4WH*HP`Az}k2kwWU{31E|LGY36mXJ_eeS&`dH=9riT& z5vUnuqn3UK>a|>s8ps~wUesxR9yNeBQCo8w)!sL#GxnRgAKuBS7mch;z-mH5dp`t| zaEfsiYKHr8HXc9?D5bMAgU+aYFVvO{MRhnC)t(PEp;MhU$0>HpgtNgDX(&ZADG&X^fzM zYcGjG9E?E{2i13z~s-M zCiDeri!WsboRNG-fjTPJ&Dn}ts194AwxlC!1+q{B=#QG&Skz41sF}~fS{OjxFGY2< z71hp@sCJ(*9#ln*=xx+Yj-!_H465Q!sPgi+JMVK1)E*}oyQ0p{NYsktqdF==4S1d@ zUxqq#t5E}5Z^{D?lF-O^pgvf3p|;>9Q{kA&zmMwZOVsKA1N8w?zq>QgR8+%RsDbn~ z4n?&;1~q_elg~j08n9-N&|b|n&O?oSDXO8hsJ*=(HM56NTd)K5++K74Ws`s1j2?vF-o?~86)s0s@>zL_C7`(=Fc$#uk~jAwd6lhpcyylx)0Uxd#JPUG3xMrjoRAq{!Tj)s4b|DdW&iYNN7gMs0O>5d{0zI zBd{`NqxRl|&2cvBgJwJO&1&t(R(K8dS~eQs{32?P>To#f`Oz4OZdAL0nItrTc~}Kk zm>V0h0{N||9}+uJ1AGb9&>>VqCs7TZL2cO=ru;|L*8PbISaqP&Pg_)ZcgKJ=goGNJ zfEvg&)QC$^4bMj{=`vIYn@~&rIBIL2K@IE$R6DPtPWM}==dYl);5w?_FQ|IfAgvht zUxfreaIFlC#{$g4Qfz^zum}Eu{9|<=Y+2)Q9me4mR0q*RoB`EFtz2W&Kx0uIw?ws* zhN@p8>ED`1LJus&s<;%Z<9d_djvDbZs6+K4>g)AA)QVk29nPDmy^k8|tUv;)qrRwt z3`E@@iE5_+1JNXwkro z?sSxe8z~=)58yRqx2zQ-oGt!n1naMk>yLD1&C&kZTV5ocTN2O3Ek+7+LK`>@4?#Sbzcu`KrQW)sDT_o zb$ABV(KqIPMLza)hGI}#(#GU7Q0?_H`EjT%2}~oQrJaLX%H^n;Z$dq=4K;xM7<#Qt z`4!Yzu|_*v6oEPmQK-Y(z~tkMDX8|lpjNm)GQfZ}mV^c{#VN4-sKYVexCAw$RTzhx zQ3H7ewIb(D`LC$wnvQYKP9kc6t*{2Bp|-9k>P+?HP@siJ%T^KE~oq)BrbNKn*@Y;@vQo6gQAx zGr^fr>_n&G)~E*tVlrkUld{%eCSJnkm@vuti8T~;W)`E)&?fAQyD<}g#BSI&oBi)k zqA1(hh5#e3k+&{Y$6^Uq@AV!{kq5J@Thb{#(@2UPm3q3NELEMAY-CsOK|K1MG%2jz+Ec z9IS?G0w%Eqb=dZxX8a23hse98{HpPH)Y4X);&c#$s^0>eU{~V=)ay7OHS>E=6I_ov z3-@Cx1|A~Ofy8mt(pJcE9*9Og(9mdO82JR$%#$z?Gw=XTM$NoIuJfFYT7d-ARwbK! z57fj4Acs3(O*1!&QLoDaRKshr2flzYcoTKVnz)@`I(<=ZM=`47C8(LMG;TnhiAPXN zy&Lt3_!7qB5e)tN|78;D_$O4wN>iN~)kNw&(m=-;q!Q3DcbSJ{`-GABkGJu_o_DHBe~s3s8H!7R><>8qvJfEDqG@g3Bu zKZTmvzfm3jVT{gmRyGDT!8ELl-B9iH&tv^7kr+;aIvj6qxQrfbO!+L-%+{h_w@s*l z?=t0|V-oqxsQNYYoq?yICe{npPe0V_I~=veQv)P4l04M=Ux?bvrKs0r3u;eaM4gdy zsQTYvB3?%|)VRP|p%_#b)R!)>Z6{|Ld|dhYNfJKpMZYU^D9sTcnG8P{y$10or1ks9lt^~a07Ly zs?KyCh(XP?1x8{UQ{KsxcQ^Ji4#aTk4MT0+NYp^aquTdl68&3un;XxfMs^f6(i0es zpPBsksI4hC%b9s2RDMzEYdjHp%3I~lRQK$ZM z)JT6u4Wx?SX{ZraBi{zqVWzPMY65*xhi<5GBxn!Tq?U^zGj>6B)Dty;L8z4&h8pN-)S;Y!wQy=7>#xK-3N*4c zs0TNq9((}R;a1d)pF{)J=lYYd(8JDtNh2ydf&GHQ?S zMAct}YVRIwfu-08Uq!Y52{xpE>q`?uc2mk9o6CQ zs6DK>$my^)DnAI-&Nx(ulTgo3!z?Voj`%d{t+=ES_90RCF6XtIgd@o>!0Gr;d=NV? zc7Al8Ms-kbiPLaJV-#wDwNM@3hT|~~wd9M;{bi^LuSTuVh5!l8^fA;7_M?{OFzWCe z#~Az=wN<~NPIL59XTa&0M1B;O!-c3BFUI<~9QC=d9o63RSRN0f1`>F~+&E!woI%ax zyeYqgt;qj?`XI8GIro#XG5K^Xk0ViMVk~L}^3cX2li!HEnbsqyfi}21R4-sPCZP@! zPC{I}sH7*75Ys-Leh zit}gvXl{hBa87vz)FG^o8fhD>fNildc0|p%2Wn~iqLy|dYEM0=`g4r|Y({<=Y64H7 zCiJ56^lzOcp)+s+)zH6DOZ^9`gQ_c?6={a*AQ^QQGEw!0V`ZF-`j(u5I^A>4{U=ec z@AIgEy@e5Y5(AMWPLohW7qAju!%y)B>ZAC>Rn8V&Lk;j})IiGJ>&&PYs^fT6c{|i| zJyD;G6HrS(2UTxAYGqg6%lhla8dG6CY9JfXi#w1nG^@sHX9<_%9`aA2o*TW!X=og3 zMw3um=Qibcq9(KmRey!?UW_Eab`9&Vkv>R)zBHagHFONMq^D4a^Bgi3>mq8a{A*cm zT!Om)h4Cu7$p45<@Q!tyA1uaX+=-gt`>26^9w6Z+aRt@ku=UPfk4NRFo4g;j^Z^`z zt56+(Xv)uHb@EqGOM4Sz@lVti#NOxp&d9@O6O4iBtD4gJQPj(jHz44cwQB`b`v`Y57A5S|5GGtnx2ZN z{1wrhI6}P5y-4o0#E%GFT(gKL^5T%^m_FsJ=5f$#vo-KP2P=qb&nCJ2=yPj zs&M0FQXiQ752$^7f_Ra8KI}%UCw&kP6FrE5gszh zu|(h=GCxq5M&=NDiM&u1{*bOt=sHSFAg#CH){CEg*6)<_8^+pb>fVFxO{L#R*Cg#H zP7o`}AHg9wy=?wnDR__2)tMN^%^rG?xIvU%ZNTqeSS=6QKl4OZHjPKM{KMY#uyIx`xV$1*Gr8t+=1i^#IPqK15aO z4Q#z6y=Z!gq+5Dcgmg6C+7~ zsI;lyz;w2XvINTb#TNR-1J-H%;rfHPJ(Obp&3WLed3Yp+UlLK|kDIc|`K!m?*mv!p-?VPRScY8*VPe53n4K<(QiK z2<=JPZlaX9LEdZbZNONQu3!f62X%CPOz6|~A)U|sXz6w>2J_a#0d^2z@LAHWWTuI)s5qJx>tMHO;gquw{zlL&qO zbSH5ag)gA4ouu=K=A_pW`bK<%{8ZHS3h7!j8c!6EZi7ElK0b7pe}ke-mwx5EMYh9ux<$ zzK*=EEMhZ}Z_3Y*u1mewu@hx2N$U!HW-3IRf>kD8iJR9$Rd^LC+e17@WKvc_R5SHn zC4HH6C88VgBl&i;bq792G$FpA{3?zmsuH7#C6u)T!RRDZfnp4AOH=TUn$x6XVo>u_+u*K^J0^ z$+sr0D;Lv@Vh}fe#(!W7+=@{|HAWpzUe{~Jhe@}h{6eVoKY!+Neyx2lKzv>RgwGO;aHQugk6a^ zViVDpd;i2`#J@-<#AJfz zUVVI#vb8uuWszfj#rAYpiQAsyc6;s8$!%6PwMV$UxwaJ(Ul?N-7rOmkSApC1`iktS zzG81~a`1AS9^qAU-Gw=R&&(o^&)YnhnASNgIIHc*@ZhQT-NQ-~IvflB+M!igFs0*| zuzGSIH`{j6OHRHgC(rhI?V{;!J4PMH*i(v&ihSN=TSJ@e$Q&EQ|f{|1V?a2oCZW0$<{*=(>oIXG$f zhY^{B*z5kq`F2`IJGEV>)bviNZSAy_)V7gBhqNB4sX&VUs!N&_WtnTtSP(0O4D-B2J5&dh6U$Oy%ZMc zvJSoce@ZQY~E$xwA9+%+wf##4+n(5M^cI!~vg&yuO7GCsu?C6wy&yijKZBiWgvO3;GSBZye zYLip$r)DudxkAU=&B<=hE7-i1(;x#^lWwyEe@*eoHgod-bMP}ihhqQ-5NO7cyMvSkzIbD##&hH zDe+jN{P}-nf-@EsgqMD^cz;yxkzH)Emo{l3xPD1#Sm2J(5z77lEP%^-rD(!ANq;Ri sJ%-kik5qQXt3AliXPw+dmTTrr=eS!%evXOX=P4}Yq*=kNWn(J;7vJ@ypa1{> delta 12739 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 diff --git a/locales/fr/LC_MESSAGES/plinn.po b/locales/fr/LC_MESSAGES/plinn.po index ca6297c..e3576be 100755 --- a/locales/fr/LC_MESSAGES/plinn.po +++ b/locales/fr/LC_MESSAGES/plinn.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinn 2.0\n" "POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" -"PO-Revision-Date: 2009-10-30 14:43+0100\n" +"PO-Revision-Date: 2013-07-29 15:16+0200\n" "Last-Translator: Benoît PIN\n" "Language-Team: CRI http://cri.ensmp.fr\n" "Language: \n" @@ -34,23 +34,23 @@ msgstr "Page d'accueil de %s" #: n/RegistrationTool.py:217 msgid "Invalid reset password request." -msgstr "" +msgstr "Demande de réinitialisation de mot de passe invalide." #: n/RegistrationTool.py:222 msgid "Invalid userid." -msgstr "" +msgstr "Login invalide." #: n/RegistrationTool.py:226 msgid "Your reset password request has expired. You can ask a new one." -msgstr "" +msgstr "Votre demande de réinitialisation de mot de passe a expiré. Vous pouvez en demander une nouvelle." #: n/RegistrationTool.py:235 msgid "Password successfully resetted." -msgstr "" +msgstr "Mot de passe correctement réinitialisé." #: n/RegistrationTool.py:237 msgid "\"%s\" username not found." -msgstr "" +msgstr "Nom : « %s » non trouvé." #: n/profiles/default/workflows/default_workflow/scripts/sendNotificationEmail.py:52 #: n/profiles/default/workflows/folder_workflow/scripts/sendNotificationEmail.py:52 @@ -91,11 +91,11 @@ msgstr "votre inscription a été acceptée" #: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:51 msgid "Tracking number" -msgstr "" +msgstr "Numéro de suivi" #: n/profiles/photo/workflows/order_workflow/scripts/sendNotificationEmail.py:55 msgid "Tracking url" -msgstr "" +msgstr "Url de suivi" #: n/skins/content/cal_calendar_view.pt:30 msgid "Add a new event..." @@ -1095,24 +1095,24 @@ msgstr "Envoyer" #: n/skins/generic/request_password_reset_form.pt:11 msgid "Password reset" -msgstr "" +msgstr "Réinitialisation de mot de passe" #: n/skins/generic/request_password_reset_form.pt:12 msgid "" "Enter your username below and click on the \"Send\" button. You will receive " "an email with a link to reset your password." -msgstr "" +msgstr "Entrez votre login ci-dessous et cliquez sur « Envoyer ». Vous recevrez un email contenant un lien pour réinitialiser votre mot de passe." #: n/skins/generic/request_password_reset_form.pt:18 msgid "" "If this will not work for you (for example, if you forget your username or " "didn't enter your email address) send email to ${admin_email}." -msgstr "" +msgstr "Si cela ne marche pas dans votre cas (par exemple si vous avez oublié votre login ou si vous n'aviez pas entré une adresse email), vous pouvez envoyer un email à ${admin_email}." #. Default: "Send" #: n/skins/generic/request_password_reset_form.pt:25 msgid " Send " -msgstr "" +msgstr " Envoyer " #: n/skins/generic/revision_context_header.pt:10 msgid "" @@ -1255,7 +1255,7 @@ msgstr "Texte brut" #: n/skins/photo_theme/logout.py:15 msgid "You have been logged out." -msgstr "" +msgstr "Vous avez été déconnecté." #: n/skins/photo_theme/main_template_macros.pt:55 msgid "Loading progress..." @@ -1263,7 +1263,7 @@ msgstr "Chargement en cours..." #: n/skins/photo_theme/realis_main_macros.pt:28 msgid "Join" -msgstr "" +msgstr "S'inscrire" #: n/skins/photo_theme/search_results_macros.pt:12 msgid "Title" @@ -1287,7 +1287,7 @@ msgstr "(Sans titre)" #: n/skins/photo_theme/search_results_macros.pt:45 msgid "(No description)" -msgstr "" +msgstr "(Sans description)" msgid "${month}/${day}/${year}  ${hour}:${minute}:${second}" msgstr "${day}/${month}/${year}  ${hour}:${minute}:${second}" -- 2.20.1 From eac806a4950766d01679df800f20201b4f58cbd2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 15:19:54 +0200 Subject: [PATCH 06/16] =?utf8?q?Activation=20du=20lien=20vers=20le=20formu?= =?utf8?q?laire=20de=20r=C3=A9initialisation=20du=20mot=20de=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- skins/custom_generic/login_form.pt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/skins/custom_generic/login_form.pt b/skins/custom_generic/login_form.pt index 0ebaefc..3ab0724 100644 --- a/skins/custom_generic/login_form.pt +++ b/skins/custom_generic/login_form.pt @@ -45,9 +45,9 @@ - +

Having trouble logging in? Make sure to enable cookies in your web browser. -- 2.20.1 From 773a32c20340b63d244d2a43d6fd62103e723bc5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 16:49:50 +0200 Subject: [PATCH 07/16] =?utf8?q?Quelques=20pr=C3=A9paratifs=20avant=20l'im?= =?utf8?q?pl=C3=A9mentation=20de=20l'envoi=20du=20rappel.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 2 +- skins/generic/request_password_reset_form.py | 16 ++++++++++++++++ ...orm.pt => request_password_reset_template.pt} | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 skins/generic/request_password_reset_form.py rename skins/generic/{request_password_reset_form.pt => request_password_reset_template.pt} (86%) diff --git a/RegistrationTool.py b/RegistrationTool.py index 7d2f29b..109a0d6 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -204,7 +204,7 @@ class RegistrationTool(BaseRegistrationTool) : security.declarePrivate('clearExpiredPasswordResetRequests') def clearExpiredPasswordResetRequests(self): now = DateTime() - for uuid, record in self._passwordResetRequest.items() : + for uuid, record in self._passwordResetRequests.items() : userid, date = record if date < now : del self._passwordResetRequests[uuid] diff --git a/skins/generic/request_password_reset_form.py b/skins/generic/request_password_reset_form.py new file mode 100644 index 0000000..69a34c3 --- /dev/null +++ b/skins/generic/request_password_reset_form.py @@ -0,0 +1,16 @@ +##parameters=userid='', requestReset='' +from Products.CMFCore.utils import getUtilityByInterfaceName +from Products.Plinn.utils import Message as _ +utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') +rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') + +if requestReset : + uuid = rtool.requestPasswordReset(userid) + context.setStatus(True, _('request for resetting password sent')) + return 'yeah !' + +options={} +target = '%s/request_password_reset_form' % utool() +options['action'] = target + +return context.request_password_reset_template(**options) \ No newline at end of file diff --git a/skins/generic/request_password_reset_form.pt b/skins/generic/request_password_reset_template.pt similarity index 86% rename from skins/generic/request_password_reset_form.pt rename to skins/generic/request_password_reset_template.pt index fe7c384..1047b66 100644 --- a/skins/generic/request_password_reset_form.pt +++ b/skins/generic/request_password_reset_template.pt @@ -20,9 +20,9 @@ tal:content="ptool/email_from_address" href="mailto:me@here.com" i18n:name="admin_email">me@here.com.

-
+ - +
-- 2.20.1 From ad865412e1d18480a242f20b48043f27a20f0a94 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Mon, 29 Jul 2013 16:52:12 +0200 Subject: [PATCH 08/16] tabulation converties en espaces. --- RegistrationTool.py | 356 ++++++++++++++++++++++---------------------- 1 file changed, 178 insertions(+), 178 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index 109a0d6..85133ff 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -18,7 +18,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ####################################################################################### """ Plinn registration tool: implements 3 modes to register members: - anonymous, manager, reviewed. + anonymous, manager, reviewed. @@ -60,181 +60,181 @@ security.declarePublic('DEFAULT_MEMBER_GROUP') class RegistrationTool(BaseRegistrationTool) : - """ Create and modify users by making calls to portal_membership. - """ - - meta_type = "Plinn Registration Tool" - - manage_options = ({'label' : 'Registration mode', 'action' : 'manage_regmode'}, ) + \ - BaseRegistrationTool.manage_options - - security = ClassSecurityInfo() - - security.declareProtected( ManagePortal, 'manage_regmode' ) - manage_regmode = PageTemplateFile('www/configureRegistrationTool', globals(), - __name__='manage_regmode') - - def __init__(self) : - self._mode = MODE_ANONYMOUS - self._chain = '' - self._passwordResetRequests = OOBTree() - - security.declareProtected(ManagePortal, 'configureTool') - def configureTool(self, registration_mode, chain, REQUEST=None) : - """ """ - - if registration_mode not in MODES : - raise ValueError, "Unknown mode: " + registration_mode - else : - self._mode = registration_mode - self._updatePortalRoleMappingForMode(registration_mode) - - wtool = getToolByName(self, 'portal_workflow') - - if registration_mode == MODE_REVIEWED : - if not hasattr(wtool, '_chains_by_type') : - wtool._chains_by_type = PersistentMapping() - wfids = [] - chain = chain.strip() - - if chain == '(Default)' : - try : del wtool._chains_by_type['Member Data'] - except KeyError : pass - self._chain = chain - else : - for wfid in chain.replace(',', ' ').split(' ') : - if wfid : - if not wtool.getWorkflowById(wfid) : - raise ValueError, '"%s" is not a workflow ID.' % wfid - wfids.append(wfid) - - wtool._chains_by_type['Member Data'] = tuple(wfids) - self._chain = ', '.join(wfids) - else : - wtool._chains_by_type['Member Data'] = tuple() - - if REQUEST : - REQUEST.RESPONSE.redirect(self.absolute_url() + '/manage_regmode?manage_tabs_message=Saved changes.') - - def _updatePortalRoleMappingForMode(self, mode) : - - urlTool = getToolByName(self, 'portal_url') - portal = urlTool.getPortalObject() - - if mode in [MODE_ANONYMOUS, MODE_REVIEWED] : - portal.manage_permission(AddPortalMember, roles = ['Anonymous', 'Manager'], acquire=1) - elif mode == MODE_MANAGER : - portal.manage_permission(AddPortalMember, roles = ['Manager', 'UserManager'], acquire=0) - - security.declarePublic('getMode') - def getMode(self) : - # """ return current mode """ - return self._mode[:] - - security.declarePublic('getWfId') - def getWfChain(self) : - # """ return current workflow id """ - return self._chain - - security.declarePublic('roleMappingMismatch') - def roleMappingMismatch(self) : - # """ test if the role mapping is correct for the currrent mode """ - - mode = self._mode - urlTool = getToolByName(self, 'portal_url') - portal = urlTool.getPortalObject() - - def rolesOfAddPortalMemberPerm() : - p=Permission(AddPortalMember, [], portal) - return p.getRoles() - - if mode in [MODE_ANONYMOUS, MODE_REVIEWED] : - if 'Anonymous' in rolesOfAddPortalMemberPerm() : return False - - elif mode == MODE_MANAGER : - roles = rolesOfAddPortalMemberPerm() - if 'Manager' in roles or 'UserManager' in roles and len(roles) == 1 and type(roles) == TupleType : - return False - - return True - - security.declareProtected(AddPortalMember, 'addMember') - def addMember(self, id, password, roles=(), groups=(DEFAULT_MEMBER_GROUP,), domains='', properties=None) : - """ Idem CMFCore but without default role """ - BaseRegistrationTool.addMember(self, id, password, roles=roles, - domains=domains, properties=properties) - - if self.getMode() in [MODE_ANONYMOUS, MODE_MANAGER] : - gtool = getToolByName(self, 'portal_groups') - mtool = getToolByName(self, 'portal_membership') - utool = getToolByName(self, 'portal_url') - portal = utool.getPortalObject() - isGrpManager = mtool.checkPermission(ManageGroups, portal) ## TODO : CMF2.1 compat - aclu = self.aq_inner.acl_users - - for gid in groups: - g = gtool.getGroupById(gid) - if not isGrpManager : - if gid != DEFAULT_MEMBER_GROUP: - raise AccessControl_Unauthorized, 'You are not allowed to join arbitrary group.' - - if g is None : - gtool.addGroup(gid) - aclu.changeUser(aclu.getGroupPrefix() +gid, roles=['Member', ]) - g = gtool.getGroupById(gid) - g.addMember(id) - - - def afterAdd(self, member, id, password, properties): - """ notify member creation """ - member.notifyWorkflowCreated() - member.indexObject() - - - security.declarePublic('requestPasswordReset') - def requestPasswordReset(self, userid): - """ add uuid / (userid, expiration) pair and return uuid """ - self.clearExpiredPasswordResetRequests() - mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') - if mtool.getMemberById(userid) : - uuid = str(uuid4()) - self._passwordResetRequests[uuid] = (userid, DateTime() + 1) - return uuid - - security.declarePrivate('clearExpiredPasswordResetRequests') - def clearExpiredPasswordResetRequests(self): - now = DateTime() - for uuid, record in self._passwordResetRequests.items() : - userid, date = record - if date < now : - del self._passwordResetRequests[uuid] - - - security.declarePublic('resetPassword') - def resetPassword(self, userid, uuid, password, confirm) : - record = self._passwordResetRequests.get(uuid) - if not record : - return _('Invalid reset password request.') - - recUserid, expiration = record - - if recUserid != userid : - return _('Invalid userid.') - - if expiration < now : - self.clearExpiredPasswordResetRequests() - return _('Your reset password request has expired. You can ask a new one.') - - msg = self.testPasswordValidity(password, confirm=confirm) - if not msg : # None if everything ok. Err message otherwise. - mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') - member = mtool.getMemberById(userid) - if member : - member.setSecurityProfile(password=password) - del self._passwordResetRequests[uuid] - return _('Password successfully resetted.') - else : - return _('"%s" username not found.') % userid - - + """ Create and modify users by making calls to portal_membership. + """ + + meta_type = "Plinn Registration Tool" + + manage_options = ({'label' : 'Registration mode', 'action' : 'manage_regmode'}, ) + \ + BaseRegistrationTool.manage_options + + security = ClassSecurityInfo() + + security.declareProtected( ManagePortal, 'manage_regmode' ) + manage_regmode = PageTemplateFile('www/configureRegistrationTool', globals(), + __name__='manage_regmode') + + def __init__(self) : + self._mode = MODE_ANONYMOUS + self._chain = '' + self._passwordResetRequests = OOBTree() + + security.declareProtected(ManagePortal, 'configureTool') + def configureTool(self, registration_mode, chain, REQUEST=None) : + """ """ + + if registration_mode not in MODES : + raise ValueError, "Unknown mode: " + registration_mode + else : + self._mode = registration_mode + self._updatePortalRoleMappingForMode(registration_mode) + + wtool = getToolByName(self, 'portal_workflow') + + if registration_mode == MODE_REVIEWED : + if not hasattr(wtool, '_chains_by_type') : + wtool._chains_by_type = PersistentMapping() + wfids = [] + chain = chain.strip() + + if chain == '(Default)' : + try : del wtool._chains_by_type['Member Data'] + except KeyError : pass + self._chain = chain + else : + for wfid in chain.replace(',', ' ').split(' ') : + if wfid : + if not wtool.getWorkflowById(wfid) : + raise ValueError, '"%s" is not a workflow ID.' % wfid + wfids.append(wfid) + + wtool._chains_by_type['Member Data'] = tuple(wfids) + self._chain = ', '.join(wfids) + else : + wtool._chains_by_type['Member Data'] = tuple() + + if REQUEST : + REQUEST.RESPONSE.redirect(self.absolute_url() + '/manage_regmode?manage_tabs_message=Saved changes.') + + def _updatePortalRoleMappingForMode(self, mode) : + + urlTool = getToolByName(self, 'portal_url') + portal = urlTool.getPortalObject() + + if mode in [MODE_ANONYMOUS, MODE_REVIEWED] : + portal.manage_permission(AddPortalMember, roles = ['Anonymous', 'Manager'], acquire=1) + elif mode == MODE_MANAGER : + portal.manage_permission(AddPortalMember, roles = ['Manager', 'UserManager'], acquire=0) + + security.declarePublic('getMode') + def getMode(self) : + # """ return current mode """ + return self._mode[:] + + security.declarePublic('getWfId') + def getWfChain(self) : + # """ return current workflow id """ + return self._chain + + security.declarePublic('roleMappingMismatch') + def roleMappingMismatch(self) : + # """ test if the role mapping is correct for the currrent mode """ + + mode = self._mode + urlTool = getToolByName(self, 'portal_url') + portal = urlTool.getPortalObject() + + def rolesOfAddPortalMemberPerm() : + p=Permission(AddPortalMember, [], portal) + return p.getRoles() + + if mode in [MODE_ANONYMOUS, MODE_REVIEWED] : + if 'Anonymous' in rolesOfAddPortalMemberPerm() : return False + + elif mode == MODE_MANAGER : + roles = rolesOfAddPortalMemberPerm() + if 'Manager' in roles or 'UserManager' in roles and len(roles) == 1 and type(roles) == TupleType : + return False + + return True + + security.declareProtected(AddPortalMember, 'addMember') + def addMember(self, id, password, roles=(), groups=(DEFAULT_MEMBER_GROUP,), domains='', properties=None) : + """ Idem CMFCore but without default role """ + BaseRegistrationTool.addMember(self, id, password, roles=roles, + domains=domains, properties=properties) + + if self.getMode() in [MODE_ANONYMOUS, MODE_MANAGER] : + gtool = getToolByName(self, 'portal_groups') + mtool = getToolByName(self, 'portal_membership') + utool = getToolByName(self, 'portal_url') + portal = utool.getPortalObject() + isGrpManager = mtool.checkPermission(ManageGroups, portal) ## TODO : CMF2.1 compat + aclu = self.aq_inner.acl_users + + for gid in groups: + g = gtool.getGroupById(gid) + if not isGrpManager : + if gid != DEFAULT_MEMBER_GROUP: + raise AccessControl_Unauthorized, 'You are not allowed to join arbitrary group.' + + if g is None : + gtool.addGroup(gid) + aclu.changeUser(aclu.getGroupPrefix() +gid, roles=['Member', ]) + g = gtool.getGroupById(gid) + g.addMember(id) + + + def afterAdd(self, member, id, password, properties): + """ notify member creation """ + member.notifyWorkflowCreated() + member.indexObject() + + + security.declarePublic('requestPasswordReset') + def requestPasswordReset(self, userid): + """ add uuid / (userid, expiration) pair and return uuid """ + self.clearExpiredPasswordResetRequests() + mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') + if mtool.getMemberById(userid) : + uuid = str(uuid4()) + self._passwordResetRequests[uuid] = (userid, DateTime() + 1) + return uuid + + security.declarePrivate('clearExpiredPasswordResetRequests') + def clearExpiredPasswordResetRequests(self): + now = DateTime() + for uuid, record in self._passwordResetRequests.items() : + userid, date = record + if date < now : + del self._passwordResetRequests[uuid] + + + security.declarePublic('resetPassword') + def resetPassword(self, userid, uuid, password, confirm) : + record = self._passwordResetRequests.get(uuid) + if not record : + return _('Invalid reset password request.') + + recUserid, expiration = record + + if recUserid != userid : + return _('Invalid userid.') + + if expiration < now : + self.clearExpiredPasswordResetRequests() + return _('Your reset password request has expired. You can ask a new one.') + + msg = self.testPasswordValidity(password, confirm=confirm) + if not msg : # None if everything ok. Err message otherwise. + mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') + member = mtool.getMemberById(userid) + if member : + member.setSecurityProfile(password=password) + del self._passwordResetRequests[uuid] + return _('Password successfully resetted.') + else : + return _('"%s" username not found.') % userid + + InitializeClass(RegistrationTool) \ No newline at end of file -- 2.20.1 From 7b145f8e9dea2adbf9616bd40f80be71e557c9bd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Tue, 30 Jul 2013 15:27:38 +0200 Subject: [PATCH 09/16] =?utf8?q?Suite=20de=20l'impl=C3=A9mentation=20de=20?= =?utf8?q?la=20r=C3=A9initialisation=20de=20mot=20de=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index 85133ff..953e008 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -196,10 +196,17 @@ class RegistrationTool(BaseRegistrationTool) : """ add uuid / (userid, expiration) pair and return uuid """ self.clearExpiredPasswordResetRequests() mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool') - if mtool.getMemberById(userid) : + member = mtool.getMemberById(userid) + if member : uuid = str(uuid4()) self._passwordResetRequests[uuid] = (userid, DateTime() + 1) - return uuid + mailhost = getUtilityByInterfaceName('Products.MailHost.interfaces.IMailHost') + ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') + utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') + sender = ptool.getProperty('email_from_address') + to = member.getProperty('email') + message = self.echange_mail_template(From=sender, + To=to) security.declarePrivate('clearExpiredPasswordResetRequests') def clearExpiredPasswordResetRequests(self): -- 2.20.1 From 7e74f1754d15f96bd33bae06b855c48c87db2498 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Tue, 30 Jul 2013 22:48:42 +0200 Subject: [PATCH 10/16] Conversion tabulations -> espaces. --- utils.py | 378 +++++++++++++++++++++++++++---------------------------- 1 file changed, 189 insertions(+), 189 deletions(-) diff --git a/utils.py b/utils.py index 863b94e..470b49a 100755 --- a/utils.py +++ b/utils.py @@ -49,234 +49,234 @@ security = ModuleSecurityInfo( 'Products.Plinn.utils' ) security.declarePublic('thisObjectComeFromPortalSkin') def thisObjectComeFromPortalSkin(ob, portal=None): - """ check if ob comes from portal_skins """ - if not portal : - portal = getToolByName(ob, 'portal_url') - portal = portal.getPortalObject() - - if ob.aq_self == portal.aq_self : - return False - - obId = ob.id - if callable(obId) : - obId = obId() - - sob = getattr(portal, obId, None) - - if sob is None : - return False - elif not(sob.aq_inner.aq_self is ob.aq_inner.aq_self) : - return False - else : - try : - portal._checkId(obId) - return True - except BadRequest : - return False + """ check if ob comes from portal_skins """ + if not portal : + portal = getToolByName(ob, 'portal_url') + portal = portal.getPortalObject() + + if ob.aq_self == portal.aq_self : + return False + + obId = ob.id + if callable(obId) : + obId = obId() + + sob = getattr(portal, obId, None) + + if sob is None : + return False + elif not(sob.aq_inner.aq_self is ob.aq_inner.aq_self) : + return False + else : + try : + portal._checkId(obId) + return True + except BadRequest : + return False security.declarePublic('listActionProviders_') def listActionProviders_(context) : - atool = getToolByName(context, 'portal_actions') - return atool.listActionProviders() + atool = getToolByName(context, 'portal_actions') + return atool.listActionProviders() def capitalizeCompoundGivenName(givenName) : - givenName = givenName.strip() - givenNames = ' '.join(givenName.split('-')).split() - givenNameCapitalized = '-'.join(map(string.capitalize, givenNames)) - return givenNameCapitalized - - + givenName = givenName.strip() + givenNames = ' '.join(givenName.split('-')).split() + givenNameCapitalized = '-'.join(map(string.capitalize, givenNames)) + return givenNameCapitalized + + def formatFullName(memberName, memberGivenName, memberId, nameBefore=1) : - memberName = memberName.decode('utf-8') - memberGivenName = memberGivenName.decode('utf-8') - memberFullName = u'' - if memberName and memberGivenName : - if nameBefore : - memberFullName = memberName.upper() + ' ' + capitalizeCompoundGivenName(memberGivenName) - else : - memberFullName = capitalizeCompoundGivenName(memberGivenName) + ' ' + memberName.upper() - - elif memberName and not memberGivenName : - memberFullName = memberName.upper() - - elif not memberName and memberGivenName : - memberFullName = capitalizeCompoundGivenName(memberGivenName) - - else : - memberFullName = memberId - - return memberFullName.encode('utf-8') + memberName = memberName.decode('utf-8') + memberGivenName = memberGivenName.decode('utf-8') + memberFullName = u'' + if memberName and memberGivenName : + if nameBefore : + memberFullName = memberName.upper() + ' ' + capitalizeCompoundGivenName(memberGivenName) + else : + memberFullName = capitalizeCompoundGivenName(memberGivenName) + ' ' + memberName.upper() + + elif memberName and not memberGivenName : + memberFullName = memberName.upper() + + elif not memberName and memberGivenName : + memberFullName = capitalizeCompoundGivenName(memberGivenName) + + else : + memberFullName = memberId + + return memberFullName.encode('utf-8') # from OFS.ObjectManager #63 bad_url_chars = re.compile(r'[^a-zA-Z0-9-_~,.$\(\)@]') security.declarePublic('makeValidId') def makeValidId(self, id, allow_dup=0): - id = Utf8Utils.desacc(id) - id = bad_url_chars.sub('-', id) - # If allow_dup is false, an error will be raised if an object - # with the given id already exists. If allow_dup is true, - # only check that the id string contains no illegal chars; - # check_valid_id() will be called again later with allow_dup - # set to false before the object is added. - - makeRandomId = False - if id in ('.', '..'): - makeRandomId = True - if id.startswith('_'): - id = id.lstrip('_') - if id.startswith('aq_'): - id = id[3:] - - while id.endswith('__') : - id = id[:-1] - if not allow_dup: - obj = getattr(self, id, None) - if obj is not None: - # An object by the given id exists either in this - # ObjectManager or in the acquisition path. - flags = getattr(obj, '__replaceable__', NOT_REPLACEABLE) - if hasattr(aq_base(self), id): - # The object is located in this ObjectManager. - if not flags & REPLACEABLE: - makeRandomId = True - # else the object is replaceable even if the UNIQUE - # flag is set. - elif flags & UNIQUE: - makeRandomId = True - if id == 'REQUEST': - makeRandomId = True - - if makeRandomId is True : - id = str(randrange(2,10000)) + id - return id - - + id = Utf8Utils.desacc(id) + id = bad_url_chars.sub('-', id) + # If allow_dup is false, an error will be raised if an object + # with the given id already exists. If allow_dup is true, + # only check that the id string contains no illegal chars; + # check_valid_id() will be called again later with allow_dup + # set to false before the object is added. + + makeRandomId = False + if id in ('.', '..'): + makeRandomId = True + if id.startswith('_'): + id = id.lstrip('_') + if id.startswith('aq_'): + id = id[3:] + + while id.endswith('__') : + id = id[:-1] + if not allow_dup: + obj = getattr(self, id, None) + if obj is not None: + # An object by the given id exists either in this + # ObjectManager or in the acquisition path. + flags = getattr(obj, '__replaceable__', NOT_REPLACEABLE) + if hasattr(aq_base(self), id): + # The object is located in this ObjectManager. + if not flags & REPLACEABLE: + makeRandomId = True + # else the object is replaceable even if the UNIQUE + # flag is set. + elif flags & UNIQUE: + makeRandomId = True + if id == 'REQUEST': + makeRandomId = True + + if makeRandomId is True : + id = str(randrange(2,10000)) + id + return id + + def _checkMemberPermission(userid, permission, obj, StringType = type('')): - user = obj.aq_inner.acl_users.getUser(userid) - roles = rolesForPermissionOn(permission, obj) - if type(roles) is StringType: - roles=[roles] - if user.allowed( obj, roles ): - return 1 - return 0 - + user = obj.aq_inner.acl_users.getUser(userid) + roles = rolesForPermissionOn(permission, obj) + if type(roles) is StringType: + roles=[roles] + if user.allowed( obj, roles ): + return 1 + return 0 + def getCPInfo(self) : - try: cp = _cb_decode(self.REQUEST['__cp']) - except: return None - return cp + try: cp = _cb_decode(self.REQUEST['__cp']) + except: return None + return cp def popCP(self, indexes=None) : - try: cp = _cb_decode(self.REQUEST['__cp']) - except: return - - paths = list(cp[1]) - if indexes is not None : - indexes = list(indexes) - indexes.sort() - indexes.reverse() - for index in indexes : - paths.pop(index) - else : - paths.pop() - - if not paths : - self.REQUEST.RESPONSE.expireCookie('__cp', path=self.REQUEST['BASEPATH1'] or "/") - else : - paths = tuple(paths) - cp = _cb_encode( (cp[0], paths) ) - resp = self.REQUEST['RESPONSE'] - resp.setCookie('__cp', cp, path='%s' % cookie_path(self.REQUEST)) + try: cp = _cb_decode(self.REQUEST['__cp']) + except: return + + paths = list(cp[1]) + if indexes is not None : + indexes = list(indexes) + indexes.sort() + indexes.reverse() + for index in indexes : + paths.pop(index) + else : + paths.pop() + + if not paths : + self.REQUEST.RESPONSE.expireCookie('__cp', path=self.REQUEST['BASEPATH1'] or "/") + else : + paths = tuple(paths) + cp = _cb_encode( (cp[0], paths) ) + resp = self.REQUEST['RESPONSE'] + resp.setCookie('__cp', cp, path='%s' % cookie_path(self.REQUEST)) security.declarePublic('Message') Message = MessageFactory('plinn') security.declarePublic('translate') def translate(message, context): - """ Translate i18n message. - """ - if isinstance(message, Exception): - try: - message = message[0] - except (TypeError, IndexError): - pass - return i18ntranslate(message, domain='plinn', context=context.REQUEST) + """ Translate i18n message. + """ + if isinstance(message, Exception): + try: + message = message[0] + except (TypeError, IndexError): + pass + return i18ntranslate(message, domain='plinn', context=context.REQUEST) security.declarePublic('desacc') desacc = Utf8Utils.desacc security.declarePublic('getPreferredLanguages') def getPreferredLanguages(context): - """ returns browser prefered languages""" - request = getattr(context, 'REQUEST', None) - if request is not None : - adapter = IUserPreferredLanguages(request, None) - if adapter is not None : - return adapter.getPreferredLanguages() - return [] + """ returns browser prefered languages""" + request = getattr(context, 'REQUEST', None) + if request is not None : + adapter = IUserPreferredLanguages(request, None) + if adapter is not None : + return adapter.getPreferredLanguages() + return [] security.declarePublic('getBestTranslationLanguage') def getBestTranslationLanguage(langs, context): - """ returns best translation language according - availables languages (param langs) - and user preferences (retrieves by context) - """ - request = getattr(context, 'REQUEST', None) - if request : - negociator = getUtilityByInterfaceName('zope.i18n.interfaces.INegotiator') - return negociator.getLanguage(langs, request) or langs[0] - else : - return langs[0] + """ returns best translation language according + availables languages (param langs) + and user preferences (retrieves by context) + """ + request = getattr(context, 'REQUEST', None) + if request : + negociator = getUtilityByInterfaceName('zope.i18n.interfaces.INegotiator') + return negociator.getLanguage(langs, request) or langs[0] + else : + return langs[0] security.declarePublic('getAdapterByInterface') def getAdapterByInterface(ob, dotted_name, default=_marker) : - """ Get the adapter which provides the interface on the given object. - """ - try: - iface = resolve_dotted_name(dotted_name) - except ImportError: - if default is _marker: - raise ComponentLookupError, dotted_name - return default + """ Get the adapter which provides the interface on the given object. + """ + try: + iface = resolve_dotted_name(dotted_name) + except ImportError: + if default is _marker: + raise ComponentLookupError, dotted_name + return default - adapter = queryAdapter(ob, iface, default=default) - if adapter is _marker : - raise ComponentLookupError, "no adapter providing %r found on %r" % (dotted_name, ob) + adapter = queryAdapter(ob, iface, default=default) + if adapter is _marker : + raise ComponentLookupError, "no adapter providing %r found on %r" % (dotted_name, ob) - # the adapter must be wrapped to allow security mahinery to work. - if adapter != default : - return adapter.__of__(ob) - else : - return default + # the adapter must be wrapped to allow security mahinery to work. + if adapter != default : + return adapter.__of__(ob) + else : + return default def _sudo(func, userid=None) : - """ - execute func or any callable object - without restriction. Used to switch off - security assertions (eg. checkPermission) encountered - during the execution. - """ - - sm = getSecurityManager() - restrictedUser = sm.getUser() - - if not userid : - userid = restrictedUser.getId() - - sm._context.user = UnrestrictedUser(userid, '', (), ()) + """ + execute func or any callable object + without restriction. Used to switch off + security assertions (eg. checkPermission) encountered + during the execution. + """ + + sm = getSecurityManager() + restrictedUser = sm.getUser() + + if not userid : + userid = restrictedUser.getId() + + sm._context.user = UnrestrictedUser(userid, '', (), ()) - deferedEx = None - try : - ret = func() - except Exception, e : - deferedEx = e - - sm._context.user = restrictedUser - - if deferedEx is not None : - raise e + deferedEx = None + try : + ret = func() + except Exception, e : + deferedEx = e + + sm._context.user = restrictedUser + + if deferedEx is not None : + raise e - return ret - \ No newline at end of file + return ret + \ No newline at end of file -- 2.20.1 From 63f5e85cdbd05ac9a00a6dab60548c226981fb62 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 06:46:38 +0200 Subject: [PATCH 11/16] =?utf8?q?Impl=C3=A9mentation=20de=20l'envoi=20d'ema?= =?utf8?q?il=20de=20r=C3=A9initialisation=20de=20mot=20de=20passe=20(texte?= =?utf8?q?=20du=20message=20ultra-minimaliste=20pour=20l'instant).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 26 +++++++++++++++++++++----- utils.py | 6 ++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index 953e008..c35cb6a 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -36,9 +36,11 @@ from Products.CMFCore.utils import getToolByName from Products.CMFCore.utils import getUtilityByInterfaceName from Products.GroupUserFolder.GroupsToolPermissions import ManageGroups from Products.Plinn.utils import Message as _ +from Products.Plinn.utils import encodeQuopriEmail from DateTime import DateTime from types import TupleType, ListType from uuid import uuid4 +from quopri import encodestring security = ModuleSecurityInfo('Products.Plinn.RegistrationTool') MODE_ANONYMOUS = 'anonymous' @@ -200,13 +202,27 @@ class RegistrationTool(BaseRegistrationTool) : if member : uuid = str(uuid4()) self._passwordResetRequests[uuid] = (userid, DateTime() + 1) - mailhost = getUtilityByInterfaceName('Products.MailHost.interfaces.IMailHost') - ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') - sender = ptool.getProperty('email_from_address') - to = member.getProperty('email') + ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') + # fuck : mailhost récupéré avec getUtilityByInterfaceName n'est pas correctement + # wrappé. Un « unrestrictedTraverse » ne marche pas. + # mailhost = getUtilityByInterfaceName('Products.MailHost.interfaces.IMailHost') + portal = utool.getPortalObject() + mailhost = portal.MailHost + sender = encodeQuopriEmail(ptool.getProperty('email_from_name'), ptool.getProperty('email_from_address')) + to = encodeQuopriEmail(member.getMemberFullName(nameBefore=0), member.getProperty('email')) + subject = "=?utf-8?q?%s?=" % encodestring('Password reset') + lines = [] + pr = lines.append + pr('%s/password_reset_form/%s' % (utool(), uuid)) + body = '\n'.join(lines) message = self.echange_mail_template(From=sender, - To=to) + To=to, + Subject=subject, + ContentType = 'text/plain', + charset = 'UTF-8', + body=body) + mailhost.send(message) security.declarePrivate('clearExpiredPasswordResetRequests') def clearExpiredPasswordResetRequests(self): diff --git a/utils.py b/utils.py index 470b49a..252af4e 100755 --- a/utils.py +++ b/utils.py @@ -27,6 +27,7 @@ import re from types import StringType from random import randrange from Acquisition import aq_base +from quopri import encodestring from AccessControl.PermissionRole import rolesForPermissionOn from AccessControl import ModuleSecurityInfo from AccessControl import getSecurityManager @@ -251,6 +252,11 @@ def getAdapterByInterface(ob, dotted_name, default=_marker) : else : return default +def encodeQuopriEmail(name, email) : + qpName = encodestring(name).replace('=\n', '') + return '''"=?utf-8?q?%s?=" <%s>''' % (qpName, email) + + def _sudo(func, userid=None) : """ execute func or any callable object -- 2.20.1 From 125a6289be7a631a256f948bda5415451aca6d98 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 11:06:53 +0200 Subject: [PATCH 12/16] =?utf8?q?Impl=C3=A9mentation=20compl=C3=A8te=20(mai?= =?utf8?q?s=20minimale)=20de=20la=20r=C3=A9initialisation=20de=20mot=20de?= =?utf8?q?=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 9 ++--- skins/control/reset_password_control.py | 9 +++++ skins/generic/password_reset_form.py | 19 ++++++++++ skins/generic/password_reset_template.pt | 46 ++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 skins/control/reset_password_control.py create mode 100644 skins/generic/password_reset_form.py create mode 100644 skins/generic/password_reset_template.pt diff --git a/RegistrationTool.py b/RegistrationTool.py index c35cb6a..b46a13b 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -234,16 +234,13 @@ class RegistrationTool(BaseRegistrationTool) : security.declarePublic('resetPassword') - def resetPassword(self, userid, uuid, password, confirm) : + def resetPassword(self, uuid, password, confirm) : record = self._passwordResetRequests.get(uuid) if not record : return _('Invalid reset password request.') - recUserid, expiration = record - - if recUserid != userid : - return _('Invalid userid.') - + userid, expiration = record + now = DateTime() if expiration < now : self.clearExpiredPasswordResetRequests() return _('Your reset password request has expired. You can ask a new one.') diff --git a/skins/control/reset_password_control.py b/skins/control/reset_password_control.py new file mode 100644 index 0000000..f903e24 --- /dev/null +++ b/skins/control/reset_password_control.py @@ -0,0 +1,9 @@ +##parameters=uuid='', password='', confirm='', **kw +from Products.CMFCore.utils import getUtilityByInterfaceName +rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') + +msg = rtool.resetPassword(uuid, password, confirm) +if msg : + return context.setStatus(False, msg) +else : + return True \ No newline at end of file diff --git a/skins/generic/password_reset_form.py b/skins/generic/password_reset_form.py new file mode 100644 index 0000000..b783b63 --- /dev/null +++ b/skins/generic/password_reset_form.py @@ -0,0 +1,19 @@ +##parameters=validate='' +from Products.CMFCore.utils import getUtilityByInterfaceName +utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') +atool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IActionsTool') + +form = context.REQUEST.form +uuid = traverse_subpath[0] + +if validate and \ + context.validatePassword(**form) and \ + context.reset_password_control(uuid=uuid, **form) and \ + context.setRedirect(atool, 'user/join', ajax=form.get('ajax')) : + return + +options = {} +options['uuid'] = uuid +options['action'] = '%s/password_reset_form/%s' % (utool(), uuid) + +return context.password_reset_template(**options) \ No newline at end of file diff --git a/skins/generic/password_reset_template.pt b/skins/generic/password_reset_template.pt new file mode 100644 index 0000000..30c46b4 --- /dev/null +++ b/skins/generic/password_reset_template.pt @@ -0,0 +1,46 @@ + + + Password reset form + + + + +
+
+

Password resetting

+ + + + + + + + + + + + + + + + +
+
+
+ Please enter a new password and clic on "Validate" button. +
+
+
Password + +
Confirm + +

+ +
+
+
+ + -- 2.20.1 From 3f032bd10705f163d90cb7b9dfedc64c91ce727c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 11:17:49 +0200 Subject: [PATCH 13/16] =?utf8?q?On=20ne=20sait=20jamais=20ce=20que=20le=20?= =?utf8?q?hasard=20nous=20r=C3=A9serve=20:-D.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RegistrationTool.py b/RegistrationTool.py index b46a13b..f34b4a5 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -201,6 +201,8 @@ class RegistrationTool(BaseRegistrationTool) : member = mtool.getMemberById(userid) if member : uuid = str(uuid4()) + while self._passwordResetRequests.has_key(uuid) : + uuid = str(uuid4()) self._passwordResetRequests[uuid] = (userid, DateTime() + 1) utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') ptool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IPropertiesTool') -- 2.20.1 From 797d6a6d2797c8ff4ac50e7a107c585f838ff282 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 12:37:14 +0200 Subject: [PATCH 14/16] =?utf8?q?Ajouts=20messages=20de=20retour=20du=20for?= =?utf8?q?mulaire=20de=20demande=20de=20r=C3=A9initialisation=20de=20mot?= =?utf8?q?=20de=20passe.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- RegistrationTool.py | 3 +++ skins/generic/request_password_reset_form.py | 12 ++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/RegistrationTool.py b/RegistrationTool.py index f34b4a5..f31a5c6 100644 --- a/RegistrationTool.py +++ b/RegistrationTool.py @@ -225,6 +225,9 @@ class RegistrationTool(BaseRegistrationTool) : charset = 'UTF-8', body=body) mailhost.send(message) + return + + return _('Unknown user name. Please retry.') security.declarePrivate('clearExpiredPasswordResetRequests') def clearExpiredPasswordResetRequests(self): diff --git a/skins/generic/request_password_reset_form.py b/skins/generic/request_password_reset_form.py index 69a34c3..1e9b57c 100644 --- a/skins/generic/request_password_reset_form.py +++ b/skins/generic/request_password_reset_form.py @@ -1,13 +1,17 @@ -##parameters=userid='', requestReset='' +##parameters=userid='', requestReset='', ajax='' from Products.CMFCore.utils import getUtilityByInterfaceName from Products.Plinn.utils import Message as _ utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') if requestReset : - uuid = rtool.requestPasswordReset(userid) - context.setStatus(True, _('request for resetting password sent')) - return 'yeah !' + msg = rtool.requestPasswordReset(userid) + if not msg : + context.setStatus(True, _('Request for resetting password sent to your contact email.')) + context.setRedirect(utool.getPortalObject(), 'object/view', ajax=ajax) + return + + context.setStatus(False, msg) options={} target = '%s/request_password_reset_form' % utool() -- 2.20.1 From ba5dfbeadced3f2773dfee1bad46c9b86d4f4a86 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 12:47:40 +0200 Subject: [PATCH 15/16] =?utf8?q?Localisation=20des=20messages=20relatifs?= =?utf8?q?=20=C3=A0=20la=20r=C3=A9initialisation=20de=20son=20mot=20de=20p?= =?utf8?q?asse.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- locales/en/LC_MESSAGES/plinn.mo | Bin 2313 -> 2313 bytes locales/en/LC_MESSAGES/plinn.po | 39 ++++++++---- locales/fr/LC_MESSAGES/plinn.mo | Bin 37466 -> 37942 bytes locales/fr/LC_MESSAGES/plinn.po | 59 +++++++++++++------ locales/plinn.pot | 39 ++++++++---- skins/generic/request_password_reset_form.py | 4 +- 6 files changed, 99 insertions(+), 42 deletions(-) diff --git a/locales/en/LC_MESSAGES/plinn.mo b/locales/en/LC_MESSAGES/plinn.mo index 4f25697537c04e0ce265ac24ab9bdc7874ca9f4a..575c3e6d5a7099661858798e50a246e254fd4ec9 100644 GIT binary patch delta 32 ncmeAa>J-|b&L$k5nxf!UnxkNBs9J-|b&L-@epQqqenxkN3sbFYgWoTw)XuR2q?K~3zlClV| diff --git a/locales/en/LC_MESSAGES/plinn.po b/locales/en/LC_MESSAGES/plinn.po index aa5bd56..af1cc7f 100644 --- a/locales/en/LC_MESSAGES/plinn.po +++ b/locales/en/LC_MESSAGES/plinn.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinn 2.0\n" -"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" +"POT-Creation-Date: Wed Jul 31 12:38:09 2013\n" "PO-Revision-Date: 2007-10-17 14:43+0200\n" "Last-Translator: Benoît PIN\n" "Language-Team: CRI http://cri.ensmp.fr\n" @@ -32,23 +32,23 @@ msgstr "" msgid "%s's front page" msgstr "" -#: n/RegistrationTool.py:217 -msgid "Invalid reset password request." +#: n/RegistrationTool.py:230 +msgid "Unknown user name. Please retry." msgstr "" -#: n/RegistrationTool.py:222 -msgid "Invalid userid." +#: n/RegistrationTool.py:245 +msgid "Invalid reset password request." msgstr "" -#: n/RegistrationTool.py:226 +#: n/RegistrationTool.py:251 msgid "Your reset password request has expired. You can ask a new one." msgstr "" -#: n/RegistrationTool.py:235 +#: n/RegistrationTool.py:260 msgid "Password successfully resetted." msgstr "" -#: n/RegistrationTool.py:237 +#: n/RegistrationTool.py:262 msgid "\"%s\" username not found." msgstr "" @@ -559,6 +559,7 @@ msgstr "" #: n/skins/custom_generic/talkback_tree.pt:82 #: n/skins/generic/gruf_macros.pt:77 n/skins/generic/gruf_macros.pt:410 #: n/skins/generic/header_widgets.pt:32 n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/password_reset_template.pt:39 #: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "" @@ -813,10 +814,12 @@ msgid "Given Name" msgstr "" #: n/skins/generic/gruf_macros.pt:268 n/skins/generic/gruf_macros.pt:390 +#: n/skins/generic/password_reset_template.pt:25 msgid "Password" msgstr "" #: n/skins/generic/gruf_macros.pt:274 n/skins/generic/gruf_macros.pt:396 +#: n/skins/generic/password_reset_template.pt:31 msgid "Confirm" msgstr "" @@ -992,6 +995,14 @@ msgstr "" msgid "Exit boxes editing" msgstr "" +#: n/skins/generic/password_reset_template.pt:13 +msgid "Password resetting" +msgstr "" + +#: n/skins/generic/password_reset_template.pt:18 +msgid "Please enter a new password and clic on \"Validate\" button." +msgstr "" + #: n/skins/generic/pending_members.pt:9 msgid "Review members registration" msgstr "" @@ -1057,24 +1068,28 @@ msgstr "" msgid "Send" msgstr "" -#: n/skins/generic/request_password_reset_form.pt:11 +#: n/skins/generic/request_password_reset_form.py:10 +msgid "Request for resetting password sent to your contact email." +msgstr "" + +#: n/skins/generic/request_password_reset_template.pt:11 msgid "Password reset" msgstr "" -#: n/skins/generic/request_password_reset_form.pt:12 +#: n/skins/generic/request_password_reset_template.pt:12 msgid "" "Enter your username below and click on the \"Send\" button. You will receive " "an email with a link to reset your password." msgstr "" -#: n/skins/generic/request_password_reset_form.pt:18 +#: n/skins/generic/request_password_reset_template.pt:18 msgid "" "If this will not work for you (for example, if you forget your username or " "didn't enter your email address) send email to ${admin_email}." msgstr "" #. Default: "Send" -#: n/skins/generic/request_password_reset_form.pt:25 +#: n/skins/generic/request_password_reset_template.pt:25 msgid " Send " msgstr "" diff --git a/locales/fr/LC_MESSAGES/plinn.mo b/locales/fr/LC_MESSAGES/plinn.mo index f791fe9bb47f0cb11a4a4bf4d9a8711a29f6f13c..c496a11501b322e3441655726ead48cdaa1362e0 100644 GIT binary patch delta 12772 zcmZwN33yG{-pBEsL1Yq1%n=+h#*j!5f(kW{H4in093SQsYp9xPzNN#hwn|${>;3-DUgy4j-sjy<|2}K2z4n^-PO81M$^Y$b{+_GRfy*tf zX8x8Hi;tr$%P+vPE>}^hWnE9Std)2JgK$zk%PNc0F&bB60`A0qco~~x!z9b9ig{QE zSE1@3!!mdgYgm@Yx=Vt8ta8bgRU12@`ksIxxCV>kW{ktPFcL3dD1MKscOQ%4->CZG z^(`v`V^I^UjYY6M7R9a@ME_PFZ^E($88b|U(Z*a1=7GuP{!Ejfj~d7_Q@+{cU&j)Z zA3zP@G^*q4$iiB;F$#acX!^GvlhBBZH?U_=3H4xIRL9Lw_uHVBzBg*-E)2s0ERC~J zTeKF#aU*J}ccY&B7*+oUY6b3~MIFw(+PX?Tl*hSyTrjQ4P7!4=16v z;5n>>vvDVGG3C8dEGv-wVAS)&QT=75u>LB@ryv@iLpA)8skjC;fLE~s?#5L70!w3X zBhC$0LhW%XY9M`36B~+J!4aq#yG?!qs@}9ltiNu|qo6V_F%|csI({ED^G{9wJZdX$ zp$7V!x$oE5o>2s9rsYs)qayM`Sc#~K4#l!K64m}R4+#xmA!?*6P)oQDbp{S%Mf?KQ z@EugczoHIP0L!80ilQ2fM738DOJa4@mNrEVU@&UtPArQaHwn#TE~>+2CchE2N4ro< zzYq0VUO)}xvC*%IeVT(%11O8yn(C&G?MDf6?6k9yQPh7_Rp}sF}TFB~T5QM=fbJ zRK*0;jGLhb&=SjGXVl7#Kn)-VtKke($J;O-cVQ{Kh-&X=)WrV6Ao{obp0eN5VAN7M zP#slA%_zy_TcAE1olr|W2z5B~P#sP;<#SO3UWb~{CRDvQP-kO5s{JGAQNb4^^uRgH z#IMo&!Qn&Bj|HnY>Vbav0uD#b{0?e>53xK3r`ZFkiZSGCqw2La_CO6}FlviNr?LK; z(NuF|5i0)*R>EDVB|C}g=n87UKcX7Cj~cjN3)>*njKfU6l*z}SCQ=o(wKY%!sMo?{ z&$JZTon_D+*9E_n-za4>hAzs0KEpmi}EVfd^6dzeII(4b{$fsCIucK1K~F z)YHiznsD?eLfy^~7LUphbHGp*{zY#Ui z?Z{Sntlf6P+J_qXQB*@GQG0tH^}uD+7TiSb@m+KOk;z-F?E0ao0T)MYMGZ{C`q&hm z$eU+vz*2huuabzP;6AG1GOhVuV`bEUx}yd%5cz>-rK9%#Wz@=TN3Fnq)QTL%06b&z z=THOx1~svJsKfgR1L)rhZet&YaMXvQIBFo(P-h|$)o>>)g8fk)4nZ|M3N@e!SPAE0 z5!{a2(%qf|;ll*orDYfcg*}MLlrVR6lDwu>M6!?4dv---nv{Y1ES6G5JTR2g-D` zJFJUZ+7#4^wMXwvk&mG@0M+hl)ERjdbtnr_XX6A0<4F$*?a2ky>vaV+vp-M`26eLY z#ZVo^VhGkm4KNwwu?6Y_l!g3cwx(hod>8e)-ojY?8`WR=&i3;j2Z>M$5>O4Nq6W|k z!?1@bAB;uFk3xNrT&Mv)j~d84R68qC?QBGC-A+?}0K>_DjMecgq#uv<*xU%~Vpk}O zYN#4&AoWlqPD3@^8nvWdQ5_6HEwvl9q!UmBn}%v<4(gCEK|Q}0wFMub_xJz9BvkPe ztb=EfUxY2cuJ+IK6ig#O5NqLDY=y^>s#e%D{AP^(u`2FGb#M_ipev}AyNw#?kEj9O z$5wj(ACb@lY29pFp&n?5;n)R>}B_DzsNCrAE3$=vv(I1ziX0j4he;um5O{lYT0JQ?2paysb zRqqaJV!w80|JC6W3UvA-d)OnZg<0g2Q6qi@)$s;Y13OS1??$c6JEr_NY6U*SV)!-c zi}<}Uq^I3aJT9laRZrG`6^V-!u$@+JFMF>KqdNBQZObbEZ&Ol9c1L}3$?;%l�Av*`xEL*=+9?M<<(GI)70d9qF%pDRQ;)_ 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 diff --git a/locales/fr/LC_MESSAGES/plinn.po b/locales/fr/LC_MESSAGES/plinn.po index e3576be..06f3233 100755 --- a/locales/fr/LC_MESSAGES/plinn.po +++ b/locales/fr/LC_MESSAGES/plinn.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: Plinn 2.0\n" -"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" -"PO-Revision-Date: 2013-07-29 15:16+0200\n" +"POT-Creation-Date: Wed Jul 31 12:38:09 2013\n" +"PO-Revision-Date: 2013-07-31 12:42+0200\n" "Last-Translator: Benoît PIN\n" "Language-Team: CRI http://cri.ensmp.fr\n" "Language: \n" @@ -32,23 +32,25 @@ msgstr "Accueil : %s" msgid "%s's front page" msgstr "Page d'accueil de %s" -#: n/RegistrationTool.py:217 +#: n/RegistrationTool.py:230 +msgid "Unknown user name. Please retry." +msgstr "Nom d'utilisateur inconnu. Veuillez réessayer." + +#: n/RegistrationTool.py:245 msgid "Invalid reset password request." msgstr "Demande de réinitialisation de mot de passe invalide." -#: n/RegistrationTool.py:222 -msgid "Invalid userid." -msgstr "Login invalide." - -#: n/RegistrationTool.py:226 +#: n/RegistrationTool.py:251 msgid "Your reset password request has expired. You can ask a new one." -msgstr "Votre demande de réinitialisation de mot de passe a expiré. Vous pouvez en demander une nouvelle." +msgstr "" +"Votre demande de réinitialisation de mot de passe a expiré. Vous pouvez en " +"demander une nouvelle." -#: n/RegistrationTool.py:235 +#: n/RegistrationTool.py:260 msgid "Password successfully resetted." msgstr "Mot de passe correctement réinitialisé." -#: n/RegistrationTool.py:237 +#: n/RegistrationTool.py:262 msgid "\"%s\" username not found." msgstr "Nom : « %s » non trouvé." @@ -575,6 +577,7 @@ msgstr "Corps" #: n/skins/custom_generic/talkback_tree.pt:82 #: n/skins/generic/gruf_macros.pt:77 n/skins/generic/gruf_macros.pt:410 #: n/skins/generic/header_widgets.pt:32 n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/password_reset_template.pt:39 #: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "Valider" @@ -847,10 +850,12 @@ msgid "Given Name" msgstr "Prénom" #: n/skins/generic/gruf_macros.pt:268 n/skins/generic/gruf_macros.pt:390 +#: n/skins/generic/password_reset_template.pt:25 msgid "Password" msgstr "Mot de passe" #: n/skins/generic/gruf_macros.pt:274 n/skins/generic/gruf_macros.pt:396 +#: n/skins/generic/password_reset_template.pt:31 msgid "Confirm" msgstr "Confirmation" @@ -1026,6 +1031,14 @@ msgstr "Coller" msgid "Exit boxes editing" msgstr "Quitter l'édition des boîtes" +#: n/skins/generic/password_reset_template.pt:13 +msgid "Password resetting" +msgstr "Réinitialisation du mot de passe" + +#: n/skins/generic/password_reset_template.pt:18 +msgid "Please enter a new password and clic on \"Validate\" button." +msgstr "Veuillez entrer un nouveau mot de passe puis cliquer sur le bouton « Valider »." + #: n/skins/generic/pending_members.pt:9 msgid "Review members registration" msgstr "Modérer l'inscription des membres" @@ -1093,24 +1106,33 @@ msgstr "" msgid "Send" msgstr "Envoyer" -#: n/skins/generic/request_password_reset_form.pt:11 +#: n/skins/generic/request_password_reset_form.py:10 +msgid "Request for resetting password sent to your contact email." +msgstr "Requête pour réinitialisation de mot de passe envoyée à votre adresse email de contact." + +#: n/skins/generic/request_password_reset_template.pt:11 msgid "Password reset" msgstr "Réinitialisation de mot de passe" -#: n/skins/generic/request_password_reset_form.pt:12 +#: n/skins/generic/request_password_reset_template.pt:12 msgid "" "Enter your username below and click on the \"Send\" button. You will receive " "an email with a link to reset your password." -msgstr "Entrez votre login ci-dessous et cliquez sur « Envoyer ». Vous recevrez un email contenant un lien pour réinitialiser votre mot de passe." +msgstr "" +"Entrez votre login ci-dessous et cliquez sur « Envoyer ». Vous recevrez un " +"email contenant un lien pour réinitialiser votre mot de passe." -#: n/skins/generic/request_password_reset_form.pt:18 +#: n/skins/generic/request_password_reset_template.pt:18 msgid "" "If this will not work for you (for example, if you forget your username or " "didn't enter your email address) send email to ${admin_email}." -msgstr "Si cela ne marche pas dans votre cas (par exemple si vous avez oublié votre login ou si vous n'aviez pas entré une adresse email), vous pouvez envoyer un email à ${admin_email}." +msgstr "" +"Si cela ne marche pas dans votre cas (par exemple si vous avez oublié votre " +"login ou si vous n'aviez pas entré une adresse email), vous pouvez envoyer " +"un email à ${admin_email}." #. Default: "Send" -#: n/skins/generic/request_password_reset_form.pt:25 +#: n/skins/generic/request_password_reset_template.pt:25 msgid " Send " msgstr " Envoyer " @@ -2171,6 +2193,9 @@ msgstr "Cc" msgid "mail_bcc" msgstr "Cci" +#~ msgid "Invalid userid." +#~ msgstr "Login invalide." + #~ msgid "List" #~ msgstr "Lister" diff --git a/locales/plinn.pot b/locales/plinn.pot index daff451..f8519ef 100644 --- a/locales/plinn.pot +++ b/locales/plinn.pot @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: 2.0 beta 1\n" -"POT-Creation-Date: Mon Jul 29 14:16:13 2013\n" +"POT-Creation-Date: Wed Jul 31 12:38:09 2013\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: Zope 3 Developers \n" @@ -39,23 +39,23 @@ msgstr "" msgid "%s's front page" msgstr "" -#: n/RegistrationTool.py:217 -msgid "Invalid reset password request." +#: n/RegistrationTool.py:230 +msgid "Unknown user name. Please retry." msgstr "" -#: n/RegistrationTool.py:222 -msgid "Invalid userid." +#: n/RegistrationTool.py:245 +msgid "Invalid reset password request." msgstr "" -#: n/RegistrationTool.py:226 +#: n/RegistrationTool.py:251 msgid "Your reset password request has expired. You can ask a new one." msgstr "" -#: n/RegistrationTool.py:235 +#: n/RegistrationTool.py:260 msgid "Password successfully resetted." msgstr "" -#: n/RegistrationTool.py:237 +#: n/RegistrationTool.py:262 msgid "\"%s\" username not found." msgstr "" @@ -566,6 +566,7 @@ msgstr "" #: n/skins/generic/gruf_macros.pt:410 #: n/skins/generic/header_widgets.pt:32 #: n/skins/generic/header_widgets.pt:173 +#: n/skins/generic/password_reset_template.pt:39 #: n/skins/generic/send_email_form.pt:79 msgid "Validate" msgstr "" @@ -829,11 +830,13 @@ msgstr "" #: n/skins/generic/gruf_macros.pt:268 #: n/skins/generic/gruf_macros.pt:390 +#: n/skins/generic/password_reset_template.pt:25 msgid "Password" msgstr "" #: n/skins/generic/gruf_macros.pt:274 #: n/skins/generic/gruf_macros.pt:396 +#: n/skins/generic/password_reset_template.pt:31 msgid "Confirm" msgstr "" @@ -1014,6 +1017,14 @@ msgstr "" msgid "Exit boxes editing" msgstr "" +#: n/skins/generic/password_reset_template.pt:13 +msgid "Password resetting" +msgstr "" + +#: n/skins/generic/password_reset_template.pt:18 +msgid "Please enter a new password and clic on \"Validate\" button." +msgstr "" + #: n/skins/generic/pending_members.pt:9 msgid "Review members registration" msgstr "" @@ -1078,19 +1089,23 @@ msgstr "" msgid "Send" msgstr "" -#: n/skins/generic/request_password_reset_form.pt:11 +#: n/skins/generic/request_password_reset_form.py:10 +msgid "Request for resetting password sent to your contact email." +msgstr "" + +#: n/skins/generic/request_password_reset_template.pt:11 msgid "Password reset" msgstr "" -#: n/skins/generic/request_password_reset_form.pt:12 +#: n/skins/generic/request_password_reset_template.pt:12 msgid "Enter your username below and click on the \"Send\" button. You will receive an email with a link to reset your password." msgstr "" -#: n/skins/generic/request_password_reset_form.pt:18 +#: n/skins/generic/request_password_reset_template.pt:18 msgid "If this will not work for you (for example, if you forget your username or didn't enter your email address) send email to ${admin_email}." msgstr "" -#: n/skins/generic/request_password_reset_form.pt:25 +#: n/skins/generic/request_password_reset_template.pt:25 #. Default: "Send" msgid " Send " msgstr "" diff --git a/skins/generic/request_password_reset_form.py b/skins/generic/request_password_reset_form.py index 1e9b57c..a08d980 100644 --- a/skins/generic/request_password_reset_form.py +++ b/skins/generic/request_password_reset_form.py @@ -1,6 +1,8 @@ ##parameters=userid='', requestReset='', ajax='' from Products.CMFCore.utils import getUtilityByInterfaceName -from Products.Plinn.utils import Message as _ +from Products.Plinn.utils import translate + +_ = lambda msg : translate(msg, context) utool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IURLTool') rtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IRegistrationTool') -- 2.20.1 From b74a186d8da401c587c4154c6008ff5bcf85e9cf Mon Sep 17 00:00:00 2001 From: =?utf8?q?Benoi=CC=82t=20Pin?= Date: Wed, 31 Jul 2013 16:12:57 +0200 Subject: [PATCH 16/16] =?utf8?q?On=20utilise=20la=20requ=C3=AAte=20globale?= =?utf8?q?=20pour=20traduire.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utils.py b/utils.py index 252af4e..7c5ceb7 100755 --- a/utils.py +++ b/utils.py @@ -28,6 +28,7 @@ from types import StringType from random import randrange from Acquisition import aq_base from quopri import encodestring +from zope.globalrequest import getRequest from AccessControl.PermissionRole import rolesForPermissionOn from AccessControl import ModuleSecurityInfo from AccessControl import getSecurityManager @@ -195,7 +196,7 @@ security.declarePublic('Message') Message = MessageFactory('plinn') security.declarePublic('translate') -def translate(message, context): +def translate(message, context=None): """ Translate i18n message. """ if isinstance(message, Exception): @@ -203,7 +204,11 @@ def translate(message, context): message = message[0] except (TypeError, IndexError): pass - return i18ntranslate(message, domain='plinn', context=context.REQUEST) + if not context : + request = getRequest() + else : + request = context.REQUEST + return i18ntranslate(message, domain='plinn', context=request) security.declarePublic('desacc') desacc = Utf8Utils.desacc -- 2.20.1