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 29bd5ce..2be79dd 100644 (file)
Binary files a/locales/fr/LC_MESSAGES/portfolio.mo and b/locales/fr/LC_MESSAGES/portfolio.mo differ
index 35147bf..a1e9fa2 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 459fdd9..9008180 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 36f2352..f1a927d 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 e447bbd..c311a1b 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 d1e98be..419f7fe 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 8833698..d4c2b6c 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