]> CRI, Mines Paris - PSL - Portfolio.git/commitdiff
Affichage de la date / heure de capture dans les métadonnées présentées.
authorBenoît Pin <benoit.pin@gmail.com>
Sun, 29 Jun 2014 05:57:50 +0000 (07:57 +0200)
committerBenoît Pin <benoit.pin@gmail.com>
Sun, 29 Jun 2014 05:57:50 +0000 (07:57 +0200)
Refactoring pour que la version ajax utilise la même macro que la version standard.

compile-i18n.sh [new file with mode: 0755]
locales/en/LC_MESSAGES/portfolio.po [new file with mode: 0644]
locales/fr/LC_MESSAGES/portfolio.mo
locales/fr/LC_MESSAGES/portfolio.po
locales/portfolio-manual.pot
locales/portfolio.pot
skins/photo_view.pt
skins/photo_view_ajax.py
skins/photo_view_ajax_template.pt
update-i18n.sh [new file with mode: 0755]

diff --git a/compile-i18n.sh b/compile-i18n.sh
new file mode 100755 (executable)
index 0000000..6d8b420
--- /dev/null
@@ -0,0 +1,4 @@
+#! /bin/sh
+
+msgfmt -o locales/fr/LC_MESSAGES/portfolio.mo locales/fr/LC_MESSAGES/portfolio.po
+msgfmt -o locales/en/LC_MESSAGES/portfolio.mo locales/en/LC_MESSAGES/portfolio.po
diff --git a/locales/en/LC_MESSAGES/portfolio.po b/locales/en/LC_MESSAGES/portfolio.po
new file mode 100644 (file)
index 0000000..a7e0595
--- /dev/null
@@ -0,0 +1,387 @@
+#: o/ImageManipulationTool.py:40
+msgid "Processor"
+msgstr ""
+
+#: o/ImageManipulationTool.py:56
+msgid "Process started."
+msgstr ""
+
+#: o/ImageManipulationTool.py:64
+msgid "Process stopped."
+msgstr ""
+
+#: o/skins/add_to_cart.py:20 o/skins/my_cart.py:73
+msgid "You must enter an integer for quantity (found: %s)"
+msgstr ""
+
+#: o/skins/add_to_cart.py:23 o/skins/my_cart.py:75
+msgid "You must enter a positive value for quantity (found: %s)"
+msgstr ""
+
+#: o/skins/add_to_cart.py:49 o/skins/my_cart.py:85
+msgid "Only %d available copies of this photo in this size."
+msgstr ""
+
+#: o/skins/add_to_cart.py:51 o/skins/my_cart.py:87
+msgid "Only one last available copy of this photo in this size."
+msgstr ""
+
+#: o/skins/add_to_cart.py:53
+msgid "No more available copy of this photo in this size."
+msgstr ""
+
+#: o/skins/add_to_cart.py:62
+msgid ""
+"Your cart is locked:\n"
+"please complete your current order first."
+msgstr ""
+
+#: o/skins/add_to_cart.py:72 o/skins/add_to_cart.py:74
+msgid "Added to cart."
+msgstr ""
+
+#: o/skins/add_to_selection.py:37
+msgid "%s added to selection."
+msgstr ""
+
+#: o/skins/add_to_selection.py:39
+msgid "This %s is already in the selection."
+msgstr ""
+
+#: o/skins/get_slide_buyable_items.pt:21 o/skins/photo_layout_macros.pt:47
+#: o/skins/photo_layout_macros.pt:49 o/skins/photo_view.pt:91
+#: o/skins/photo_view.pt:94
+msgid "Add to cart"
+msgstr ""
+
+#: o/skins/get_slide_buyable_items.pt:27
+msgid "quantity:"
+msgstr ""
+
+#: o/skins/get_slide_buyable_items.pt:34
+msgid "Cancel"
+msgstr ""
+
+#: o/skins/lightbox_save_control.py:10
+msgid "No photo selected."
+msgstr ""
+
+#: o/skins/lightbox_save_control.py:21
+msgid "You must enter a title."
+msgstr ""
+
+#: o/skins/lightbox_save_control.py:27
+msgid "Lightbox created."
+msgstr ""
+
+#. Default: ""
+#: o/skins/lightbox_view_template.pt:19
+msgid "lightbox_selected_explanations"
+msgstr ""
+
+#: o/skins/lightbox_view_template.pt:22 o/skins/selection_view_template.pt:20
+msgid "${DYNAMIC_CONTENT}"
+msgstr ""
+
+#: o/skins/metadata_edit_form_macros.pt:258
+msgid "Save"
+msgstr ""
+
+#: o/skins/my_cart.py:58
+msgid "Order >>"
+msgstr ""
+
+#: o/skins/my_cart.py:60
+msgid "Shipping >>"
+msgstr ""
+
+#: o/skins/my_cart.py:89
+msgid "No more available copy of this photo and in this size."
+msgstr ""
+
+#: o/skins/my_cart.py:138 o/skins/my_cart_template.pt:113
+msgid "My cart"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:26
+msgid "Image"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:27
+msgid "Printing format and type"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:28
+msgid "Quantity"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:29
+msgid "Amount (incl tax)"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:53
+msgid "refresh amount"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:59
+msgid "delete"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:69
+msgid "Prints"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:70
+msgid "Total"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:80 o/skins/sell_macros.pt:16
+msgid "Shipping"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:85
+msgid "VAT"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:90
+msgid "Total amount to pay"
+msgstr ""
+
+#: o/skins/my_cart_template.pt:114
+msgid "Your cart is currently empty."
+msgstr ""
+
+#: o/skins/photo_info.pt:9
+msgid "Preview:"
+msgstr ""
+
+#: o/skins/photo_info.pt:18 o/skins/save_as_lightbox_template.pt:15
+msgid "Title"
+msgstr ""
+
+#: o/skins/photo_info.pt:22
+msgid "Type"
+msgstr ""
+
+#: o/skins/photo_info.pt:26
+msgid "Created"
+msgstr ""
+
+#: o/skins/photo_info.pt:30
+msgid "Modified"
+msgstr ""
+
+#: o/skins/photo_info.pt:34
+msgid "Dimensions"
+msgstr ""
+
+#: o/skins/photo_layout_macros.pt:32 o/skins/photo_layout_macros.pt:34
+msgid "Add to selection"
+msgstr ""
+
+#: o/skins/photo_layout_macros.pt:39 o/skins/photo_layout_macros.pt:41
+msgid "Remove to selection"
+msgstr ""
+
+#: o/skins/photo_layout_macros.pt:54 o/skins/photo_layout_macros.pt:56
+#: o/skins/portfolio_presentation_template.pt:47
+msgid "Delete"
+msgstr ""
+
+#: o/skins/photo_layout_macros.pt:65 o/skins/photo_layout_macros.pt:68
+msgid "Hide for anonymous"
+msgstr ""
+
+#: o/skins/photo_layout_macros.pt:76 o/skins/photo_layout_macros.pt:79
+msgid "Show for anonymous"
+msgstr ""
+
+#: o/skins/photo_medium.pt:37 o/skins/photo_medium.pt:38
+msgid "previous"
+msgstr ""
+
+#: o/skins/photo_medium.pt:44 o/skins/photo_medium.pt:45
+msgid "next"
+msgstr ""
+
+#: o/skins/photo_medium.pt:52
+msgid "zoom in"
+msgstr ""
+
+#: o/skins/photo_medium.pt:52
+msgid "zoom out"
+msgstr ""
+
+#: o/skins/photo_view.pt:31
+msgid "Empty image: upload an image file in \"Edit\" tab."
+msgstr ""
+
+#: o/skins/photo_view.pt:46 o/skins/photo_view.pt:49
+msgid "Previous"
+msgstr ""
+
+#: o/skins/photo_view.pt:52 o/skins/photo_view.pt:55
+msgid "Next"
+msgstr ""
+
+#: o/skins/photo_view.pt:58
+msgid "slide show"
+msgstr ""
+
+#: o/skins/photo_view.pt:69 o/skins/photo_view.pt:72
+msgid "Back to portfolio..."
+msgstr ""
+
+#: o/skins/photo_view.pt:75 o/skins/photo_view.pt:77
+msgid "Full screen (f)"
+msgstr ""
+
+#: o/skins/photo_view.pt:99 o/skins/photo_view.pt:104
+msgid "Edit metadata"
+msgstr ""
+
+#: o/skins/photo_view.pt:116 o/skins/photo_view_ajax_template.pt:18
+msgid "Keywords"
+msgstr ""
+
+#: o/skins/photo_view.pt:123 o/skins/photo_view_ajax_template.pt:26
+msgid "reference:"
+msgstr ""
+
+#: o/skins/photo_view.pt:129 o/skins/photo_view_ajax_template.pt:33
+msgid "download picture"
+msgstr ""
+
+#: o/skins/portfolio_presentation_template.pt:22
+msgid "Delete presentation"
+msgstr ""
+
+#: o/skins/save_as_lightbox_template.pt:12
+msgid "Save current selection as lightbox"
+msgstr ""
+
+#: o/skins/save_as_lightbox_template.pt:21
+msgid "Description"
+msgstr ""
+
+#: o/skins/selection_view.py:64 o/skins/selection_view.py:66
+#: o/skins/selection_view_template.pt:18 o/skins/selectioncontext.py:115
+#: o/skins/selectioncontext.py:117
+msgid "My selection"
+msgstr ""
+
+#: o/skins/selection_view_template.pt:23
+msgid "You are editing this ligthbox:"
+msgstr ""
+
+#: o/skins/selection_view_template.pt:30
+msgid "Save as..."
+msgstr ""
+
+#: o/skins/selection_view_template.pt:33
+msgid "${please_login} if you want to save this selection."
+msgstr ""
+
+#. Default: "Please log in"
+#: o/skins/selection_view_template.pt:34
+msgid "login_to_save_seletion"
+msgstr ""
+
+#: o/skins/selection_view_template.pt:38
+msgid "Empty selection."
+msgstr ""
+
+#: o/skins/sell_macros.pt:14
+msgid "Cart"
+msgstr ""
+
+#: o/skins/sell_macros.pt:15
+msgid "Authentication"
+msgstr ""
+
+#: o/skins/sell_macros.pt:17
+msgid "Payment"
+msgstr ""
+
+#: o/skins/sell_macros.pt:18
+msgid "Confirmation"
+msgstr ""
+
+#: o/skins/shipping_set_control.py:8
+msgid "Please enter a name."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:9
+msgid "Please enter an address."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:10
+msgid "Please enter a city."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:11
+msgid "Please enter zip code."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:12
+msgid "Please enter a country."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:27
+msgid "No cart found. Your session may have expired."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:30
+msgid "Shipping informations saved."
+msgstr ""
+
+#: o/skins/shipping_template.pt:14
+msgid "Please set shipping informations"
+msgstr ""
+
+#: o/skins/shipping_template.pt:19 o/skins/shipping_template.pt:60
+msgid "Validate >>"
+msgstr ""
+
+#: o/skins/shipping_template.pt:23
+msgid "Fullname"
+msgstr ""
+
+#: o/skins/shipping_template.pt:29
+msgid "Address"
+msgstr ""
+
+#: o/skins/shipping_template.pt:36
+msgid "City"
+msgstr ""
+
+#: o/skins/shipping_template.pt:42
+msgid "Zip code"
+msgstr ""
+
+#: o/skins/shipping_template.pt:48
+msgid "Country"
+msgstr ""
+
+#: o/skins/zoom_view.pt:32
+msgid "back"
+msgstr ""
+
+# from portfolio-manual
+msgid "not saved yet"
+msgstr ""
+
+msgid "Load in my selection"
+msgstr ""
+
+msgid "Unload from my selection"
+msgstr ""
+
+msgid "My albums"
+msgstr ""
+
+msgid "You don't have any album yet."
+msgstr ""
+
+msgid "%m/%d/%Y %H:%M:%S"
+msgstr ""
index 29bd5ce11273edeaad0c675a01f657092a3212a8..2be79ddaff8dd37008e69c7e5f77947291132481 100644 (file)
Binary files a/locales/fr/LC_MESSAGES/portfolio.mo and b/locales/fr/LC_MESSAGES/portfolio.mo differ
index 35147bf519912e537adb20263dc2581f71cd0f57..a1e9fa2bcfa2e2bd08d2728133939852c611ef04 100644 (file)
@@ -1,10 +1,11 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Plinn 2.0\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: Plinn 2.0\n"
-"POT-Creation-Date: $Date: Mon Sep  7 10:25:46 2009 $\n"
-"PO-Revision-Date: 2009-09-07 10:27+0200\n"
+"POT-Creation-Date: Sun Jun 29 07:16:48 2014\n"
+"PO-Revision-Date: 2014-06-29 07:19+0200\n"
 "Last-Translator:  Benoît PIN\n"
 "Language-Team: CRI http://cri.ensmp.fr\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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -15,39 +16,39 @@ msgstr ""
 "Domain: plinn\n"
 "X-Is-Fallback-For: fr-fr, fr-be fr-ca fr-lu fr-mc fr-ch\n"
 
 "Domain: plinn\n"
 "X-Is-Fallback-For: fr-fr, fr-be fr-ca fr-lu fr-mc fr-ch\n"
 
-#: ImageManipulationTool.py:42
+#: o/ImageManipulationTool.py:40
 msgid "Processor"
 msgstr "Processeur"
 
 msgid "Processor"
 msgstr "Processeur"
 
-#: ImageManipulationTool.py:58
+#: o/ImageManipulationTool.py:56
 msgid "Process started."
 msgstr "Processus démarré"
 
 msgid "Process started."
 msgstr "Processus démarré"
 
-#: ImageManipulationTool.py:66
+#: o/ImageManipulationTool.py:64
 msgid "Process stopped."
 msgstr "Processus arrêté"
 
 msgid "Process stopped."
 msgstr "Processus arrêté"
 
-#: skins/add_to_cart.py:14 skins/my_cart.py:73
+#: o/skins/add_to_cart.py:20 o/skins/my_cart.py:73
 msgid "You must enter an integer for quantity (found: %s)"
 msgstr "Vous devez entrer un nombre entier pour la quantité (trouvé : %s)"
 
 msgid "You must enter an integer for quantity (found: %s)"
 msgstr "Vous devez entrer un nombre entier pour la quantité (trouvé : %s)"
 
-#: skins/add_to_cart.py:17 skins/my_cart.py:75
+#: o/skins/add_to_cart.py:23 o/skins/my_cart.py:75
 msgid "You must enter a positive value for quantity (found: %s)"
 msgstr "Vous devez entrer un nombre positif pour la quantité (trouvé : %s)"
 
 msgid "You must enter a positive value for quantity (found: %s)"
 msgstr "Vous devez entrer un nombre positif pour la quantité (trouvé : %s)"
 
-#: skins/add_to_cart.py:39 skins/my_cart.py:85
+#: o/skins/add_to_cart.py:49 o/skins/my_cart.py:85
 msgid "Only %d available copies of this photo in this size."
 msgstr "Seulement %s tirages encore disponibles pour cette photo à ce format."
 
 msgid "Only %d available copies of this photo in this size."
 msgstr "Seulement %s tirages encore disponibles pour cette photo à ce format."
 
-#: skins/add_to_cart.py:41 skins/my_cart.py:87
+#: o/skins/add_to_cart.py:51 o/skins/my_cart.py:87
 msgid "Only one last available copy of this photo in this size."
 msgstr "Plus qu'un dernier tirage disponible pour cette photo à ce format."
 
 msgid "Only one last available copy of this photo in this size."
 msgstr "Plus qu'un dernier tirage disponible pour cette photo à ce format."
 
-#: skins/add_to_cart.py:43
+#: o/skins/add_to_cart.py:53
 msgid "No more available copy of this photo in this size."
 msgstr "Plus aucun tirage disponible pour cette photo à ce format."
 
 msgid "No more available copy of this photo in this size."
 msgstr "Plus aucun tirage disponible pour cette photo à ce format."
 
-#: skins/add_to_cart.py:48
+#: o/skins/add_to_cart.py:62
 msgid ""
 "Your cart is locked:\n"
 "please complete your current order first."
 msgid ""
 "Your cart is locked:\n"
 "please complete your current order first."
@@ -56,348 +57,340 @@ msgstr ""
 "veuillez d'abord solder votre commande."
 
 # from portfolio-manual
 "veuillez d'abord solder votre commande."
 
 # from portfolio-manual
-#: skins/add_to_cart.py:54
+#: o/skins/add_to_cart.py:72 o/skins/add_to_cart.py:74
 msgid "Added to cart."
 msgstr "Ajouté au panier."
 
 # from portfolio-manual
 msgid "Added to cart."
 msgstr "Ajouté au panier."
 
 # from portfolio-manual
-#: skins/add_to_selection.py:37
+#: o/skins/add_to_selection.py:37
 msgid "%s added to selection."
 msgstr "%s ajoutée à la sélection."
 
 msgid "%s added to selection."
 msgstr "%s ajoutée à la sélection."
 
-#: skins/add_to_selection.py:39
+#: o/skins/add_to_selection.py:39
 msgid "This %s is already in the selection."
 msgstr "Cette %s est déjà dans la sélection."
 
 # from portfolio-manual
 msgid "This %s is already in the selection."
 msgstr "Cette %s est déjà dans la sélection."
 
 # from portfolio-manual
-#: skins/get_slide_buyable_items.pt:21 skins/photo_layout_macros.pt:43
-#: skins/photo_layout_macros.pt:45 skins/photo_view.pt:91
-#: skins/photo_view.pt:94
+#: o/skins/get_slide_buyable_items.pt:21 o/skins/photo_layout_macros.pt:47
+#: o/skins/photo_layout_macros.pt:49 o/skins/photo_view.pt:91
+#: o/skins/photo_view.pt:94
 msgid "Add to cart"
 msgstr "Ajouter au panier"
 
 msgid "Add to cart"
 msgstr "Ajouter au panier"
 
-#: skins/get_slide_buyable_items.pt:27
+#: o/skins/get_slide_buyable_items.pt:27
 msgid "quantity:"
 msgstr "quantité :"
 
 msgid "quantity:"
 msgstr "quantité :"
 
-#: skins/get_slide_buyable_items.pt:34
+#: o/skins/get_slide_buyable_items.pt:34
 msgid "Cancel"
 msgstr "Annuler"
 
 msgid "Cancel"
 msgstr "Annuler"
 
-#: skins/lightbox_save_control.py:10
+#: o/skins/lightbox_save_control.py:10
 msgid "No photo selected."
 msgstr "Aucune photo sélectionnée."
 
 msgid "No photo selected."
 msgstr "Aucune photo sélectionnée."
 
-#: skins/lightbox_save_control.py:21
+#: o/skins/lightbox_save_control.py:21
 msgid "You must enter a title."
 msgstr "Vous devez entrer un titre."
 
 msgid "You must enter a title."
 msgstr "Vous devez entrer un titre."
 
-#: skins/lightbox_save_control.py:27
+#: o/skins/lightbox_save_control.py:27
 msgid "Lightbox created."
 msgstr "Table lumineuse créée."
 
 #. Default: ""
 msgid "Lightbox created."
 msgstr "Table lumineuse créée."
 
 #. Default: ""
-#: skins/lightbox_view_template.pt:19
+#: o/skins/lightbox_view_template.pt:19
 msgid "lightbox_selected_explanations"
 msgstr ""
 "Cette table lumineuse est sélectionnée : les images que vous sélectionnerez "
 "à présent seront automatiquement sauvegardées à cet endroit."
 
 msgid "lightbox_selected_explanations"
 msgstr ""
 "Cette table lumineuse est sélectionnée : les images que vous sélectionnerez "
 "à présent seront automatiquement sauvegardées à cet endroit."
 
-#: skins/lightbox_view_template.pt:22 skins/selection_view_template.pt:20
+#: o/skins/lightbox_view_template.pt:22 o/skins/selection_view_template.pt:20
 msgid "${DYNAMIC_CONTENT}"
 msgstr ""
 
 msgid "${DYNAMIC_CONTENT}"
 msgstr ""
 
-#: skins/metadata_edit_form_macros.pt:258
+#: o/skins/metadata_edit_form_macros.pt:258
 msgid "Save"
 msgstr "Enregistrer"
 
 msgid "Save"
 msgstr "Enregistrer"
 
-#: skins/my_cart.py:138 skins/my_cart_template.pt:113
-msgid "My cart"
-msgstr "Mon panier"
-
-#: skins/my_cart.py:58
+#: o/skins/my_cart.py:58
 msgid "Order >>"
 msgstr "Commander >>"
 
 msgid "Order >>"
 msgstr "Commander >>"
 
-#: skins/my_cart.py:60
+#: o/skins/my_cart.py:60
 msgid "Shipping >>"
 msgstr "Livraison >>"
 
 msgid "Shipping >>"
 msgstr "Livraison >>"
 
-#: skins/my_cart.py:89
+#: o/skins/my_cart.py:89
 msgid "No more available copy of this photo and in this size."
 msgstr "Plus aucun tirage disponible pour cette photo à ce format."
 
 msgid "No more available copy of this photo and in this size."
 msgstr "Plus aucun tirage disponible pour cette photo à ce format."
 
-#: skins/my_cart_template.pt:114
-msgid "Your cart is currently empty."
-msgstr "Votre panier est actuellement vide."
+#: o/skins/my_cart.py:138 o/skins/my_cart_template.pt:113
+msgid "My cart"
+msgstr "Mon panier"
 
 
-#: skins/my_cart_template.pt:26
+#: o/skins/my_cart_template.pt:26
 msgid "Image"
 msgstr "Image"
 
 msgid "Image"
 msgstr "Image"
 
-#: skins/my_cart_template.pt:27
+#: o/skins/my_cart_template.pt:27
 msgid "Printing format and type"
 msgstr "Format d'impression et type de support"
 
 msgid "Printing format and type"
 msgstr "Format d'impression et type de support"
 
-#: skins/my_cart_template.pt:28
+#: o/skins/my_cart_template.pt:28
 msgid "Quantity"
 msgstr "Quantité"
 
 msgid "Quantity"
 msgstr "Quantité"
 
-#: skins/my_cart_template.pt:29
+#: o/skins/my_cart_template.pt:29
 msgid "Amount (incl tax)"
 msgstr "Prix (TTC)"
 
 msgid "Amount (incl tax)"
 msgstr "Prix (TTC)"
 
-#: skins/my_cart_template.pt:53
+#: o/skins/my_cart_template.pt:53
 msgid "refresh amount"
 msgstr "actualiser le montant"
 
 msgid "refresh amount"
 msgstr "actualiser le montant"
 
-#: skins/my_cart_template.pt:59
+#: o/skins/my_cart_template.pt:59
 msgid "delete"
 msgstr "supprimer"
 
 msgid "delete"
 msgstr "supprimer"
 
-#: skins/my_cart_template.pt:69
+#: o/skins/my_cart_template.pt:69
 msgid "Prints"
 msgstr "Tirages"
 
 msgid "Prints"
 msgstr "Tirages"
 
-#: skins/my_cart_template.pt:70
+#: o/skins/my_cart_template.pt:70
 msgid "Total"
 msgstr "Total"
 
 msgid "Total"
 msgstr "Total"
 
-#: skins/my_cart_template.pt:80 skins/sell_macros.pt:16
+#: o/skins/my_cart_template.pt:80 o/skins/sell_macros.pt:16
 msgid "Shipping"
 msgstr "Livraison"
 
 msgid "Shipping"
 msgstr "Livraison"
 
-#: skins/my_cart_template.pt:85
+#: o/skins/my_cart_template.pt:85
 msgid "VAT"
 msgstr "TVA"
 
 msgid "VAT"
 msgstr "TVA"
 
-#: skins/my_cart_template.pt:90
+#: o/skins/my_cart_template.pt:90
 msgid "Total amount to pay"
 msgstr "Montant total à payer"
 
 msgid "Total amount to pay"
 msgstr "Montant total à payer"
 
-#: skins/photo_info.pt:18 skins/save_as_lightbox_template.pt:15
+#: o/skins/my_cart_template.pt:114
+msgid "Your cart is currently empty."
+msgstr "Votre panier est actuellement vide."
+
+#: o/skins/photo_info.pt:9
+msgid "Preview:"
+msgstr "Aperçu :"
+
+#: o/skins/photo_info.pt:18 o/skins/save_as_lightbox_template.pt:15
 msgid "Title"
 msgstr "Titre"
 
 msgid "Title"
 msgstr "Titre"
 
-#: skins/photo_info.pt:22
+#: o/skins/photo_info.pt:22
 msgid "Type"
 msgstr "Type"
 
 msgid "Type"
 msgstr "Type"
 
-#: skins/photo_info.pt:26
+#: o/skins/photo_info.pt:26
 msgid "Created"
 msgstr "Créé"
 
 msgid "Created"
 msgstr "Créé"
 
-#: skins/photo_info.pt:30
+#: o/skins/photo_info.pt:30
 msgid "Modified"
 msgstr "Modifié"
 
 msgid "Modified"
 msgstr "Modifié"
 
-#: skins/photo_info.pt:34
+#: o/skins/photo_info.pt:34
 msgid "Dimensions"
 msgstr "Dimensions"
 
 msgid "Dimensions"
 msgstr "Dimensions"
 
-#: skins/photo_info.pt:9
-msgid "Preview:"
-msgstr "Aperçu :"
-
 # from portfolio-manual
 # from portfolio-manual
-#: skins/photo_layout_macros.pt:28 skins/photo_layout_macros.pt:30
+#: o/skins/photo_layout_macros.pt:32 o/skins/photo_layout_macros.pt:34
 msgid "Add to selection"
 msgstr "Ajouter à la sélection"
 
 # from portfolio-manual
 msgid "Add to selection"
 msgstr "Ajouter à la sélection"
 
 # from portfolio-manual
-#: skins/photo_layout_macros.pt:35 skins/photo_layout_macros.pt:37
+#: o/skins/photo_layout_macros.pt:39 o/skins/photo_layout_macros.pt:41
 msgid "Remove to selection"
 msgstr "Retirer de la sélection"
 
 msgid "Remove to selection"
 msgstr "Retirer de la sélection"
 
-#: skins/photo_layout_macros.pt:50 skins/photo_layout_macros.pt:52
-#: skins/portfolio_presentation_template.pt:47
+#: o/skins/photo_layout_macros.pt:54 o/skins/photo_layout_macros.pt:56
+#: o/skins/portfolio_presentation_template.pt:47
 msgid "Delete"
 msgstr "Supprimer"
 
 msgid "Delete"
 msgstr "Supprimer"
 
-#: skins/photo_layout_macros.pt:61 skins/photo_layout_macros.pt:64
+#: o/skins/photo_layout_macros.pt:65 o/skins/photo_layout_macros.pt:68
 msgid "Hide for anonymous"
 msgstr "Masquer pour les anonymes"
 
 msgid "Hide for anonymous"
 msgstr "Masquer pour les anonymes"
 
-#: skins/photo_layout_macros.pt:72 skins/photo_layout_macros.pt:75
+#: o/skins/photo_layout_macros.pt:76 o/skins/photo_layout_macros.pt:79
 msgid "Show for anonymous"
 msgstr "Montrer aux anonymes"
 
 msgid "Show for anonymous"
 msgstr "Montrer aux anonymes"
 
-#: skins/photo_medium.pt:37 skins/photo_medium.pt:38
+#: o/skins/photo_medium.pt:37 o/skins/photo_medium.pt:38
 msgid "previous"
 msgstr "précédente"
 
 msgid "previous"
 msgstr "précédente"
 
-#: skins/photo_medium.pt:44 skins/photo_medium.pt:45
+#: o/skins/photo_medium.pt:44 o/skins/photo_medium.pt:45
 msgid "next"
 msgstr "suivante"
 
 msgid "next"
 msgstr "suivante"
 
-#: skins/photo_medium.pt:52
+#: o/skins/photo_medium.pt:52
 msgid "zoom in"
 msgstr "zoom avant"
 
 msgid "zoom in"
 msgstr "zoom avant"
 
-#: skins/photo_medium.pt:52
+#: o/skins/photo_medium.pt:52
 msgid "zoom out"
 msgstr "zoom arrière"
 
 msgid "zoom out"
 msgstr "zoom arrière"
 
-#: skins/photo_view.pt:115 skins/photo_view_ajax_template.pt:18
-msgid "Keywords"
-msgstr "Mots-clefs"
-
-#: skins/photo_view.pt:122 skins/photo_view_ajax_template.pt:26
-msgid "reference:"
-msgstr "référence :"
-
-#: skins/photo_view.pt:127 skins/photo_view_ajax_template.pt:33
-msgid "download picture"
-msgstr "télécharger l'image"
-
-#: skins/photo_view.pt:29
+#: o/skins/photo_view.pt:31
 msgid "Empty image: upload an image file in \"Edit\" tab."
 msgstr "Image vide : envoyer un fichier d'image dans l'onglet « Modifier »."
 
 msgid "Empty image: upload an image file in \"Edit\" tab."
 msgstr "Image vide : envoyer un fichier d'image dans l'onglet « Modifier »."
 
-#: skins/photo_view.pt:44 skins/photo_view.pt:47
+#: o/skins/photo_view.pt:46 o/skins/photo_view.pt:49
 msgid "Previous"
 msgstr "Précédente"
 
 msgid "Previous"
 msgstr "Précédente"
 
-#: skins/photo_view.pt:50 skins/photo_view.pt:53
+#: o/skins/photo_view.pt:52 o/skins/photo_view.pt:55
 msgid "Next"
 msgstr "Suivante"
 
 msgid "Next"
 msgstr "Suivante"
 
-#: skins/photo_view.pt:69 skins/photo_view.pt:72
+#: o/skins/photo_view.pt:58
+msgid "slide show"
+msgstr "diaporama"
+
+#: o/skins/photo_view.pt:69 o/skins/photo_view.pt:72
 msgid "Back to portfolio..."
 msgstr "Retour à la collection"
 
 msgid "Back to portfolio..."
 msgstr "Retour à la collection"
 
-#: skins/photo_view.pt:75 skins/photo_view.pt:77
+#: o/skins/photo_view.pt:75 o/skins/photo_view.pt:77
 msgid "Full screen (f)"
 msgstr "Plein écran (f)"
 
 msgid "Full screen (f)"
 msgstr "Plein écran (f)"
 
-#: skins/photo_view.pt:99 skins/photo_view.pt:104
+#: o/skins/photo_view.pt:99 o/skins/photo_view.pt:104
 msgid "Edit metadata"
 msgstr "Modifier les métadonnées"
 
 msgid "Edit metadata"
 msgstr "Modifier les métadonnées"
 
-#: skins/portfolio_edit_template.pt:36
-msgid "If a file already exists"
-msgstr "Si un fichier existe déjà"
+#: o/skins/photo_view.pt:116 o/skins/photo_view_ajax_template.pt:18
+msgid "Keywords"
+msgstr "Mots-clefs"
 
 
-#: skins/portfolio_edit_template.pt:39
-msgid "overwrite"
-msgstr "écraser"
+#: o/skins/photo_view.pt:123 o/skins/photo_view_ajax_template.pt:26
+msgid "reference:"
+msgstr "référence :"
 
 
-#: skins/portfolio_edit_template.pt:44
-msgid "rename"
-msgstr "renommer"
+#: o/skins/photo_view.pt:129 o/skins/photo_view_ajax_template.pt:33
+msgid "download picture"
+msgstr "télécharger l'image"
 
 
-#: skins/portfolio_presentation_template.pt:22
+#: o/skins/portfolio_presentation_template.pt:22
 msgid "Delete presentation"
 msgstr "Supprimer la présentation"
 
 msgid "Delete presentation"
 msgstr "Supprimer la présentation"
 
-#: skins/save_as_lightbox_template.pt:12
+#: o/skins/save_as_lightbox_template.pt:12
 msgid "Save current selection as lightbox"
 msgstr "Enregistrer la sélection dans une table lumineuse"
 
 msgid "Save current selection as lightbox"
 msgstr "Enregistrer la sélection dans une table lumineuse"
 
-#: skins/save_as_lightbox_template.pt:21
+#: o/skins/save_as_lightbox_template.pt:21
 msgid "Description"
 msgstr "Description"
 
 msgid "Description"
 msgstr "Description"
 
-#: skins/selection_view.py:64 skins/selection_view.py:66
-#: skins/selectioncontext.py:114 skins/selectioncontext.py:116
-#: skins/selection_view_template.pt:18
+#: o/skins/selection_view.py:64 o/skins/selection_view.py:66
+#: o/skins/selection_view_template.pt:18 o/skins/selectioncontext.py:115
+#: o/skins/selectioncontext.py:117
 msgid "My selection"
 msgstr "Ma sélection"
 
 msgid "My selection"
 msgstr "Ma sélection"
 
-#: skins/selection_view_template.pt:23
+#: o/skins/selection_view_template.pt:23
 msgid "You are editing this ligthbox:"
 msgstr "Vous éditez cette table lumineuse :"
 
 msgid "You are editing this ligthbox:"
 msgstr "Vous éditez cette table lumineuse :"
 
-#: skins/selection_view_template.pt:30
+#: o/skins/selection_view_template.pt:30
 msgid "Save as..."
 msgstr "Enregistrer sous..."
 
 msgid "Save as..."
 msgstr "Enregistrer sous..."
 
-#: skins/selection_view_template.pt:33
+#: o/skins/selection_view_template.pt:33
 msgid "${please_login} if you want to save this selection."
 msgstr "Si vous souhaiter enregistrer cette sélection, ${please_login}"
 
 #. Default: "Please log in"
 msgid "${please_login} if you want to save this selection."
 msgstr "Si vous souhaiter enregistrer cette sélection, ${please_login}"
 
 #. Default: "Please log in"
-#: skins/selection_view_template.pt:34
+#: o/skins/selection_view_template.pt:34
 msgid "login_to_save_seletion"
 msgstr "veuillez vous connecter."
 
 msgid "login_to_save_seletion"
 msgstr "veuillez vous connecter."
 
-#: skins/selection_view_template.pt:38
+#: o/skins/selection_view_template.pt:38
 msgid "Empty selection."
 msgstr "Sélection vide."
 
 msgid "Empty selection."
 msgstr "Sélection vide."
 
-#: skins/sell_macros.pt:14
+#: o/skins/sell_macros.pt:14
 msgid "Cart"
 msgstr "Panier"
 
 msgid "Cart"
 msgstr "Panier"
 
-#: skins/sell_macros.pt:15
+#: o/skins/sell_macros.pt:15
 msgid "Authentication"
 msgstr "Identification"
 
 msgid "Authentication"
 msgstr "Identification"
 
-#: skins/sell_macros.pt:17
+#: o/skins/sell_macros.pt:17
 msgid "Payment"
 msgstr "Paiement"
 
 msgid "Payment"
 msgstr "Paiement"
 
-#: skins/sell_macros.pt:18
+#: o/skins/sell_macros.pt:18
 msgid "Confirmation"
 msgstr "Confirmation"
 
 msgid "Confirmation"
 msgstr "Confirmation"
 
-#: skins/shipping_set_control.py:10
+#: o/skins/shipping_set_control.py:8
+msgid "Please enter a name."
+msgstr "Veuillez entrer un nom."
+
+#: o/skins/shipping_set_control.py:9
+msgid "Please enter an address."
+msgstr "Veuillez entrer une adresse."
+
+#: o/skins/shipping_set_control.py:10
 msgid "Please enter a city."
 msgstr "Veuillez entrer une ville."
 
 msgid "Please enter a city."
 msgstr "Veuillez entrer une ville."
 
-#: skins/shipping_set_control.py:11
+#: o/skins/shipping_set_control.py:11
 msgid "Please enter zip code."
 msgstr "Veuillez entrer un code postal."
 
 msgid "Please enter zip code."
 msgstr "Veuillez entrer un code postal."
 
-#: skins/shipping_set_control.py:12
+#: o/skins/shipping_set_control.py:12
 msgid "Please enter a country."
 msgstr "Veuillez entrer un pays."
 
 msgid "Please enter a country."
 msgstr "Veuillez entrer un pays."
 
-#: skins/shipping_set_control.py:27
+#: o/skins/shipping_set_control.py:27
 msgid "No cart found. Your session may have expired."
 msgstr "Pas de panier trouvé. Votre session a peut-être expirée."
 
 msgid "No cart found. Your session may have expired."
 msgstr "Pas de panier trouvé. Votre session a peut-être expirée."
 
-#: skins/shipping_set_control.py:30
+#: o/skins/shipping_set_control.py:30
 msgid "Shipping informations saved."
 msgstr "Informations de livraison enregistrées."
 
 msgid "Shipping informations saved."
 msgstr "Informations de livraison enregistrées."
 
-#: skins/shipping_set_control.py:8
-msgid "Please enter a name."
-msgstr "Veuillez entrer un nom."
-
-#: skins/shipping_set_control.py:9
-msgid "Please enter an address."
-msgstr "Veuillez entrer une adresse."
-
-#: skins/shipping_template.pt:14
+#: o/skins/shipping_template.pt:14
 msgid "Please set shipping informations"
 msgstr "Veuillez remplir les informations de livraison."
 
 msgid "Please set shipping informations"
 msgstr "Veuillez remplir les informations de livraison."
 
-#: skins/shipping_template.pt:19 skins/shipping_template.pt:60
+#: o/skins/shipping_template.pt:19 o/skins/shipping_template.pt:60
 msgid "Validate >>"
 msgstr "Valider >>"
 
 msgid "Validate >>"
 msgstr "Valider >>"
 
-#: skins/shipping_template.pt:23
+#: o/skins/shipping_template.pt:23
 msgid "Fullname"
 msgstr "Nom complet"
 
 msgid "Fullname"
 msgstr "Nom complet"
 
-#: skins/shipping_template.pt:29
+#: o/skins/shipping_template.pt:29
 msgid "Address"
 msgstr "Adresse"
 
 msgid "Address"
 msgstr "Adresse"
 
-#: skins/shipping_template.pt:36
+#: o/skins/shipping_template.pt:36
 msgid "City"
 msgstr "Ville"
 
 msgid "City"
 msgstr "Ville"
 
-#: skins/shipping_template.pt:42
+#: o/skins/shipping_template.pt:42
 msgid "Zip code"
 msgstr "Code postal"
 
 msgid "Zip code"
 msgstr "Code postal"
 
-#: skins/shipping_template.pt:48
+#: o/skins/shipping_template.pt:48
 msgid "Country"
 msgstr "Pays"
 
 msgid "Country"
 msgstr "Pays"
 
-#: skins/zoom_view.pt:27
+#: o/skins/zoom_view.pt:32
 msgid "back"
 msgstr "retour"
 
 msgid "back"
 msgstr "retour"
 
@@ -416,8 +409,18 @@ msgstr "Mes collections"
 msgid "You don't have any album yet."
 msgstr "Vous n'avez pas encore de collection."
 
 msgid "You don't have any album yet."
 msgstr "Vous n'avez pas encore de collection."
 
-#~ msgid "slide show"
-#~ msgstr "diaporama"
+# Date et heure de prise de vue
+msgid "%m/%d/%Y %H:%M:%S"
+msgstr "%d/%m/%Y %H:%M:%S"
+
+#~ msgid "If a file already exists"
+#~ msgstr "Si un fichier existe déjà"
+
+#~ msgid "overwrite"
+#~ msgstr "écraser"
+
+#~ msgid "rename"
+#~ msgstr "renommer"
 
 #~ msgid "stopped"
 #~ msgstr "arrêté"
 
 #~ msgid "stopped"
 #~ msgstr "arrêté"
index 459fdd9998476b266c7b0cf534b9a20aa5dca2bb..9008180b7a98800e068aebcf0b80c2fd5f49e2f1 100644 (file)
@@ -14,3 +14,7 @@ msgstr ""
 
 msgid "You don't have any album yet."
 msgstr ""
 
 msgid "You don't have any album yet."
 msgstr ""
+
+# date et heure de prise de vue
+msgid "%m/%d/%Y %H:%M:%S"
+msgstr ""
index 36f2352553f58f1aaca320c4db64c4c700f1a86b..f1a927d22ee9f32fbd82469ee07d6ab3becad42e 100644 (file)
-############################################################
-# Copyright © 2005-2008  Benoît PIN <benoit.pin@ensmp.fr>  #
-# 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 ""
 msgid ""
 msgstr ""
-"Project-Id-Version: Plinn - Portfolio 2\n"
-"POT-Creation-Date: $Date: Mon Sep  7 10:25:46 2009 $\n"
-"Language-Team: Benoît Pin <benoit.pin@ensmp.fr>\n"
+"Project-Id-Version: 3.0\n"
+"POT-Creation-Date: Sun Jun 29 07:19:35 2014\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Zope 3 Developers <zope-dev@zope.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\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"
 
 
-#: ImageManipulationTool.py:42
+#: o/ImageManipulationTool.py:40
 msgid "Processor"
 msgstr ""
 
 msgid "Processor"
 msgstr ""
 
-#: ImageManipulationTool.py:58
+#: o/ImageManipulationTool.py:56
 msgid "Process started."
 msgstr ""
 
 msgid "Process started."
 msgstr ""
 
-#: ImageManipulationTool.py:66
+#: o/ImageManipulationTool.py:64
 msgid "Process stopped."
 msgstr ""
 
 msgid "Process stopped."
 msgstr ""
 
-#: skins/add_to_cart.py:14
-#: skins/my_cart.py:73
+#: o/skins/add_to_cart.py:20
+#: o/skins/my_cart.py:73
 msgid "You must enter an integer for quantity (found: %s)"
 msgstr ""
 
 msgid "You must enter an integer for quantity (found: %s)"
 msgstr ""
 
-#: skins/add_to_cart.py:17
-#: skins/my_cart.py:75
+#: o/skins/add_to_cart.py:23
+#: o/skins/my_cart.py:75
 msgid "You must enter a positive value for quantity (found: %s)"
 msgstr ""
 
 msgid "You must enter a positive value for quantity (found: %s)"
 msgstr ""
 
-#: skins/add_to_cart.py:39
-#: skins/my_cart.py:85
+#: o/skins/add_to_cart.py:49
+#: o/skins/my_cart.py:85
 msgid "Only %d available copies of this photo in this size."
 msgstr ""
 
 msgid "Only %d available copies of this photo in this size."
 msgstr ""
 
-#: skins/add_to_cart.py:41
-#: skins/my_cart.py:87
+#: o/skins/add_to_cart.py:51
+#: o/skins/my_cart.py:87
 msgid "Only one last available copy of this photo in this size."
 msgstr ""
 
 msgid "Only one last available copy of this photo in this size."
 msgstr ""
 
-#: skins/add_to_cart.py:43
+#: o/skins/add_to_cart.py:53
 msgid "No more available copy of this photo in this size."
 msgstr ""
 
 msgid "No more available copy of this photo in this size."
 msgstr ""
 
-#: skins/add_to_cart.py:48
+#: o/skins/add_to_cart.py:62
 msgid ""
 "Your cart is locked:\n"
 "please complete your current order first."
 msgstr ""
 
 msgid ""
 "Your cart is locked:\n"
 "please complete your current order first."
 msgstr ""
 
-#: skins/add_to_cart.py:54
+#: o/skins/add_to_cart.py:72
+#: o/skins/add_to_cart.py:74
 msgid "Added to cart."
 msgstr ""
 
 msgid "Added to cart."
 msgstr ""
 
-#: skins/add_to_selection.py:37
+#: o/skins/add_to_selection.py:37
 msgid "%s added to selection."
 msgstr ""
 
 msgid "%s added to selection."
 msgstr ""
 
-#: skins/add_to_selection.py:39
+#: o/skins/add_to_selection.py:39
 msgid "This %s is already in the selection."
 msgstr ""
 
 msgid "This %s is already in the selection."
 msgstr ""
 
-#: skins/get_slide_buyable_items.pt:21
-#: skins/photo_layout_macros.pt:43
-#: skins/photo_layout_macros.pt:45
-#: skins/photo_view.pt:91
-#: skins/photo_view.pt:94
+#: o/skins/get_slide_buyable_items.pt:21
+#: o/skins/photo_layout_macros.pt:47
+#: o/skins/photo_layout_macros.pt:49
+#: o/skins/photo_view.pt:91
+#: o/skins/photo_view.pt:94
 msgid "Add to cart"
 msgstr ""
 
 msgid "Add to cart"
 msgstr ""
 
-#: skins/get_slide_buyable_items.pt:27
+#: o/skins/get_slide_buyable_items.pt:27
 msgid "quantity:"
 msgstr ""
 
 msgid "quantity:"
 msgstr ""
 
-#: skins/get_slide_buyable_items.pt:34
+#: o/skins/get_slide_buyable_items.pt:34
 msgid "Cancel"
 msgstr ""
 
 msgid "Cancel"
 msgstr ""
 
-#: skins/lightbox_save_control.py:10
+#: o/skins/lightbox_save_control.py:10
 msgid "No photo selected."
 msgstr ""
 
 msgid "No photo selected."
 msgstr ""
 
-#: skins/lightbox_save_control.py:21
+#: o/skins/lightbox_save_control.py:21
 msgid "You must enter a title."
 msgstr ""
 
 msgid "You must enter a title."
 msgstr ""
 
-#: skins/lightbox_save_control.py:27
+#: o/skins/lightbox_save_control.py:27
 msgid "Lightbox created."
 msgstr ""
 
 msgid "Lightbox created."
 msgstr ""
 
-#: skins/lightbox_view_template.pt:19
+#: o/skins/lightbox_view_template.pt:19
 #. Default: ""
 msgid "lightbox_selected_explanations"
 msgstr ""
 
 #. Default: ""
 msgid "lightbox_selected_explanations"
 msgstr ""
 
-#: skins/lightbox_view_template.pt:22
-#: skins/selection_view_template.pt:20
+#: o/skins/lightbox_view_template.pt:22
+#: o/skins/selection_view_template.pt:20
 msgid "${DYNAMIC_CONTENT}"
 msgstr ""
 
 msgid "${DYNAMIC_CONTENT}"
 msgstr ""
 
-#: skins/metadata_edit_form_macros.pt:258
+#: o/skins/metadata_edit_form_macros.pt:258
 msgid "Save"
 msgstr ""
 
 msgid "Save"
 msgstr ""
 
-#: skins/my_cart.py:138
-#: skins/my_cart_template.pt:113
-msgid "My cart"
-msgstr ""
-
-#: skins/my_cart.py:58
+#: o/skins/my_cart.py:58
 msgid "Order >>"
 msgstr ""
 
 msgid "Order >>"
 msgstr ""
 
-#: skins/my_cart.py:60
+#: o/skins/my_cart.py:60
 msgid "Shipping >>"
 msgstr ""
 
 msgid "Shipping >>"
 msgstr ""
 
-#: skins/my_cart.py:89
+#: o/skins/my_cart.py:89
 msgid "No more available copy of this photo and in this size."
 msgstr ""
 
 msgid "No more available copy of this photo and in this size."
 msgstr ""
 
-#: skins/my_cart_template.pt:114
-msgid "Your cart is currently empty."
+#: o/skins/my_cart.py:138
+#: o/skins/my_cart_template.pt:113
+msgid "My cart"
 msgstr ""
 
 msgstr ""
 
-#: skins/my_cart_template.pt:26
+#: o/skins/my_cart_template.pt:26
 msgid "Image"
 msgstr ""
 
 msgid "Image"
 msgstr ""
 
-#: skins/my_cart_template.pt:27
+#: o/skins/my_cart_template.pt:27
 msgid "Printing format and type"
 msgstr ""
 
 msgid "Printing format and type"
 msgstr ""
 
-#: skins/my_cart_template.pt:28
+#: o/skins/my_cart_template.pt:28
 msgid "Quantity"
 msgstr ""
 
 msgid "Quantity"
 msgstr ""
 
-#: skins/my_cart_template.pt:29
+#: o/skins/my_cart_template.pt:29
 msgid "Amount (incl tax)"
 msgstr ""
 
 msgid "Amount (incl tax)"
 msgstr ""
 
-#: skins/my_cart_template.pt:53
-#: skins/my_cart_template.pt:53
+#: o/skins/my_cart_template.pt:53
+#: o/skins/my_cart_template.pt:53
 msgid "refresh amount"
 msgstr ""
 
 msgid "refresh amount"
 msgstr ""
 
-#: skins/my_cart_template.pt:59
-#: skins/my_cart_template.pt:59
+#: o/skins/my_cart_template.pt:59
+#: o/skins/my_cart_template.pt:59
 msgid "delete"
 msgstr ""
 
 msgid "delete"
 msgstr ""
 
-#: skins/my_cart_template.pt:69
+#: o/skins/my_cart_template.pt:69
 msgid "Prints"
 msgstr ""
 
 msgid "Prints"
 msgstr ""
 
-#: skins/my_cart_template.pt:70
+#: o/skins/my_cart_template.pt:70
 msgid "Total"
 msgstr ""
 
 msgid "Total"
 msgstr ""
 
-#: skins/my_cart_template.pt:80
-#: skins/sell_macros.pt:16
+#: o/skins/my_cart_template.pt:80
+#: o/skins/sell_macros.pt:16
 msgid "Shipping"
 msgstr ""
 
 msgid "Shipping"
 msgstr ""
 
-#: skins/my_cart_template.pt:85
+#: o/skins/my_cart_template.pt:85
 msgid "VAT"
 msgstr ""
 
 msgid "VAT"
 msgstr ""
 
-#: skins/my_cart_template.pt:90
+#: o/skins/my_cart_template.pt:90
 msgid "Total amount to pay"
 msgstr ""
 
 msgid "Total amount to pay"
 msgstr ""
 
-#: skins/photo_info.pt:18
-#: skins/save_as_lightbox_template.pt:15
+#: o/skins/my_cart_template.pt:114
+msgid "Your cart is currently empty."
+msgstr ""
+
+#: o/skins/photo_info.pt:9
+msgid "Preview:"
+msgstr ""
+
+#: o/skins/photo_info.pt:18
+#: o/skins/save_as_lightbox_template.pt:15
 msgid "Title"
 msgstr ""
 
 msgid "Title"
 msgstr ""
 
-#: skins/photo_info.pt:22
+#: o/skins/photo_info.pt:22
 msgid "Type"
 msgstr ""
 
 msgid "Type"
 msgstr ""
 
-#: skins/photo_info.pt:26
+#: o/skins/photo_info.pt:26
 msgid "Created"
 msgstr ""
 
 msgid "Created"
 msgstr ""
 
-#: skins/photo_info.pt:30
+#: o/skins/photo_info.pt:30
 msgid "Modified"
 msgstr ""
 
 msgid "Modified"
 msgstr ""
 
-#: skins/photo_info.pt:34
+#: o/skins/photo_info.pt:34
 msgid "Dimensions"
 msgstr ""
 
 msgid "Dimensions"
 msgstr ""
 
-#: skins/photo_info.pt:9
-msgid "Preview:"
-msgstr ""
-
-#: skins/photo_layout_macros.pt:28
-#: skins/photo_layout_macros.pt:30
+#: o/skins/photo_layout_macros.pt:32
+#: o/skins/photo_layout_macros.pt:34
 msgid "Add to selection"
 msgstr ""
 
 msgid "Add to selection"
 msgstr ""
 
-#: skins/photo_layout_macros.pt:35
-#: skins/photo_layout_macros.pt:37
+#: o/skins/photo_layout_macros.pt:39
+#: o/skins/photo_layout_macros.pt:41
 msgid "Remove to selection"
 msgstr ""
 
 msgid "Remove to selection"
 msgstr ""
 
-#: skins/photo_layout_macros.pt:50
-#: skins/photo_layout_macros.pt:52
-#: skins/portfolio_presentation_template.pt:47
+#: o/skins/photo_layout_macros.pt:54
+#: o/skins/photo_layout_macros.pt:56
+#: o/skins/portfolio_presentation_template.pt:47
 msgid "Delete"
 msgstr ""
 
 msgid "Delete"
 msgstr ""
 
-#: skins/photo_layout_macros.pt:61
-#: skins/photo_layout_macros.pt:64
+#: o/skins/photo_layout_macros.pt:65
+#: o/skins/photo_layout_macros.pt:68
 msgid "Hide for anonymous"
 msgstr ""
 
 msgid "Hide for anonymous"
 msgstr ""
 
-#: skins/photo_layout_macros.pt:72
-#: skins/photo_layout_macros.pt:75
+#: o/skins/photo_layout_macros.pt:76
+#: o/skins/photo_layout_macros.pt:79
 msgid "Show for anonymous"
 msgstr ""
 
 msgid "Show for anonymous"
 msgstr ""
 
-#: skins/photo_medium.pt:37
-#: skins/photo_medium.pt:38
+#: o/skins/photo_medium.pt:37
+#: o/skins/photo_medium.pt:38
 msgid "previous"
 msgstr ""
 
 msgid "previous"
 msgstr ""
 
-#: skins/photo_medium.pt:44
-#: skins/photo_medium.pt:45
+#: o/skins/photo_medium.pt:44
+#: o/skins/photo_medium.pt:45
 msgid "next"
 msgstr ""
 
 msgid "next"
 msgstr ""
 
-#: skins/photo_medium.pt:52
+#: o/skins/photo_medium.pt:52
 msgid "zoom in"
 msgstr ""
 
 msgid "zoom in"
 msgstr ""
 
-#: skins/photo_medium.pt:52
+#: o/skins/photo_medium.pt:52
 msgid "zoom out"
 msgstr ""
 
 msgid "zoom out"
 msgstr ""
 
-#: skins/photo_view.pt:115
-#: skins/photo_view_ajax_template.pt:18
-msgid "Keywords"
-msgstr ""
-
-#: skins/photo_view.pt:122
-#: skins/photo_view_ajax_template.pt:26
-msgid "reference:"
-msgstr ""
-
-#: skins/photo_view.pt:127
-#: skins/photo_view_ajax_template.pt:33
-msgid "download picture"
-msgstr ""
-
-#: skins/photo_view.pt:29
+#: o/skins/photo_view.pt:31
 msgid "Empty image: upload an image file in \"Edit\" tab."
 msgstr ""
 
 msgid "Empty image: upload an image file in \"Edit\" tab."
 msgstr ""
 
-#: skins/photo_view.pt:44
-#: skins/photo_view.pt:47
+#: o/skins/photo_view.pt:46
+#: o/skins/photo_view.pt:49
 msgid "Previous"
 msgstr ""
 
 msgid "Previous"
 msgstr ""
 
-#: skins/photo_view.pt:50
-#: skins/photo_view.pt:53
+#: o/skins/photo_view.pt:52
+#: o/skins/photo_view.pt:55
 msgid "Next"
 msgstr ""
 
 msgid "Next"
 msgstr ""
 
-#: skins/photo_view.pt:69
-#: skins/photo_view.pt:72
+#: o/skins/photo_view.pt:58
+msgid "slide show"
+msgstr ""
+
+#: o/skins/photo_view.pt:69
+#: o/skins/photo_view.pt:72
 msgid "Back to portfolio..."
 msgstr ""
 
 msgid "Back to portfolio..."
 msgstr ""
 
-#: skins/photo_view.pt:75
-#: skins/photo_view.pt:77
+#: o/skins/photo_view.pt:75
+#: o/skins/photo_view.pt:77
 msgid "Full screen (f)"
 msgstr ""
 
 msgid "Full screen (f)"
 msgstr ""
 
-#: skins/photo_view.pt:99
-#: skins/photo_view.pt:104
+#: o/skins/photo_view.pt:99
+#: o/skins/photo_view.pt:104
 msgid "Edit metadata"
 msgstr ""
 
 msgid "Edit metadata"
 msgstr ""
 
-#: skins/portfolio_edit_template.pt:36
-msgid "If a file already exists"
+#: o/skins/photo_view.pt:116
+#: o/skins/photo_view_ajax_template.pt:18
+msgid "Keywords"
 msgstr ""
 
 msgstr ""
 
-#: skins/portfolio_edit_template.pt:39
-msgid "overwrite"
+#: o/skins/photo_view.pt:123
+#: o/skins/photo_view_ajax_template.pt:26
+msgid "reference:"
 msgstr ""
 
 msgstr ""
 
-#: skins/portfolio_edit_template.pt:44
-msgid "rename"
+#: o/skins/photo_view.pt:129
+#: o/skins/photo_view_ajax_template.pt:33
+msgid "download picture"
 msgstr ""
 
 msgstr ""
 
-#: skins/portfolio_presentation_template.pt:22
+#: o/skins/portfolio_presentation_template.pt:22
 msgid "Delete presentation"
 msgstr ""
 
 msgid "Delete presentation"
 msgstr ""
 
-#: skins/save_as_lightbox_template.pt:12
+#: o/skins/save_as_lightbox_template.pt:12
 msgid "Save current selection as lightbox"
 msgstr ""
 
 msgid "Save current selection as lightbox"
 msgstr ""
 
-#: skins/save_as_lightbox_template.pt:21
+#: o/skins/save_as_lightbox_template.pt:21
 msgid "Description"
 msgstr ""
 
 msgid "Description"
 msgstr ""
 
-#: skins/selection_view.py:64
-#: skins/selection_view.py:66
-#: skins/selectioncontext.py:114
-#: skins/selectioncontext.py:116
-#: skins/selection_view_template.pt:18
+#: o/skins/selection_view.py:64
+#: o/skins/selection_view.py:66
+#: o/skins/selection_view_template.pt:18
+#: o/skins/selectioncontext.py:115
+#: o/skins/selectioncontext.py:117
 msgid "My selection"
 msgstr ""
 
 msgid "My selection"
 msgstr ""
 
-#: skins/selection_view_template.pt:23
+#: o/skins/selection_view_template.pt:23
 msgid "You are editing this ligthbox:"
 msgstr ""
 
 msgid "You are editing this ligthbox:"
 msgstr ""
 
-#: skins/selection_view_template.pt:30
+#: o/skins/selection_view_template.pt:30
 msgid "Save as..."
 msgstr ""
 
 msgid "Save as..."
 msgstr ""
 
-#: skins/selection_view_template.pt:33
+#: o/skins/selection_view_template.pt:33
 msgid "${please_login} if you want to save this selection."
 msgstr ""
 
 msgid "${please_login} if you want to save this selection."
 msgstr ""
 
-#: skins/selection_view_template.pt:34
+#: o/skins/selection_view_template.pt:34
 #. Default: "Please log in"
 msgid "login_to_save_seletion"
 msgstr ""
 
 #. Default: "Please log in"
 msgid "login_to_save_seletion"
 msgstr ""
 
-#: skins/selection_view_template.pt:38
+#: o/skins/selection_view_template.pt:38
 msgid "Empty selection."
 msgstr ""
 
 msgid "Empty selection."
 msgstr ""
 
-#: skins/sell_macros.pt:14
+#: o/skins/sell_macros.pt:14
 msgid "Cart"
 msgstr ""
 
 msgid "Cart"
 msgstr ""
 
-#: skins/sell_macros.pt:15
+#: o/skins/sell_macros.pt:15
 msgid "Authentication"
 msgstr ""
 
 msgid "Authentication"
 msgstr ""
 
-#: skins/sell_macros.pt:17
+#: o/skins/sell_macros.pt:17
 msgid "Payment"
 msgstr ""
 
 msgid "Payment"
 msgstr ""
 
-#: skins/sell_macros.pt:18
+#: o/skins/sell_macros.pt:18
 msgid "Confirmation"
 msgstr ""
 
 msgid "Confirmation"
 msgstr ""
 
-#: skins/shipping_set_control.py:10
+#: o/skins/shipping_set_control.py:8
+msgid "Please enter a name."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:9
+msgid "Please enter an address."
+msgstr ""
+
+#: o/skins/shipping_set_control.py:10
 msgid "Please enter a city."
 msgstr ""
 
 msgid "Please enter a city."
 msgstr ""
 
-#: skins/shipping_set_control.py:11
+#: o/skins/shipping_set_control.py:11
 msgid "Please enter zip code."
 msgstr ""
 
 msgid "Please enter zip code."
 msgstr ""
 
-#: skins/shipping_set_control.py:12
+#: o/skins/shipping_set_control.py:12
 msgid "Please enter a country."
 msgstr ""
 
 msgid "Please enter a country."
 msgstr ""
 
-#: skins/shipping_set_control.py:27
+#: o/skins/shipping_set_control.py:27
 msgid "No cart found. Your session may have expired."
 msgstr ""
 
 msgid "No cart found. Your session may have expired."
 msgstr ""
 
-#: skins/shipping_set_control.py:30
+#: o/skins/shipping_set_control.py:30
 msgid "Shipping informations saved."
 msgstr ""
 
 msgid "Shipping informations saved."
 msgstr ""
 
-#: skins/shipping_set_control.py:8
-msgid "Please enter a name."
-msgstr ""
-
-#: skins/shipping_set_control.py:9
-msgid "Please enter an address."
-msgstr ""
-
-#: skins/shipping_template.pt:14
+#: o/skins/shipping_template.pt:14
 msgid "Please set shipping informations"
 msgstr ""
 
 msgid "Please set shipping informations"
 msgstr ""
 
-#: skins/shipping_template.pt:19
-#: skins/shipping_template.pt:60
+#: o/skins/shipping_template.pt:19
+#: o/skins/shipping_template.pt:60
 msgid "Validate >>"
 msgstr ""
 
 msgid "Validate >>"
 msgstr ""
 
-#: skins/shipping_template.pt:23
+#: o/skins/shipping_template.pt:23
 msgid "Fullname"
 msgstr ""
 
 msgid "Fullname"
 msgstr ""
 
-#: skins/shipping_template.pt:29
+#: o/skins/shipping_template.pt:29
 msgid "Address"
 msgstr ""
 
 msgid "Address"
 msgstr ""
 
-#: skins/shipping_template.pt:36
+#: o/skins/shipping_template.pt:36
 msgid "City"
 msgstr ""
 
 msgid "City"
 msgstr ""
 
-#: skins/shipping_template.pt:42
+#: o/skins/shipping_template.pt:42
 msgid "Zip code"
 msgstr ""
 
 msgid "Zip code"
 msgstr ""
 
-#: skins/shipping_template.pt:48
+#: o/skins/shipping_template.pt:48
 msgid "Country"
 msgstr ""
 
 msgid "Country"
 msgstr ""
 
-#: skins/zoom_view.pt:27
+#: o/skins/zoom_view.pt:32
+#: o/skins/zoom_view.pt:32
 msgid "back"
 msgstr ""
 
 msgid "back"
 msgstr ""
 
@@ -439,3 +440,7 @@ msgstr ""
 
 msgid "You don't have any album yet."
 msgstr ""
 
 msgid "You don't have any album yet."
 msgstr ""
+
+# date et heure de prise de vue
+msgid "%m/%d/%Y %H:%M:%S"
+msgstr ""
index e447bbd3969fefbe818a62a8774dfa8778900ac1..c311a1b1bbaa06891fa1b8cc043c35c5aa6878b1 100644 (file)
@@ -21,7 +21,9 @@
   <body i18n:domain="portfolio">
     <div metal:fill-slot="main_no_tabs" tal:omit-tag=""
          tal:define="contextInfos options/contextInfos|here/getPhotoContextInfos;
   <body i18n:domain="portfolio">
     <div metal:fill-slot="main_no_tabs" tal:omit-tag=""
          tal:define="contextInfos options/contextInfos|here/getPhotoContextInfos;
-                     index contextInfos/index">
+                     index contextInfos/index;
+                     translate nocall:modules/Products/Portfolio/utils/translate;
+                     _ python:lambda msg : translate(msg, here)">
       <div id="photo_viewer">
         <table cellspacing="0" class="photo_viewer">
           <tr>
       <div id="photo_viewer">
         <table cellspacing="0" class="photo_viewer">
           <tr>
                 </a>
               </div>
               <div id="image_metadata" class="image_metadata">
                 </a>
               </div>
               <div id="image_metadata" class="image_metadata">
-                <span tal:define="title here/Title" tal:condition="title" tal:omit-tag="">
-                  <span class="photographer" tal:define="creator here/Creator" tal:content="python:'%s :' % creator" tal:condition="creator">Benoît PIN</span>
-                  <span class="title_summary" tal:content="title"></span>
-                </span>
-                <div class="description" tal:content="here/Description"></div>
-                <div tal:define="keywords here/Subject" tal:condition="keywords">
-                  <h4 i18n:translate="">Keywords</h4>
-                  <ul class="keywords"
-                      tal:define="mq nocall:modules/ZTUtils/make_query;
-                                  kwurl python:lambda k: '%s/search?%s' % (portal_url, mq(Subject=k, portal_type=['Photo']))">
-                    <li tal:repeat="k keywords"><a tal:content="k" tal:attributes="href python:kwurl(k)">bla</a></li>
-                  </ul>
-                </div>
-                <div><span i18n:translate="" tal:omit-tag="">reference:</span> <span tal:replace="context/getId">bidule.jpg</span></div>
-                <div tal:define="rights here/Rights"
-                     tal:content="python:rights.startswith('©') and rights or '© %s' % rights"></div>
-                <div tal:define="ViewRawImage python:modules['Products.Portfolio.permissions'].ViewRawImage"
-                     tal:condition="python:mtool.checkPermission(ViewRawImage, here)" style="font-weight:bold; margin-top:1em">
-                     <a tal:attributes="href string:${here/absolute_url}/photo_download" i18n:translate="">download picture</a>
+                <div  metal:define-macro="image_metadata" tal:omit-tag="">
+                  <span tal:define="title here/Title" tal:condition="title" tal:omit-tag="">
+                    <span class="photographer" tal:define="creator here/Creator" tal:content="python:'%s :' % creator" tal:condition="creator">Benoît PIN</span>
+                    <span class="title_summary" tal:content="title"></span>
+                  </span>
+                  <div tal:content="python:here.DateTimeOriginal().strftime(_('%m/%d/%Y %H:%M:%S'))"></div>
+                  <div class="description" tal:content="here/Description"></div>
+                  <div tal:define="keywords here/Subject" tal:condition="keywords">
+                    <h4 i18n:translate="">Keywords</h4>
+                    <ul class="keywords"
+                        tal:define="mq nocall:modules/ZTUtils/make_query;
+                                    kwurl python:lambda k: '%s/search?%s' % (portal_url, mq(Subject=k, portal_type=['Photo']))">
+                      <li tal:repeat="k keywords"><a tal:content="k" tal:attributes="href python:kwurl(k)">bla</a></li>
+                    </ul>
+                  </div>
+                  <div><span i18n:translate="" tal:omit-tag="">reference:</span> <span tal:replace="context/getId">bidule.jpg</span></div>
+                  <div tal:define="rights here/Rights"
+                       tal:condition="rights"
+                       tal:content="python:rights.startswith('©') and rights or '© %s' % rights"></div>
+                  <div tal:define="ViewRawImage python:modules['Products.Portfolio.permissions'].ViewRawImage"
+                       tal:condition="python:mtool.checkPermission(ViewRawImage, here)" style="font-weight:bold; margin-top:1em">
+                       <a tal:attributes="href string:${here/absolute_url}/photo_download" i18n:translate="">download picture</a>
+                  </div>
                 </div>
               </div>
             </td>
                 </div>
               </div>
             </td>
index d1e98bed2bdbabf7fb3b4c86594a24cdb8057dbf..419f7fe4e713a471027b4ce49f0eef052de156f8 100755 (executable)
@@ -21,5 +21,4 @@ else :
        buyable = False
 
 options['buyable'] = buyable
        buyable = False
 
 options['buyable'] = buyable
-
 return context.photo_view_ajax_template(**options)
\ No newline at end of file
 return context.photo_view_ajax_template(**options)
\ No newline at end of file
index 88336983f4cd5fc648ac19122a3a7ae625c89f69..d4c2b6ce7b39871f2de0aee5734be625439074c9 100644 (file)
@@ -1,38 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <fragments i18n:domain="portfolio"
 <fragments i18n:domain="portfolio"
-           tal:define="imgId here/getId"
-            xmlns:i18n="http://xml.zope.org/namespaces/i18n"
-            xmlns:tal="http://xml.zope.org/namespaces/tal">
+           tal:define="imgId here/getId;
+                       translate nocall:modules/Products/Portfolio/utils/translate;
+                        _ python:lambda msg : translate(msg, here)"
+           xmlns:i18n="http://xml.zope.org/namespaces/i18n"
+           xmlns:tal="http://xml.zope.org/namespaces/tal"
+           xmlns:metal="http://xml.zope.org/namespaces/metal">
+  <div metal:use-macro="here/main_template_macros/macros/global_defines" tal:omit-tag=""/>
   <imageattributes tal:attributes="alt here/Title;
                                    backToContextUrl options/backToContextUrl;
                                    lastBcUrl options/lastBcUrl;
                                    img_id imgId;
                                    buyable options/buyable"/>
   <fragment id="image_metadata"><span tal:replace="structure string:&lt;![CDATA[" />
   <imageattributes tal:attributes="alt here/Title;
                                    backToContextUrl options/backToContextUrl;
                                    lastBcUrl options/lastBcUrl;
                                    img_id imgId;
                                    buyable options/buyable"/>
   <fragment id="image_metadata"><span tal:replace="structure string:&lt;![CDATA[" />
-    <span tal:define="title here/Title" tal:condition="title" tal:omit-tag="">
-      <span class="photographer" tal:define="creator here/Creator" tal:content="python:'%s :' % creator" tal:condition="creator">Benoît PIN</span>
-      <span class="title_summary" tal:content="title"></span>
-    </span>
-    <div class="description" tal:content="here/Description"></div>
-    <div tal:define="keywords here/Subject" tal:condition="keywords">
-      <h4 i18n:translate="">Keywords</h4>
-      <ul class="keywords"
-          tal:define="portal_url here/portal_url;
-                      mq nocall:modules/ZTUtils/make_query;
-                      kwurl python:lambda k: '%s/search?%s' % (portal_url, mq(Subject=k, portal_type=['Photo']))">
-        <li tal:repeat="k keywords"><a tal:content="k" tal:attributes="href python:kwurl(k)">bla</a></li>
-      </ul>
-    </div>
-    <div><span i18n:translate="" tal:omit-tag="">reference:</span> <span tal:replace="imgId">bidule.jpg</span></div>
-    <div tal:define="rights here/Rights"
-         tal:content="python:rights.startswith('©') and rights or '© %s' % rights"></div>
-    <div tal:define="ViewRawImage python:modules['Products.Portfolio.permissions'].ViewRawImage;
-                     mtool here/portal_membership"
-         tal:condition="python:mtool.checkPermission(ViewRawImage, here)" style="font-weight:bold; margin-top:1em"
-         i18n:domain="portfolio">
-         <a tal:attributes="href string:${here/absolute_url}/photo_download" i18n:translate="">download picture</a>
-    </div>
-         
+    <div metal:use-macro="here/photo_view/macros/image_metadata">image metadata</div>
   <span tal:replace="structure string:]]>" /></fragment>
   <fragment id="BC_Object_URL" tal:content="options/lastBcUrl"></fragment>
   <span tal:replace="structure string:]]>" /></fragment>
   <fragment id="BC_Object_URL" tal:content="options/lastBcUrl"></fragment>
+  <tal:block tal:define="dummy python:request.RESPONSE.setHeader('Content-Type', 'text/xml;;charset=utf-8')"/>
 </fragments>
\ No newline at end of file
 </fragments>
\ No newline at end of file
diff --git a/update-i18n.sh b/update-i18n.sh
new file mode 100755 (executable)
index 0000000..b20a40e
--- /dev/null
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+i18nextract --path . --site_zcml ../../etc/site.zcml --domain portfolio -o locales
+
+cat locales/portfolio.pot locales/portfolio-manual.pot > locales/portfolio-all.pot
+mv locales/portfolio-all.pot locales/portfolio.pot
+
+msgmerge --update --no-fuzzy-matching locales/fr/LC_MESSAGES/portfolio.po locales/portfolio.pot
+msgmerge --update --no-fuzzy-matching locales/en/LC_MESSAGES/portfolio.po locales/portfolio.pot