Merge pull request #565 from lovenunu/fix

Fix imports and exports
This commit is contained in:
Manuel Raynaud
2014-08-05 10:36:45 +02:00
17 changed files with 410 additions and 173 deletions

View File

@@ -34,13 +34,18 @@ return array(
'All shipping methods' => 'All shipping methods', 'All shipping methods' => 'All shipping methods',
'Alpha code 2 *' => 'Alpha code 2 *', 'Alpha code 2 *' => 'Alpha code 2 *',
'Alpha code 3 *' => 'Alpha code 3 *', 'Alpha code 3 *' => 'Alpha code 3 *',
'An error happend while copying %prev to %dest' => 'An error happend while copying %prev to %dest',
'An error occurred while adding this file to the archive: %file' => 'An error occurred while adding this file to the archive: %file',
'An unknown error append' => 'An unknown error append',
'Apply exchange rates on price in %sym' => 'Apply exchange rates on price in %sym', 'Apply exchange rates on price in %sym' => 'Apply exchange rates on price in %sym',
'Archive Format' => 'Archive Format',
'At least one of cart products categories is %op% <strong>%categories_list%</strong>' => 'At least one of cart products categories is %op% <strong>%categories_list%</strong>', 'At least one of cart products categories is %op% <strong>%categories_list%</strong>' => 'At least one of cart products categories is %op% <strong>%categories_list%</strong>',
'Attribute ID:Attribute AV ID' => 'Attribute ID:Attribute AV ID', 'Attribute ID:Attribute AV ID' => 'Attribute ID:Attribute AV ID',
'Auth mode' => 'Auth mode', 'Auth mode' => 'Auth mode',
'Available quantity' => 'Available quantity', 'Available quantity' => 'Available quantity',
'Available quantity *' => 'Available quantity *', 'Available quantity *' => 'Available quantity *',
'Available shipping zones' => 'Available shipping zones', 'Available shipping zones' => 'Available shipping zones',
'Bad index value %idx' => 'Bad index value %idx',
'Bad tax list JSON' => 'Bad tax list JSON', 'Bad tax list JSON' => 'Bad tax list JSON',
'Billing country' => 'Billing country', 'Billing country' => 'Billing country',
'Billing country is' => 'Billing country is', 'Billing country is' => 'Billing country is',
@@ -91,6 +96,7 @@ return array(
'Delivery module ID not found' => 'Delivery module ID not found', 'Delivery module ID not found' => 'Delivery module ID not found',
'Detailed description' => 'Detailed description', 'Detailed description' => 'Detailed description',
'Disabled' => 'Disabled', 'Disabled' => 'Disabled',
'Do compress' => 'Do compress',
'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.', 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.',
'EAN Code' => 'EAN Code', 'EAN Code' => 'EAN Code',
'Email Address' => 'Email Address', 'Email Address' => 'Email Address',
@@ -102,16 +108,22 @@ return array(
'Equal to' => 'Egal à', 'Equal to' => 'Egal à',
'Error during %action process : %error. Exception was %exc' => 'Error during %action process : %error. Exception was %exc', 'Error during %action process : %error. Exception was %exc' => 'Error during %action process : %error. Exception was %exc',
'Error occured while processing order ref. %ref, ID %id: %err' => 'Error occured while processing order ref. %ref, ID %id: %err', 'Error occured while processing order ref. %ref, ID %id: %err' => 'Error occured while processing order ref. %ref, ID %id: %err',
'Error while creating the directory "%directory"' => 'Error while creating the directory "%directory"',
'Error while writing the file into the archive, error message: %errmes' => 'Error while writing the file into the archive, error message: %errmes',
'Errors' => 'Errors', 'Errors' => 'Errors',
'Errors occurred while importing the file: %errors' => 'Errors occurred while importing the file: %errors',
'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)' => 'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)', 'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)' => 'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)',
'Fail to update %type% position: %err%' => 'Fail to update %type% position: %err%', 'Fail to update %type% position: %err%' => 'Fail to update %type% position: %err%',
'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted' => 'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted', 'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted' => 'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted',
'Failed to find a payment Module with ID=%mid for order ID=%oid' => 'Failed to find a payment Module with ID=%mid for order ID=%oid', 'Failed to find a payment Module with ID=%mid for order ID=%oid' => 'Failed to find a payment Module with ID=%mid for order ID=%oid',
'Failed to open a writing stream on the file: %file' => 'Failed to open a writing stream on the file: %file',
'Failed to open translation file %file. Please be sure that this file is writable by your Web server' => 'Failed to open translation file %file. Please be sure that this file is writable by your Web server', 'Failed to open translation file %file. Please be sure that this file is writable by your Web server' => 'Failed to open translation file %file. Please be sure that this file is writable by your Web server',
'Failed to update language definition: %ex' => 'Failed to update language definition: %ex', 'Failed to update language definition: %ex' => 'Failed to update language definition: %ex',
'Fax' => 'Fax', 'Fax' => 'Fax',
'Feature value does not match FLOAT format' => 'Feature value does not match FLOAT format', 'Feature value does not match FLOAT format' => 'Feature value does not match FLOAT format',
'File format' => 'File format',
'File is too large, please retry with a file having a size less than %size%.' => 'File is too large, please retry with a file having a size less than %size%.', 'File is too large, please retry with a file having a size less than %size%.' => 'File is too large, please retry with a file having a size less than %size%.',
'File to upload' => 'File to upload',
'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it' => 'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it', 'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it' => 'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it',
'First Name' => 'First Name', 'First Name' => 'First Name',
'Firstname' => 'Firstname', 'Firstname' => 'Firstname',
@@ -136,14 +148,18 @@ return array(
'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :', 'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :',
'If cart item count is <strong>%operator%</strong> %quantity%' => 'If cart item count is <strong>%operator%</strong> %quantity%', 'If cart item count is <strong>%operator%</strong> %quantity%' => 'If cart item count is <strong>%operator%</strong> %quantity%',
'If cart total amount is <strong>%operator%</strong> %amount% %currency%' => 'If cart total amount is <strong>%operator%</strong> %amount% %currency%', 'If cart total amount is <strong>%operator%</strong> %amount% %currency%' => 'If cart total amount is <strong>%operator%</strong> %amount% %currency%',
'Import successfully done, %numb row(s) have been changed' => 'Import successfully done, %numb row(s) have been changed',
'Impossible to delete a customer who already have orders' => 'Impossible to delete a customer who already have orders', 'Impossible to delete a customer who already have orders' => 'Impossible to delete a customer who already have orders',
'In' => 'In', 'In' => 'In',
'Include documents' => 'Include documents',
'Include images' => 'Include images',
'Information' => 'Information', 'Information' => 'Information',
'Invalid product_sale_elements' => 'Invalid product_sale_elements', 'Invalid product_sale_elements' => 'Invalid product_sale_elements',
'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name' => 'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name', 'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name' => 'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name',
'Invalid value for walkMode parameter: %value' => 'Invalid value for walkMode parameter: %value', 'Invalid value for walkMode parameter: %value' => 'Invalid value for walkMode parameter: %value',
'Is it the default product sale element ?' => 'Is it the default product sale element ?', 'Is it the default product sale element ?' => 'Is it the default product sale element ?',
'Keep the most important part of your description in the first 150-160 characters.' => 'Keep the most important part of your description in the first 150-160 characters.', 'Keep the most important part of your description in the first 150-160 characters.' => 'Keep the most important part of your description in the first 150-160 characters.',
'Language' => 'Language',
'Language name' => 'Language name', 'Language name' => 'Language name',
'Last Name' => 'Last Name', 'Last Name' => 'Last Name',
'Lastname' => 'Lastname', 'Lastname' => 'Lastname',
@@ -299,8 +315,16 @@ return array(
'Text Message' => 'Text Message', 'Text Message' => 'Text Message',
'The HTML TITLE element is the most important element on your web page.' => 'The HTML TITLE element is the most important element on your web page.', 'The HTML TITLE element is the most important element on your web page.' => 'The HTML TITLE element is the most important element on your web page.',
'The TaxEngine should be passed to this form before using it.' => 'The TaxEngine should be passed to this form before using it.', 'The TaxEngine should be passed to this form before using it.' => 'The TaxEngine should be passed to this form before using it.',
'The archive builder "%name" doesn\'t exist' => 'The archive builder "%name" doesn\'t exist',
'The brand name or title' => 'The brand name or title', 'The brand name or title' => 'The brand name or title',
'The cache directory "%env" is not writable' => 'The cache directory "%env" is not writable',
'The cache file %file is not readable' => 'The cache file %file is not readable',
'The cart item count should match the condition' => 'The cart item count should match the condition', 'The cart item count should match the condition' => 'The cart item count should match the condition',
'The changes could on the Zip Archive not be commited' => 'The changes could on the Zip Archive not be commited',
'The class "%class" doesn\'t exist' => 'The class "%class" doesn\'t exist',
'The class "%class" must be a subclass of %baseClass' => 'The class "%class" must be a subclass of %baseClass',
'The class "%class" must extend %baseClass' => 'The class "%class" must extend %baseClass',
'The column %column that you want to sort doesn\'t exist' => 'The column %column that you want to sort doesn\'t exist',
'The coupon applies if the cart contains at least one product of the selected categories' => 'The coupon applies if the cart contains at least one product of the selected categories', 'The coupon applies if the cart contains at least one product of the selected categories' => 'The coupon applies if the cart contains at least one product of the selected categories',
'The coupon applies if the cart contains at least one product of the specified product list' => 'The coupon applies if the cart contains at least one product of the specified product list', 'The coupon applies if the cart contains at least one product of the specified product list' => 'The coupon applies if the cart contains at least one product of the specified product list',
'The coupon applies to some customers only' => 'The coupon applies to some customers only', 'The coupon applies to some customers only' => 'The coupon applies to some customers only',
@@ -308,9 +332,28 @@ return array(
'The coupon applies to the selected delivery countries' => 'Ce code promo s\'applique seulement aux pays de facturation sélectionnés', 'The coupon applies to the selected delivery countries' => 'Ce code promo s\'applique seulement aux pays de facturation sélectionnés',
'The coupon is valid after a given date' => 'Le code promo est valide seulement à partir d\'une certaine date', 'The coupon is valid after a given date' => 'Le code promo est valide seulement à partir d\'une certaine date',
'The detailed description.' => 'The detailed description.', 'The detailed description.' => 'The detailed description.',
'The directory %dir has not been created in the archive' => 'The directory %dir has not been created in the archive',
'The extension "%ext" is not allowed' => 'The extension "%ext" is not allowed',
'The file %file has not been deleted' => 'The file %file has not been deleted',
'The file %file is missing or is not readable' => 'The file %file is missing or is not readable',
'The file %file is not readable' => 'The file %file is not readable',
'The file %path has been successfully downloaded' => 'The file %path has been successfully downloaded',
'The file name must be valid' => 'The file name must be valid',
'The filename is not correct' => 'The filename is not correct',
'The following columns are missing: %columns' => 'The following columns are missing: %columns',
'The formatter "%name" doesn\'t exist' => 'The formatter "%name" doesn\'t exist',
'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.' => 'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.', 'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.' => 'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.',
'The language "%id" doesn\'t exist' => 'The language "%id" doesn\'t exist',
'The loop "%loop" doesn\'t exist' => 'The loop "%loop" doesn\'t exist',
'The loop name \'%name\' is already defined in %className class' => 'The loop name \'%name\' is already defined in %className class', 'The loop name \'%name\' is already defined in %className class' => 'The loop name \'%name\' is already defined in %className class',
'The method "%class"::buildDataSet must return an array or a ModelCriteria' => 'The method "%class"::buildDataSet must return an array or a ModelCriteria',
'The product sale element reference %ref doesn\'t exist' => 'The product sale element reference %ref doesn\'t exist',
'There is no id "%id" in the export categories' => 'There is no id "%id" in the export categories',
'There is no id "%id" in the exports' => 'There is no id "%id" in the exports',
'There is no id "%id" in the import categories' => 'There is no id "%id" in the import categories',
'There is no id "%id" in the imports' => 'There is no id "%id" in the imports',
'There\'s a conflict between your file extension "%ext" and the mime type "%mime"' => 'There\'s a conflict between your file extension "%ext" and the mime type "%mime"', 'There\'s a conflict between your file extension "%ext" and the mime type "%mime"' => 'There\'s a conflict between your file extension "%ext" and the mime type "%mime"',
'There\'s a problem, the extension "%ext" has been found, ' => 'There\'s a problem, the extension "%ext" has been found, ',
'This brand is online' => 'This brand is online', 'This brand is online' => 'This brand is online',
'This category is online.' => 'This category is online.', 'This category is online.' => 'This category is online.',
'This condition is always true' => 'This condition is always true', 'This condition is always true' => 'This condition is always true',
@@ -339,13 +382,16 @@ return array(
'Title' => 'Title', 'Title' => 'Title',
'Title *' => 'Title *', 'Title *' => 'Title *',
'Title ID not found' => 'Title ID not found', 'Title ID not found' => 'Title ID not found',
'Tried to download a file, but the URL was not valid: %url' => 'Tried to download a file, but the URL was not valid: %url',
'Type' => 'Type', 'Type' => 'Type',
'Unable to process your request. Please try again (%err).' => 'Unable to process your request. Please try again (%err).', 'Unable to process your request. Please try again (%err).' => 'Unable to process your request. Please try again (%err).',
'Unable to write the file %file into the archive' => 'Unable to write the file %file into the archive',
'Unavailable' => 'Unavailable', 'Unavailable' => 'Unavailable',
'Unconditional usage' => 'Unconditional usage', 'Unconditional usage' => 'Unconditional usage',
'Unconditionnal usage' => 'Unconditionnal usage', 'Unconditionnal usage' => 'Unconditionnal usage',
'Undefined loop argument "%name"' => 'Undefined loop argument "%name"', 'Undefined loop argument "%name"' => 'Undefined loop argument "%name"',
'Undefined search mode \'%mode\'' => 'Undefined search mode \'%mode\'', 'Undefined search mode \'%mode\'' => 'Undefined search mode \'%mode\'',
'Unknown error while deleting the file %file' => 'Unknown error while deleting the file %file',
'Unknown order ID: %id' => 'Unknown order ID: %id', 'Unknown order ID: %id' => 'Unknown order ID: %id',
'Unsupported magic method %name. only getArgname() is supported.' => 'Unsupported magic method %name. only getArgname() is supported.', 'Unsupported magic method %name. only getArgname() is supported.' => 'Unsupported magic method %name. only getArgname() is supported.',
'Use the keyword phrase in your URL.' => 'Use the keyword phrase in your URL.', 'Use the keyword phrase in your URL.' => 'Use the keyword phrase in your URL.',
@@ -362,11 +408,17 @@ return array(
'Yes, I have a password :' => 'Yes, I have a password :', 'Yes, I have a password :' => 'Yes, I have a password :',
'You are already registered!' => 'You are already registered!', 'You are already registered!' => 'You are already registered!',
'You don\'t need to use commas or other punctuations.' => 'You don\'t need to use commas or other punctuations.', 'You don\'t need to use commas or other punctuations.' => 'You don\'t need to use commas or other punctuations.',
'You must define an environment when you use an archive builder' => 'You must define an environment when you use an archive builder',
'You tried to load a bad formatted XML' => 'You tried to load a bad formatted XML',
'You\'ve submitted this form too many times. Further submissions will be ignored during %time' => 'You\'ve submitted this form too many times. Further submissions will be ignored during %time', 'You\'ve submitted this form too many times. Further submissions will be ignored during %time' => 'You\'ve submitted this form too many times. Further submissions will be ignored during %time',
'Your Email Address' => 'Your Email Address', 'Your Email Address' => 'Your Email Address',
'Your Message' => 'Your Message', 'Your Message' => 'Your Message',
'Your archive must contain one of these file and doesn\'t: %files' => 'Your archive must contain one of these file and doesn\'t: %files',
'Your current password does not match.' => 'Your current password does not match.', 'Your current password does not match.' => 'Your current password does not match.',
'Zip Error' => 'Zip Error',
'Zip code' => 'Zip code', 'Zip code' => 'Zip code',
'[%zip_head] ' => '[%zip_head] ',
'cURL errno %errno, http code %http_code on link "%path": %error' => 'cURL errno %errno, http code %http_code on link "%path": %error',
'date format' => 'date format', 'date format' => 'date format',
'decimal separator' => 'Séparateur décimal', 'decimal separator' => 'Séparateur décimal',
'delivery module %s is not a Thelia\Module\DeliveryModuleInterface' => 'delivery module %s is not a Thelia\Module\DeliveryModuleInterface', 'delivery module %s is not a Thelia\Module\DeliveryModuleInterface' => 'delivery module %s is not a Thelia\Module\DeliveryModuleInterface',

View File

@@ -34,13 +34,18 @@ return array(
'All shipping methods' => 'Tous les modes de livraison', 'All shipping methods' => 'Tous les modes de livraison',
'Alpha code 2 *' => 'Code Alpha 2 *', 'Alpha code 2 *' => 'Code Alpha 2 *',
'Alpha code 3 *' => 'Code Alpha 3 *', 'Alpha code 3 *' => 'Code Alpha 3 *',
'An error happend while copying %prev to %dest' => 'Une erreur s\'est produite pendant la copy du %prev vers %dest',
'An error occurred while adding this file to the archive: %file' => 'Une erreur s\'est produite pendant l\'ajout de ce fichier dans l\'archive: %file',
'An unknown error append' => 'Une erreur inconnue est survenue',
'Apply exchange rates on price in %sym' => 'Appliquer le taux de change sur le prix en %sym', 'Apply exchange rates on price in %sym' => 'Appliquer le taux de change sur le prix en %sym',
'Archive Format' => 'Format d\'archive',
'At least one of cart products categories is %op% <strong>%categories_list%</strong>' => 'Au moins une des catégories des produits présents dans le panier %op% <strong>%categories_list%</strong> ', 'At least one of cart products categories is %op% <strong>%categories_list%</strong>' => 'Au moins une des catégories des produits présents dans le panier %op% <strong>%categories_list%</strong> ',
'Attribute ID:Attribute AV ID' => 'Déclinaison ID : Valeur de déclinaison ID', 'Attribute ID:Attribute AV ID' => 'Déclinaison ID : Valeur de déclinaison ID',
'Auth mode' => 'Mode d\'authentification', 'Auth mode' => 'Mode d\'authentification',
'Available quantity' => 'Quantité disponible', 'Available quantity' => 'Quantité disponible',
'Available quantity *' => 'Quantité disponible *', 'Available quantity *' => 'Quantité disponible *',
'Available shipping zones' => 'Zones de livraison disponibles', 'Available shipping zones' => 'Zones de livraison disponibles',
'Bad index value %idx' => 'Index inconnu %idx',
'Bad tax list JSON' => 'Mauvais JSON de la liste des taxes', 'Bad tax list JSON' => 'Mauvais JSON de la liste des taxes',
'Billing country' => 'Pays de facturation', 'Billing country' => 'Pays de facturation',
'Billing country is' => 'Le pays de facturation est', 'Billing country is' => 'Le pays de facturation est',
@@ -91,6 +96,7 @@ return array(
'Delivery module ID not found' => 'Id du module de livraison non trouvé', 'Delivery module ID not found' => 'Id du module de livraison non trouvé',
'Detailed description' => 'Description détaillée', 'Detailed description' => 'Description détaillée',
'Disabled' => 'Désactivé', 'Disabled' => 'Désactivé',
'Do compress' => 'Compresser',
'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Ne répétez pas sans cesse les même mots-clés dans une ligne. Préférez utiliser des expressions de mots-clés', 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Ne répétez pas sans cesse les même mots-clés dans une ligne. Préférez utiliser des expressions de mots-clés',
'EAN Code' => 'Code EAN', 'EAN Code' => 'Code EAN',
'Email Address' => 'Adresse mail', 'Email Address' => 'Adresse mail',
@@ -102,16 +108,22 @@ return array(
'Equal to' => 'Egal à', 'Equal to' => 'Egal à',
'Error during %action process : %error. Exception was %exc' => 'Erreur lors de %action: %error. Exception: %exc ', 'Error during %action process : %error. Exception was %exc' => 'Erreur lors de %action: %error. Exception: %exc ',
'Error occured while processing order ref. %ref, ID %id: %err' => 'Un erreur est survenue paedant le traitement de la commande ref. %ref, ID %id; %err', 'Error occured while processing order ref. %ref, ID %id: %err' => 'Un erreur est survenue paedant le traitement de la commande ref. %ref, ID %id; %err',
'Error while creating the directory "%directory"' => 'Erreur pendant la création du dossier "%directory"',
'Error while writing the file into the archive, error message: %errmes' => 'Erreur lors de l\'écriture du fichier dans l\'archive, message d\'error: %errmes',
'Errors' => 'Erreurs', 'Errors' => 'Erreurs',
'Errors occurred while importing the file: %errors' => 'Erreur pendant l\'import: %errors',
'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)' => 'Ne peut supprimer %obj% ID %id% ID parent %parentId% (Exception : %e%)', 'Fail to delete %obj% for %id% with parent id %parentId% (Exception : %e%)' => 'Ne peut supprimer %obj% ID %id% ID parent %parentId% (Exception : %e%)',
'Fail to update %type% position: %err%' => 'Erreur lors de la mise àç jour de la position de %type%: %err%', 'Fail to update %type% position: %err%' => 'Erreur lors de la mise àç jour de la position de %type%: %err%',
'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted' => 'Ne peut créer une instance du module "%name%" lors de la suppression du module. Le répertoire du module à sans doute été supprimé manuellement.', 'Failed to create instance of module "%name%" when trying to delete module. Module directory has probably been deleted' => 'Ne peut créer une instance du module "%name%" lors de la suppression du module. Le répertoire du module à sans doute été supprimé manuellement.',
'Failed to find a payment Module with ID=%mid for order ID=%oid' => 'Ne peut trouver le module de paiement ID=%mid pour la commande ID=%oid ', 'Failed to find a payment Module with ID=%mid for order ID=%oid' => 'Ne peut trouver le module de paiement ID=%mid pour la commande ID=%oid ',
'Failed to open a writing stream on the file: %file' => 'Impossible d\'écrire le fichier %file',
'Failed to open translation file %file. Please be sure that this file is writable by your Web server' => 'L\'ouverture du fichier %file a échoué. Merci de vérifier que ce fichier est accessible en écriture pour votre serveur Web.', 'Failed to open translation file %file. Please be sure that this file is writable by your Web server' => 'L\'ouverture du fichier %file a échoué. Merci de vérifier que ce fichier est accessible en écriture pour votre serveur Web.',
'Failed to update language definition: %ex' => 'Erreur lors de la mise à jour de la définition de la langue : %ex', 'Failed to update language definition: %ex' => 'Erreur lors de la mise à jour de la définition de la langue : %ex',
'Fax' => 'Fax', 'Fax' => 'Fax',
'Feature value does not match FLOAT format' => 'valeur de caractéristique n\'est pas un FLOAT', 'Feature value does not match FLOAT format' => 'valeur de caractéristique n\'est pas un FLOAT',
'File format' => 'Format de fichier',
'File is too large, please retry with a file having a size less than %size%.' => 'La taille de ce fichier est trop importante. Merci d\'envoyer des fichier dont la taille est inférieure à %size%.', 'File is too large, please retry with a file having a size less than %size%.' => 'La taille de ce fichier est trop importante. Merci d\'envoyer des fichier dont la taille est inférieure à %size%.',
'File to upload' => 'Fichier à envoyer',
'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it' => 'Les fichiers avec l\'extension suivante ne sont pas acceptés: %extension, veuillez créer une archive contenant ce fichier si vous voulez l\'envoyer', 'Files with the following extension are not allowed: %extension, please do an archive of the file if you want to upload it' => 'Les fichiers avec l\'extension suivante ne sont pas acceptés: %extension, veuillez créer une archive contenant ce fichier si vous voulez l\'envoyer',
'First Name' => 'Prénom', 'First Name' => 'Prénom',
'Firstname' => 'Prénom', 'Firstname' => 'Prénom',
@@ -136,14 +148,18 @@ return array(
'If a translation is missing or incomplete :' => 'Si une traduction est manquante ou incomplète :', 'If a translation is missing or incomplete :' => 'Si une traduction est manquante ou incomplète :',
'If cart item count is <strong>%operator%</strong> %quantity%' => 'Le nombre d\'articles dans le panier est <strong>%operator%</strong> %quantity% ', 'If cart item count is <strong>%operator%</strong> %quantity%' => 'Le nombre d\'articles dans le panier est <strong>%operator%</strong> %quantity% ',
'If cart total amount is <strong>%operator%</strong> %amount% %currency%' => 'Si le total du panier est <strong>%operator%</strong> %amount% %currency% ', 'If cart total amount is <strong>%operator%</strong> %amount% %currency%' => 'Si le total du panier est <strong>%operator%</strong> %amount% %currency% ',
'Import successfully done, %numb row(s) have been changed' => 'L\'import s\'est correctement déroulé, %numb ligne(s) ont été modifiées',
'Impossible to delete a customer who already have orders' => 'Impossible de supprimer un client si celui-ci a déjà une commande', 'Impossible to delete a customer who already have orders' => 'Impossible de supprimer un client si celui-ci a déjà une commande',
'In' => 'Compris dans', 'In' => 'Compris dans',
'Include documents' => 'Inclure les documents',
'Include images' => 'Inclure les images',
'Information' => 'Information', 'Information' => 'Information',
'Invalid product_sale_elements' => 'product_sale_elements invalide', 'Invalid product_sale_elements' => 'product_sale_elements invalide',
'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name' => 'La valeur "%value" est invalide pour le paramètre "%param" dans la boucle type: %type, nom: %name ', 'Invalid value "%value" for "%param" parameter in loop type: %type, name: %name' => 'La valeur "%value" est invalide pour le paramètre "%param" dans la boucle type: %type, nom: %name ',
'Invalid value for walkMode parameter: %value' => 'Valeur incorrecte pour le paramètre walkMode : %value', 'Invalid value for walkMode parameter: %value' => 'Valeur incorrecte pour le paramètre walkMode : %value',
'Is it the default product sale element ?' => 'Product Sale Element par défaut ?', 'Is it the default product sale element ?' => 'Product Sale Element par défaut ?',
'Keep the most important part of your description in the first 150-160 characters.' => 'Votre description ne devrait pas dépasser 150 à 160 caractères', 'Keep the most important part of your description in the first 150-160 characters.' => 'Votre description ne devrait pas dépasser 150 à 160 caractères',
'Language' => 'Langue',
'Language name' => 'Nom de la langue', 'Language name' => 'Nom de la langue',
'Last Name' => 'Nom', 'Last Name' => 'Nom',
'Lastname' => 'Nom', 'Lastname' => 'Nom',
@@ -299,8 +315,16 @@ return array(
'Text Message' => 'Message au format texte', 'Text Message' => 'Message au format texte',
'The HTML TITLE element is the most important element on your web page.' => 'L\'élément HTML TITLE est le plus important dans votre page', 'The HTML TITLE element is the most important element on your web page.' => 'L\'élément HTML TITLE est le plus important dans votre page',
'The TaxEngine should be passed to this form before using it.' => 'Le moteur de taxe doit être passé au formulaire avant d\'être utilisé.', 'The TaxEngine should be passed to this form before using it.' => 'Le moteur de taxe doit être passé au formulaire avant d\'être utilisé.',
'The archive builder "%name" doesn\'t exist' => 'Le format d\'archive "%name" n\'existe pas',
'The brand name or title' => 'Le nom ou le titre de la marque', 'The brand name or title' => 'Le nom ou le titre de la marque',
'The cache directory "%env" is not writable' => 'Le dossier de cache "%env" n\'est pas accessible en écriture',
'The cache file %file is not readable' => 'Le fichier du cache %file n\'est pas accessible en lecture',
'The cart item count should match the condition' => 'Le nombre d\'articles dans le panier doit vérifier la condition', 'The cart item count should match the condition' => 'Le nombre d\'articles dans le panier doit vérifier la condition',
'The changes could on the Zip Archive not be commited' => 'Les modifications sur l\'archive ZIP n\'ont pu être enregistrées',
'The class "%class" doesn\'t exist' => 'La classe "%class" n\'existe pas',
'The class "%class" must be a subclass of %baseClass' => 'La classe "%class" doit hériter de %baseClass',
'The class "%class" must extend %baseClass' => 'La classe "%class" doit hériter de %baseClass',
'The column %column that you want to sort doesn\'t exist' => 'La colonne %column que vous voulez trier n\'existe pas',
'The coupon applies if the cart contains at least one product of the selected categories' => 'Le code promo est valable si le panier contient/ne contient pas des produits appartenant aux catégories sélectionnées', 'The coupon applies if the cart contains at least one product of the selected categories' => 'Le code promo est valable si le panier contient/ne contient pas des produits appartenant aux catégories sélectionnées',
'The coupon applies if the cart contains at least one product of the specified product list' => 'Le code promo est valable si le panier contient/ne contient pas au moins un des produits selectionnés', 'The coupon applies if the cart contains at least one product of the specified product list' => 'Le code promo est valable si le panier contient/ne contient pas au moins un des produits selectionnés',
'The coupon applies to some customers only' => 'Ce code promo est valable pour les clients sélectionnés', 'The coupon applies to some customers only' => 'Ce code promo est valable pour les clients sélectionnés',
@@ -308,9 +332,28 @@ return array(
'The coupon applies to the selected delivery countries' => 'Ce code promo s\'applique pour les pays de livraison sélectionnés', 'The coupon applies to the selected delivery countries' => 'Ce code promo s\'applique pour les pays de livraison sélectionnés',
'The coupon is valid after a given date' => 'Le code promo est valide à partir de cette date', 'The coupon is valid after a given date' => 'Le code promo est valide à partir de cette date',
'The detailed description.' => 'La description détaillée', 'The detailed description.' => 'La description détaillée',
'The directory %dir has not been created in the archive' => 'Le dossier %dir n\'a pu être créé dans l\'archive',
'The extension "%ext" is not allowed' => 'L\'extension "%ext" n\'est pas authorisé',
'The file %file has not been deleted' => 'Le fichier %file n\'a pas pu être supprimé',
'The file %file is missing or is not readable' => 'Le fichier %file est manquant ou non accessible en lecture',
'The file %file is not readable' => 'Le fichier %file n\'est pas accessible en lecture',
'The file %path has been successfully downloaded' => 'Le fichier %path a été téléchargé',
'The file name must be valid' => 'Le nom du fichier doit être valide',
'The filename is not correct' => 'Le nom du fichier n\'est pas valide',
'The following columns are missing: %columns' => 'Il manque les colonnes suivantes: %columns',
'The formatter "%name" doesn\'t exist' => 'Le formatteur "%name" n\'existe pas',
'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.' => 'L\'image qui remplace un drapeau de pays manquant (%file) n\'a pas été trouvée. Merci de vérifier la variable de configuration unknown-flag-path.', 'The image which replaces an undefined country flag (%file) was not found. Please check unknown-flag-path configuration variable, and check that the image exists.' => 'L\'image qui remplace un drapeau de pays manquant (%file) n\'a pas été trouvée. Merci de vérifier la variable de configuration unknown-flag-path.',
'The language "%id" doesn\'t exist' => 'L\'id de langue "%id" n\'existe pas',
'The loop "%loop" doesn\'t exist' => 'La loop "%loop" n\'existe pas',
'The loop name \'%name\' is already defined in %className class' => 'La boucle \'%name\' est déjà définir dans la classe %className', 'The loop name \'%name\' is already defined in %className class' => 'La boucle \'%name\' est déjà définir dans la classe %className',
'The method "%class"::buildDataSet must return an array or a ModelCriteria' => 'La méthode %class::buildDataSet doit retourner un array ou un ModelCriteria',
'The product sale element reference %ref doesn\'t exist' => 'La réference de déclinaision %ref n\'existe pas',
'There is no id "%id" in the export categories' => 'L\'id de catégorie d\'export "%id" n\'existe pas',
'There is no id "%id" in the exports' => 'L\'id d\'export "%id" n\'existe pas',
'There is no id "%id" in the import categories' => 'L\'id de catégorie d\'import "%id" n\'existe pas',
'There is no id "%id" in the imports' => 'L\'id d\'import "%id" n\'existe pas',
'There\'s a conflict between your file extension "%ext" and the mime type "%mime"' => 'Il y a un conflit entre l\'extension "%ext" et le type mome "%mime" ', 'There\'s a conflict between your file extension "%ext" and the mime type "%mime"' => 'Il y a un conflit entre l\'extension "%ext" et le type mome "%mime" ',
'There\'s a problem, the extension "%ext" has been found, but has no formatters nor archive builder' => 'Une erreur est survenue, l\'extension "%ext" a été reconnue, mais il n\'existe pas de formatteur ni de format d\'archive correspondant',
'This brand is online' => 'Cette marque est en ligne', 'This brand is online' => 'Cette marque est en ligne',
'This category is online.' => 'Cette catégorie est en ligne.', 'This category is online.' => 'Cette catégorie est en ligne.',
'This condition is always true' => 'Cette condition est troujours vérifiée', 'This condition is always true' => 'Cette condition est troujours vérifiée',
@@ -339,13 +382,16 @@ return array(
'Title' => 'Titre', 'Title' => 'Titre',
'Title *' => 'Titre *', 'Title *' => 'Titre *',
'Title ID not found' => 'ID de la civilité non trouvé', 'Title ID not found' => 'ID de la civilité non trouvé',
'Tried to download a file, but the URL was not valid: %url' => 'Le fichier n\'a pas été téléchargé, l\'url n\'est pas valide: %url',
'Type' => 'Type', 'Type' => 'Type',
'Unable to process your request. Please try again (%err).' => 'Echec lors du traitement de votre requête. Merci de ré-essayer (%err).', 'Unable to process your request. Please try again (%err).' => 'Echec lors du traitement de votre requête. Merci de ré-essayer (%err).',
'Unable to write the file %file into the archive' => 'Le fichier %file n\'a pas pu être ajouté à l\'archive',
'Unavailable' => 'Non disponible.', 'Unavailable' => 'Non disponible.',
'Unconditional usage' => 'Utilisable sans conditions', 'Unconditional usage' => 'Utilisable sans conditions',
'Unconditionnal usage' => 'Utilisable sans conditions', 'Unconditionnal usage' => 'Utilisable sans conditions',
'Undefined loop argument "%name"' => 'Argument de boucle invalide: "%name" ', 'Undefined loop argument "%name"' => 'Argument de boucle invalide: "%name" ',
'Undefined search mode \'%mode\'' => 'Mode de recherche \'%mode\' invalide', 'Undefined search mode \'%mode\'' => 'Mode de recherche \'%mode\' invalide',
'Unknown error while deleting the file %file' => 'Erreur inconnue pendant la suppression du fichier %file',
'Unknown order ID: %id' => 'La commande ID %id est inconnue.', 'Unknown order ID: %id' => 'La commande ID %id est inconnue.',
'Unsupported magic method %name. only getArgname() is supported.' => 'La méthode magique %name n\'est pas supportée. Seule get<argname>() est supporté..', 'Unsupported magic method %name. only getArgname() is supported.' => 'La méthode magique %name n\'est pas supportée. Seule get<argname>() est supporté..',
'Use the keyword phrase in your URL.' => 'Utilisez des mots clés dans votre URL', 'Use the keyword phrase in your URL.' => 'Utilisez des mots clés dans votre URL',
@@ -362,11 +408,17 @@ return array(
'Yes, I have a password :' => 'Oui, j\'ai un mot de passe :', 'Yes, I have a password :' => 'Oui, j\'ai un mot de passe :',
'You are already registered!' => 'Vous êtes déjà enregistré !', 'You are already registered!' => 'Vous êtes déjà enregistré !',
'You don\'t need to use commas or other punctuations.' => 'Vous n\'avez pas besoin d\'utiliser de virgules ou d\'autres signes de ponctuation', 'You don\'t need to use commas or other punctuations.' => 'Vous n\'avez pas besoin d\'utiliser de virgules ou d\'autres signes de ponctuation',
'You must define an environment when you use an archive builder' => 'Vous devez définir un environement quand vous utilisez avec constructeur d\'archive',
'You tried to load a bad formatted XML' => 'Vous avez essayé de charger un XML mal formatté',
'You\'ve submitted this form too many times. Further submissions will be ignored during %time' => 'Vous avez envoyer ce fomulaire un nombre trop important de fois. Les prochaines soumissions seront ignorées pendant %time', 'You\'ve submitted this form too many times. Further submissions will be ignored during %time' => 'Vous avez envoyer ce fomulaire un nombre trop important de fois. Les prochaines soumissions seront ignorées pendant %time',
'Your Email Address' => 'Votre adresse mail', 'Your Email Address' => 'Votre adresse mail',
'Your Message' => 'Votre message', 'Your Message' => 'Votre message',
'Your archive must contain one of these file and doesn\'t: %files' => 'Votre archive doit contenir un de ces fichiers mais ne l\'a pas: %files',
'Your current password does not match.' => 'Votre mot de passe actuel ne correspond pas', 'Your current password does not match.' => 'Votre mot de passe actuel ne correspond pas',
'Zip Error' => 'Erreur Zip',
'Zip code' => 'Code postal', 'Zip code' => 'Code postal',
'[%zip_head] ' => '[%zip_head] ',
'cURL errno %errno, http code %http_code on link "%path": %error' => 'Erreur cURL numero %errno, code HTTP %http_code pour le lien "%path": %error',
'date format' => 'Format de date', 'date format' => 'Format de date',
'decimal separator' => 'Séparateur décimal', 'decimal separator' => 'Séparateur décimal',
'delivery module %s is not a Thelia\Module\DeliveryModuleInterface' => 'le module de livraison %s n\'est pas un Thelia\Module\DeliveryModuleInterface', 'delivery module %s is not a Thelia\Module\DeliveryModuleInterface' => 'le module de livraison %s n\'est pas un Thelia\Module\DeliveryModuleInterface',

View File

@@ -17,11 +17,14 @@
<title locale="en_US">Content</title> <title locale="en_US">Content</title>
<title locale="fr_FR">Contenu</title> <title locale="fr_FR">Contenu</title>
</export_category> </export_category>
<export_category id="thelia.export.orders"> <export_category id="thelia.export.orders">
<title locale="en_US">Orders</title> <title locale="en_US">Orders</title>
<title locale="fr_FR">Commandes</title> <title locale="fr_FR">Commandes</title>
</export_category> </export_category>
<export_category id="thelia.export.modules">
<title locale="en_US">Modules</title>
<title locale="fr_FR">Modules</title>
</export_category>
</export_categories> </export_categories>
<exports> <exports>

View File

@@ -8,6 +8,10 @@
<title locale="fr_FR">Produits</title> <title locale="fr_FR">Produits</title>
<title locale="en_US">Products</title> <title locale="en_US">Products</title>
</import_category> </import_category>
<import_category id="thelia.import.modules">
<title locale="en_US">Modules</title>
<title locale="fr_FR">Modules</title>
</import_category>
</import_categories> </import_categories>
<imports> <imports>

View File

@@ -65,7 +65,7 @@ class ExportController extends BaseAdminController
public function export($id) public function export($id)
{ {
if (null === $export = $this->getExport($id)) { if (null === $export = $this->getExport($id)) {
return $this->render("404"); return $this->pageNotFound();
} }
/** /**
@@ -281,7 +281,7 @@ class ExportController extends BaseAdminController
public function exportView($id) public function exportView($id)
{ {
if (null === $export = $this->getExport($id)) { if (null === $export = $this->getExport($id)) {
return $this->render("404"); return $this->pageNotFound();
} }
/** /**

View File

@@ -65,7 +65,7 @@ class ImportController extends BaseAdminController
public function import($id) public function import($id)
{ {
if (null === $import = $this->getImport($id)) { if (null === $import = $this->getImport($id)) {
return $this->render("404"); return $this->pageNotFound();
} }
$archiveBuilderManager = $this->getArchiveBuilderManager($this->container); $archiveBuilderManager = $this->getArchiveBuilderManager($this->container);
@@ -130,8 +130,7 @@ class ImportController extends BaseAdminController
} else { } else {
throw new \ErrorException( throw new \ErrorException(
$this->getTranslator()->trans( $this->getTranslator()->trans(
"There's a problem, the extension \"%ext\" has been found, ". "There's a problem, the extension \"%ext\" has been found, but has no formatters nor archive builder",
"but has no formatters nor archive builder",
[ [
"%ext" => $tools["extension"], "%ext" => $tools["extension"],
] ]
@@ -340,7 +339,7 @@ class ImportController extends BaseAdminController
public function importView($id) public function importView($id)
{ {
if (null === $import = $this->getImport($id)) { if (null === $import = $this->getImport($id)) {
return $this->render("404"); return $this->pageNotFound();
} }
/** /**
@@ -444,6 +443,8 @@ class ImportController extends BaseAdminController
$event = new UpdatePositionEvent($id, $this->getMode($mode), $value); $event = new UpdatePositionEvent($id, $this->getMode($mode), $value);
$this->dispatch(TheliaEvents::IMPORT_CHANGE_POSITION, $event); $this->dispatch(TheliaEvents::IMPORT_CHANGE_POSITION, $event);
return $this->render('import');
} }
public function changeCategoryPosition() public function changeCategoryPosition()

View File

@@ -91,13 +91,13 @@ class XmlFileLoader extends FileLoader
); );
$this->propelOnlyRun( $this->propelOnlyRun(
[$this, "parseExportCategories"], [$this, "parseImportCategories"],
$xml, $xml,
ImportCategoryTableMap::DATABASE_NAME ImportCategoryTableMap::DATABASE_NAME
); );
$this->propelOnlyRun( $this->propelOnlyRun(
[$this, "parseExports"], [$this, "parseImports"],
$xml, $xml,
ImportTableMap::DATABASE_NAME ImportTableMap::DATABASE_NAME
); );

View File

@@ -91,4 +91,10 @@ class Export extends BaseExport
return true; return true;
} }
public function addCriteriaToPositionQuery($query)
{
$query->filterByExportCategoryId($this->getExportCategoryId());
}
} }

View File

@@ -2,6 +2,7 @@
namespace Thelia\Model; namespace Thelia\Model;
use Propel\Runtime\Connection\ConnectionInterface;
use Thelia\Model\Base\ExportCategory as BaseExportCategory; use Thelia\Model\Base\ExportCategory as BaseExportCategory;
use Thelia\Model\Tools\ModelEventDispatcherTrait; use Thelia\Model\Tools\ModelEventDispatcherTrait;
use Thelia\Model\Tools\PositionManagementTrait; use Thelia\Model\Tools\PositionManagementTrait;
@@ -10,4 +11,14 @@ class ExportCategory extends BaseExportCategory
{ {
use PositionManagementTrait; use PositionManagementTrait;
use ModelEventDispatcherTrait; use ModelEventDispatcherTrait;
/**
* {@inheritDoc}
*/
public function preInsert(ConnectionInterface $con = null)
{
$this->setPosition($this->getNextPosition());
return true;
}
} }

View File

@@ -3,6 +3,7 @@
namespace Thelia\Model; namespace Thelia\Model;
use Exception; use Exception;
use Propel\Runtime\Connection\ConnectionInterface;
use Propel\Runtime\Exception\ClassNotFoundException; use Propel\Runtime\Exception\ClassNotFoundException;
use Propel\Runtime\Propel; use Propel\Runtime\Propel;
use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -57,4 +58,19 @@ class Import extends BaseImport
return $instance; return $instance;
} }
/**
* {@inheritDoc}
*/
public function preInsert(ConnectionInterface $con = null)
{
$this->setPosition($this->getNextPosition());
return true;
}
public function addCriteriaToPositionQuery($query)
{
$query->filterByImportCategoryId($this->getImportCategoryId());
}
} }

View File

@@ -2,6 +2,7 @@
namespace Thelia\Model; namespace Thelia\Model;
use Propel\Runtime\Connection\ConnectionInterface;
use Thelia\Model\Base\ImportCategory as BaseImportCategory; use Thelia\Model\Base\ImportCategory as BaseImportCategory;
use Thelia\Model\Tools\ModelEventDispatcherTrait; use Thelia\Model\Tools\ModelEventDispatcherTrait;
use Thelia\Model\Tools\PositionManagementTrait; use Thelia\Model\Tools\PositionManagementTrait;
@@ -10,4 +11,14 @@ class ImportCategory extends BaseImportCategory
{ {
use PositionManagementTrait; use PositionManagementTrait;
use ModelEventDispatcherTrait; use ModelEventDispatcherTrait;
/**
* {@inheritDoc}
*/
public function preInsert(ConnectionInterface $con = null)
{
$this->setPosition($this->getNextPosition());
return true;
}
} }

View File

@@ -218,7 +218,6 @@ return array(
'Current quantity' => 'Current quantity', 'Current quantity' => 'Current quantity',
'Current version' => 'Current version', 'Current version' => 'Current version',
'Customer' => 'Customer', 'Customer' => 'Customer',
'Customer export' => 'Customer export',
'Customer information' => 'Customer information', 'Customer information' => 'Customer information',
'Customer informations' => 'Customer information', 'Customer informations' => 'Customer information',
'Customer is' => 'Customer is', 'Customer is' => 'Customer is',
@@ -299,6 +298,8 @@ return array(
'Discount amount' => 'Discount amount', 'Discount amount' => 'Discount amount',
'Discount percentage' => 'Discount percentage', 'Discount percentage' => 'Discount percentage',
'Do not use a product template' => 'Do not use a product template', 'Do not use a product template' => 'Do not use a product template',
'Do this export' => 'Do this export',
'Do this import' => 'Do this import',
'Do you really want to add this attribute to all product templates ?' => 'Do you really want to add this attribute to all product templates ?', 'Do you really want to add this attribute to all product templates ?' => 'Do you really want to add this attribute to all product templates ?',
'Do you really want to add this feature to all product templates ?' => 'Do you really want to add this feature to all product templates ?', 'Do you really want to add this feature to all product templates ?' => 'Do you really want to add this feature to all product templates ?',
'Do you really want to cancel this order ?' => 'Do you really want to cancel this order ?', 'Do you really want to cancel this order ?' => 'Do you really want to cancel this order ?',
@@ -473,8 +474,12 @@ return array(
'Enter new category position' => 'Enter new category position', 'Enter new category position' => 'Enter new category position',
'Enter new content position' => 'Enter new content position', 'Enter new content position' => 'Enter new content position',
'Enter new currency position' => 'Enter new currency position', 'Enter new currency position' => 'Enter new currency position',
'Enter new export category position' => 'Enter new export category position',
'Enter new export position' => 'Enter new export position',
'Enter new feature position' => 'Enter new feature position', 'Enter new feature position' => 'Enter new feature position',
'Enter new folder position' => 'Enter new folder position', 'Enter new folder position' => 'Enter new folder position',
'Enter new import category position' => 'Enter new import category position',
'Enter new import position' => 'Enter new import position',
'Enter new module position' => 'Enter new module position', 'Enter new module position' => 'Enter new module position',
'Enter new product position' => 'Enter new product position', 'Enter new product position' => 'Enter new product position',
'Enter new value position' => 'Enter new value position', 'Enter new value position' => 'Enter new value position',
@@ -548,6 +553,9 @@ return array(
'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.' => 'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.', 'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.' => 'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.',
'Image information' => 'Image information', 'Image information' => 'Image information',
'Images' => 'Images', 'Images' => 'Images',
'Import' => 'Import',
'Import this file' => 'Import this file',
'Imports' => 'Imports',
'Impossible to change default country. Please contact your administrator or try later' => 'Impossible to change default country. Please contact your administrator or try later', 'Impossible to change default country. Please contact your administrator or try later' => 'Impossible to change default country. Please contact your administrator or try later',
'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible to change default languages. Please contact your administrator or try later', 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible to change default languages. Please contact your administrator or try later',
'In order to manges your shop taxes you can manage' => 'In order to manges your shop taxes you can manage', 'In order to manges your shop taxes you can manage' => 'In order to manges your shop taxes you can manage',
@@ -1000,6 +1008,9 @@ return array(
'You can change the default folder (%title) in the "General" tab.' => 'You can change the default folder (%title) in the "General" tab.', 'You can change the default folder (%title) in the "General" tab.' => 'You can change the default folder (%title) in the "General" tab.',
'You can\'t delete this administrator' => 'You can\'t delete this administrator', 'You can\'t delete this administrator' => 'You can\'t delete this administrator',
'You can\'t delete this profile' => 'You can\'t delete this profile', 'You can\'t delete this profile' => 'You can\'t delete this profile',
'You can\'t do exports, you don\'t have any formatter that handles this.' => 'You can\'t do exports, you don\'t have any formatter that handles this.',
'You don\'t have any export' => 'You don\'t have any export',
'You don\'t have any import' => 'You don\'t have any import',
'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.', 'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.',
'Your current IP address is %ip' => 'Your current IP address is %ip', 'Your current IP address is %ip' => 'Your current IP address is %ip',
'Zip code' => 'Zip code', 'Zip code' => 'Zip code',
@@ -1023,7 +1034,6 @@ return array(
'hour in hh:mm:ss format' => 'hour in hh:mm:ss format', 'hour in hh:mm:ss format' => 'hour in hh:mm:ss format',
'last order' => 'last order', 'last order' => 'last order',
'long description' => 'long description', 'long description' => 'long description',
'newsletter subscribers' => 'newsletter subscribers',
'order amount' => 'order amount', 'order amount' => 'order amount',
'orders for this customer' => 'orders for this customer', 'orders for this customer' => 'orders for this customer',
'permanent discount' => 'permanent discount (in percent)', 'permanent discount' => 'permanent discount (in percent)',

View File

@@ -218,7 +218,6 @@ return array(
'Current quantity' => 'Quantité actuelle', 'Current quantity' => 'Quantité actuelle',
'Current version' => 'Version en cours', 'Current version' => 'Version en cours',
'Customer' => 'Client', 'Customer' => 'Client',
'Customer export' => 'Export client',
'Customer information' => 'Information client', 'Customer information' => 'Information client',
'Customer informations' => 'Informations client', 'Customer informations' => 'Informations client',
'Customer is' => 'Le client', 'Customer is' => 'Le client',
@@ -299,6 +298,8 @@ return array(
'Discount amount' => 'Montant de réduction', 'Discount amount' => 'Montant de réduction',
'Discount percentage' => 'Pourcentage de remise', 'Discount percentage' => 'Pourcentage de remise',
'Do not use a product template' => 'Ne pas utiliser de gabarit', 'Do not use a product template' => 'Ne pas utiliser de gabarit',
'Do this export' => 'Exporter',
'Do this import' => 'Importer',
'Do you really want to add this attribute to all product templates ?' => 'Voulez-vous vraiment ajouter cette déclinaison de tous les gabarits de produit ?', 'Do you really want to add this attribute to all product templates ?' => 'Voulez-vous vraiment ajouter cette déclinaison de tous les gabarits de produit ?',
'Do you really want to add this feature to all product templates ?' => 'Voulez-vous vraiment ajouter cette caractéristique à tous les gabarits de produit ?', 'Do you really want to add this feature to all product templates ?' => 'Voulez-vous vraiment ajouter cette caractéristique à tous les gabarits de produit ?',
'Do you really want to cancel this order ?' => 'Voulez-vous vraiment supprimer cette commande ?', 'Do you really want to cancel this order ?' => 'Voulez-vous vraiment supprimer cette commande ?',
@@ -473,8 +474,12 @@ return array(
'Enter new category position' => 'Classement de la catégorie', 'Enter new category position' => 'Classement de la catégorie',
'Enter new content position' => 'Modifier la position du contenu', 'Enter new content position' => 'Modifier la position du contenu',
'Enter new currency position' => 'Modifier la position de la devise', 'Enter new currency position' => 'Modifier la position de la devise',
'Enter new export category position' => 'Renseigner la nouvelle position pour cet catégorie d\'export',
'Enter new export position' => 'Renseigner la nouvelle position pour cet export',
'Enter new feature position' => 'Modifier la position de la caractéristique', 'Enter new feature position' => 'Modifier la position de la caractéristique',
'Enter new folder position' => 'Modifier la position du dossier', 'Enter new folder position' => 'Modifier la position du dossier',
'Enter new import category position' => 'Renseigner la nouvelle position pour cet catégorie d\'import',
'Enter new import position' => 'Renseigner la nouvelle position pour cet import',
'Enter new module position' => 'Renseigner la nouvelle position pour ce module', 'Enter new module position' => 'Renseigner la nouvelle position pour ce module',
'Enter new product position' => 'Classement du produit', 'Enter new product position' => 'Classement du produit',
'Enter new value position' => 'Entrez une nouvelle position', 'Enter new value position' => 'Entrez une nouvelle position',
@@ -548,6 +553,9 @@ return array(
'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.' => 'La chaîne semble contient une variable smarty (&#36;). Si c\'est le cas elle ne peut pas être traduite correctement', 'Il seems that this string contains a Smarty variable (&#36;). If \'s the case, it cannot be transleted properly.' => 'La chaîne semble contient une variable smarty (&#36;). Si c\'est le cas elle ne peut pas être traduite correctement',
'Image information' => 'Information de l\'image', 'Image information' => 'Information de l\'image',
'Images' => 'Images', 'Images' => 'Images',
'Import' => 'Import',
'Import this file' => 'Importer ce fichier',
'Imports' => 'Imports',
'Impossible to change default country. Please contact your administrator or try later' => 'Impossible de modifier le pays par défaut. Veuillez contacter votre administrateur ou réessayer plus tard', 'Impossible to change default country. Please contact your administrator or try later' => 'Impossible de modifier le pays par défaut. Veuillez contacter votre administrateur ou réessayer plus tard',
'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de modifier la langue par défaut. Veuillez contacter votre administrateur ou essayer plus tard', 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible de modifier la langue par défaut. Veuillez contacter votre administrateur ou essayer plus tard',
'In order to manges your shop taxes you can manage' => 'Pour pouvoir gérer les taxes de votre magasin vous pouvez gérer', 'In order to manges your shop taxes you can manage' => 'Pour pouvoir gérer les taxes de votre magasin vous pouvez gérer',
@@ -1000,6 +1008,9 @@ return array(
'You can change the default folder (%title) in the "General" tab.' => 'Vous pouvez modifier le dossier par défaut (%title) dans l\'onglet "Général".', 'You can change the default folder (%title) in the "General" tab.' => 'Vous pouvez modifier le dossier par défaut (%title) dans l\'onglet "Général".',
'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur', 'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur',
'You can\'t delete this profile' => 'Vous ne pouvez pas supprimer ce profil', 'You can\'t delete this profile' => 'Vous ne pouvez pas supprimer ce profil',
'You can\'t do exports, you don\'t have any formatter that handles this.' => 'Cet export n\'est pas faisable, vousd n\'avez aucun formatteur pouvant le gérer',
'You don\'t have any export' => 'Vous n\'avez aucun export',
'You don\'t have any import' => 'Vous n\'avez aucun import',
'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'Vous pouvez aussi créer rapidement une série de combinaisons avec <a href="%url" data-toggle="modal">le gestionnaire de combinaisons</a>.', 'You may also quickly create combinations from products attributes using the <a href="%url" data-toggle="modal">Combination Builder</a>.' => 'Vous pouvez aussi créer rapidement une série de combinaisons avec <a href="%url" data-toggle="modal">le gestionnaire de combinaisons</a>.',
'Your current IP address is %ip' => 'Votre adresse IP est %ip', 'Your current IP address is %ip' => 'Votre adresse IP est %ip',
'Zip code' => 'Code postal', 'Zip code' => 'Code postal',
@@ -1023,7 +1034,6 @@ return array(
'hour in hh:mm:ss format' => 'hour in hh:mm:ss format', 'hour in hh:mm:ss format' => 'hour in hh:mm:ss format',
'last order' => 'Dernière commande', 'last order' => 'Dernière commande',
'long description' => 'description longue', 'long description' => 'description longue',
'newsletter subscribers' => 'Inscrits à la newsletter',
'order amount' => 'Montant de la commande', 'order amount' => 'Montant de la commande',
'orders for this customer' => 'commandes pour ce client', 'orders for this customer' => 'commandes pour ce client',
'permanent discount' => 'Remise permanente (en pourcentage)', 'permanent discount' => 'Remise permanente (en pourcentage)',

View File

@@ -1,3 +1,6 @@
{* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *}
{default_translation_domain domain='bo.default'}
{form name="thelia.export"} {form name="thelia.export"}
<form action="{$URL}" method="post" {form_enctype form=$form}> <form action="{$URL}" method="post" {form_enctype form=$form}>
{form_hidden_fields form=$form} {form_hidden_fields form=$form}

View File

@@ -1,3 +1,6 @@
{* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *}
{default_translation_domain domain='bo.default'}
{form name="thelia.import"} {form name="thelia.import"}
<form action="{$URL}" method="post" {form_enctype form=$form}> <form action="{$URL}" method="post" {form_enctype form=$form}>
{form_hidden_fields form=$form} {form_hidden_fields form=$form}

View File

@@ -34,103 +34,105 @@
{module_include location='tools_top'} {module_include location='tools_top'}
{loop name="export-category" type="export-category" order=$category_order} {loop name="export-category" type="export-category" order=$category_order}
{assign category_title $TITLE} {ifloop rel="export-categ-list"}
<div class="row"> {assign category_title $TITLE}
<div class="col-md-12"> <div class="row">
<div class="general-block-decorator"> <div class="col-md-12">
<div class="table-responsive"> <div class="general-block-decorator">
<table class="table table-striped table-condensed table-left-aligned"> <div class="table-responsive">
<caption class="clearfix"> <table class="table table-striped table-condensed table-left-aligned">
{admin_position_block <caption class="clearfix">
resource="admin.export" {admin_position_block
access="UPDATE" resource="admin.export"
path={url path="admin/export/position/category"} access="UPDATE"
url_parameter="id" path={url path="admin/export/position/category"}
in_place_edit_class="exportCategoryPositionChange" url_parameter="id"
position=$POSITION in_place_edit_class="exportCategoryPositionChange"
id=$ID position=$POSITION
} id=$ID
{$TITLE} }
</caption> {$TITLE}
<thead> </caption>
<tr> <thead>
<th class="col-md-1">
{if $export_order == "id"}
<i class="glyphicon glyphicon-chevron-up"></i>
{elseif $export_order == "id_reverse"}
<i class="glyphicon glyphicon-chevron-down"></i>
{/if}
<a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=id{if $export_order == "id"}_reverse{/if}#category_{$category_title}">
{intl l="ID"}
</a>
</th>
<th class="col-md-2">
{if $export_order == "alpha"}
<i class="glyphicon glyphicon-chevron-up"></i>
{elseif $export_order == "alpha_reverse"}
<i class="glyphicon glyphicon-chevron-down"></i>
{/if}
<a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=alpha{if $export_order == "alpha"}_reverse{/if}#category_{$category_title}">
{intl l="Name"}
</a>
</th>
<th class="col-md-6">
{intl l="Description"}
</th>
<th class="col-md-2">
{if $export_order == "manual"}
<i class="glyphicon glyphicon-chevron-up"></i>
{elseif $export_order == "manual_reverse"}
<i class="glyphicon glyphicon-chevron-down"></i>
{/if}
<a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=manual{if $export_order == "manual"}_reverse{/if}#category_{$category_title}">
{intl l="Position"}
</a>
</th>
<th class="col-md-1">
{intl l="Actions"}
</th>
</tr>
</thead>
<tbody>
{loop name="export-categ-list" type="export" order=$export_order category=$ID}
<tr> <tr>
<td> <th class="col-md-1">
{$ID} {if $export_order == "id"}
</td> <i class="glyphicon glyphicon-chevron-up"></i>
<td> {elseif $export_order == "id_reverse"}
<a href="#category_{$category_title}" class="btn-show-export-modal" data-id="{$ID}" data-url="{$URL}">{$TITLE}</a> <i class="glyphicon glyphicon-chevron-down"></i>
</td> {/if}
<td> <a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=id{if $export_order == "id"}_reverse{/if}#category_{$category_title}">
{$DESCRIPTION nofilter} {intl l="ID"}
</td> </a>
<td> </th>
{admin_position_block <th class="col-md-2">
resource="admin.export" {if $export_order == "alpha"}
access="UPDATE" <i class="glyphicon glyphicon-chevron-up"></i>
path={url path="admin/export/position"} {elseif $export_order == "alpha_reverse"}
url_parameter="id" <i class="glyphicon glyphicon-chevron-down"></i>
in_place_edit_class="exportPositionChange" {/if}
position=$POSITION <a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=alpha{if $export_order == "alpha"}_reverse{/if}#category_{$category_title}">
id=$ID {intl l="Name"}
} </a>
</td> </th>
<td> <th class="col-md-6">
<div class="btn-group"> {intl l="Description"}
<a class="btn btn-default btn-xs btn-show-export-modal" data-id="{$ID}" data-url="{$URL}" title="{intl l="Do this export"}"> </th>
<span class="glyphicon glyphicon-open"></span> <th class="col-md-2">
</a> {if $export_order == "manual"}
</div> <i class="glyphicon glyphicon-chevron-up"></i>
</td> {elseif $export_order == "manual_reverse"}
<i class="glyphicon glyphicon-chevron-down"></i>
{/if}
<a href="{url path="/admin/export"}?{if $url_category}{$url_category}&{/if}export_order=manual{if $export_order == "manual"}_reverse{/if}#category_{$category_title}">
{intl l="Position"}
</a>
</th>
<th class="col-md-1">
{intl l="Actions"}
</th>
</tr> </tr>
{/loop} </thead>
</tbody> <tbody>
</table> {loop name="export-categ-list" type="export" order=$export_order category=$ID}
<tr>
<td>
{$ID}
</td>
<td>
<a href="#category_{$category_title}" class="btn-show-export-modal" data-id="{$ID}" data-url="{$URL}">{$TITLE}</a>
</td>
<td>
{$DESCRIPTION nofilter}
</td>
<td>
{admin_position_block
resource="admin.export"
access="UPDATE"
path={url path="admin/export/position"}
url_parameter="id"
in_place_edit_class="exportPositionChange"
position=$POSITION
id=$ID
}
</td>
<td>
<div class="btn-group">
<a class="btn btn-default btn-xs btn-show-export-modal" data-id="{$ID}" data-url="{$URL}" title="{intl l="Do this export"}">
<span class="glyphicon glyphicon-open"></span>
</a>
</div>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div> </div>
</div> </div>
</div>
</div> </div>
{/ifloop}
{/loop} {/loop}
{elseloop rel="export-category"} {elseloop rel="export-category"}

View File

@@ -34,78 +34,84 @@
{module_include location='tools_top'} {module_include location='tools_top'}
{loop name="import-category" type="import-category" order=$category_order} {loop name="import-category" type="import-category" order=$category_order}
{assign category_title $TITLE} {ifloop rel="import-categ-list"}
<div class="row"> {assign category_title $TITLE}
<div class="col-md-12"> <div class="row">
<div class="general-block-decorator"> <div class="col-md-12">
<div class="table-responsive"> <div class="general-block-decorator">
<table class="table table-striped table-condensed table-left-aligned"> <div class="table-responsive">
<caption class="clearfix"> <table class="table table-striped table-condensed table-left-aligned">
<a href="{url path="/admin/import/position/category/up/{$ID}{if $url_import}?{$url_import}{/if}"}"> <caption class="clearfix">
<span class="glyphicon glyphicon-arrow-up"></span> {admin_position_block
</a> resource="admin.import"
{$POSITION} access="UPDATE"
<a href="{url path="/admin/import/position/category/down/{$ID}{if $url_import}?{$url_import}{/if}"}"> path={url path="admin/import/position/category"}
<span class="glyphicon glyphicon-arrow-down"></span> url_parameter="id"
</a> in_place_edit_class="importCategoryPositionChange"
{$TITLE} position=$POSITION
</caption> id=$ID
<thead> }
<tr> {$TITLE}
<th class="col-md-1"> </caption>
<a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=id{if $import_order == "id"}_reverse{/if}"> <thead>
{intl l="ID"} <tr>
</a> <th class="col-md-1">
</th> <a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=id{if $import_order == "id"}_reverse{/if}">
<th class="col-md-8"> {intl l="ID"}
<a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=alpha{if $import_order == "alpha"}_reverse{/if}">
{intl l="Name"}
</a>
</th>
<th class="col-md-2">
<a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=manual{if $import_order == "manual"}_reverse{/if}">
{intl l="Position"}
</a>
</th>
<th class="col-md-1">
{intl l="Actions"}
</th>
</tr>
</thead>
<tbody>
{loop name="import-categ-list" type="import" order=$import_order category=$ID}
<tr>
<td>
{$ID}
</td>
<td>
<a href="#category_{$category_title}" class="btn-show-import-modal" data-id="{$ID}" data-url="{$URL}">{$TITLE}</a>
</td>
<td>
<a href="{url path="/admin/import/position/up/{if $url_category}?{$url_category}{/if}{$ID}"}">
<span class="glyphicon glyphicon-arrow-up"></span>
</a>
{$POSITION}
<a href="{url path="/admin/import/position/down/{$ID}{if $url_category}?{$url_category}{/if}"}">
<span class="glyphicon glyphicon-arrow-down"></span>
</a>
</td>
<td>
<div class="btn-group">
<a class="btn btn-default btn-xs btn-show-import-modal" href="#category_{$category_title}" data-id="{$ID}" data-url="{$URL}" title="{intl l="Do this import"}">
<span class="glyphicon glyphicon-open"></span>
</a> </a>
</div> </th>
</td> <th class="col-md-8">
</tr> <a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=alpha{if $import_order == "alpha"}_reverse{/if}">
{/loop} {intl l="Name"}
</tbody> </a>
</table> </th>
<th class="col-md-2">
<a href="{url path="/admin/import"}?{if $url_category}{$url_category}&{/if}import_order=manual{if $import_order == "manual"}_reverse{/if}">
{intl l="Position"}
</a>
</th>
<th class="col-md-1">
{intl l="Actions"}
</th>
</tr>
</thead>
<tbody>
{loop name="import-categ-list" type="import" order=$import_order category=$ID}
<tr>
<td>
{$ID}
</td>
<td>
<a href="#category_{$category_title}" class="btn-show-import-modal" data-id="{$ID}" data-url="{$URL}">{$TITLE}</a>
</td>
<td>
{admin_position_block
resource="admin.import"
access="UPDATE"
path={url path="admin/import/position"}
url_parameter="id"
in_place_edit_class="importPositionChange"
position=$POSITION
id=$ID
}
</td>
<td>
<div class="btn-group">
<a class="btn btn-default btn-xs btn-show-import-modal" href="#category_{$category_title}" data-id="{$ID}" data-url="{$URL}" title="{intl l="Do this import"}">
<span class="glyphicon glyphicon-open"></span>
</a>
</div>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div> </div>
</div> </div>
</div>
</div> </div>
{/ifloop}
{/loop} {/loop}
{elseloop rel="import-category"} {elseloop rel="import-category"}
@@ -119,9 +125,56 @@
</div> </div>
{/block} {/block}
{block name="javascript-initialization"}
{javascripts file='assets/js/bootstrap-editable/bootstrap-editable.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{/block}
{block name="javascript-last-call"} {block name="javascript-last-call"}
<script> <script>
$(document).ready(function() { $(document).ready(function() {
$('.importPositionChange').editable({
type : 'text',
title : "{intl l="Enter new import position"}",
mode : 'popup',
inputclass : 'input-mini',
placement : 'left',
success : function(response, newValue) {
// The URL template
var url = "{url noamp='1' path='/admin/import/position' id='__ID__' value='__POS__'}";
// Perform subtitutions
url = url.replace('__ID__', $(this).data('id'))
.replace('__POS__', newValue);
// Reload the page
location.href = url;
}
});
$('.importCategoryPositionChange').editable({
type : 'text',
title : "{intl l="Enter new import category position"}",
mode : 'popup',
inputclass : 'input-mini',
placement : 'left',
success : function(response, newValue) {
// The URL template
var url = "{url noamp='1' path='/admin/import/position/category' id='__ID__' value='__POS__'}";
// Perform subtitutions
url = url.replace('__ID__', $(this).data('id'))
.replace('__POS__', newValue);
// Reload the page
location.href = url;
}
});
var import_modal = $("#import-modal"); var import_modal = $("#import-modal");
$(".btn-show-import-modal").click(function() { $(".btn-show-import-modal").click(function() {