From 75007cc6c5e2cc8f64a689867da02a7ae6866093 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 10:34:57 +0100 Subject: [PATCH 01/10] don't save order untill it's not the payment method --- core/lib/Thelia/Action/Coupon.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 84c1d444b..8883cb27c 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -130,7 +130,8 @@ class Coupon extends BaseAction implements EventSubscriberInterface ->getSession() ->getOrder() ->setDiscount($totalDiscount) - ->save(); + // ->save() + ; } } From 149a943a0e399fcf56f4ef2f446285f82d185180 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 11:20:57 +0100 Subject: [PATCH 02/10] don't save the currentCoupons in a property. Retrieve them from the session --- core/lib/Thelia/Coupon/CouponManager.php | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 22488559e..83cfffb52 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -43,9 +43,6 @@ class CouponManager /** @var ContainerInterface Service Container */ protected $container = null; - /** @var array CouponInterface to process*/ - protected $coupons = array(); - /** @var array Available Coupons (Services) */ protected $availableCoupons = array(); @@ -61,7 +58,6 @@ class CouponManager { $this->container = $container; $this->facade = $container->get('thelia.facade'); - $this->coupons = $this->facade->getCurrentCoupons(); } @@ -74,9 +70,9 @@ class CouponManager public function getDiscount() { $discount = 0.00; - - if (count($this->coupons) > 0) { - $couponsKept = $this->sortCoupons($this->coupons); + $coupons = $this->facade->getCurrentCoupons(); + if (count($coupons) > 0) { + $couponsKept = $this->sortCoupons($coupons); $discount = $this->getEffect($couponsKept); @@ -96,11 +92,12 @@ class CouponManager */ public function isCouponRemovingPostage() { - if (count($this->coupons) == 0) { + $coupons = $this->facade->getCurrentCoupons(); + if (count($coupons) == 0) { return false; } - $couponsKept = $this->sortCoupons($this->coupons); + $couponsKept = $this->sortCoupons($coupons); /** @var CouponInterface $coupon */ foreach ($couponsKept as $coupon) { From ab0fbb6e27dc9656ed97458a066c9db3883545ca Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 11:37:12 +0100 Subject: [PATCH 03/10] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73cabe7f4..db77a175c 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ - when a category is deleted, all subcategories are deleted - delete products when categories are removed. Works only when the category is the default one for this product - Manager update exists now. +- Coupon works now #2.0.0-beta2 From 9d0121f32162f0449155ea06fff3c7169c3864a9 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 11:41:55 +0100 Subject: [PATCH 04/10] fix cs --- core/lib/Thelia/Action/Cart.php | 8 ++-- core/lib/Thelia/Action/Coupon.php | 4 +- core/lib/Thelia/Action/Order.php | 1 - core/lib/Thelia/Command/UpdateCommand.php | 6 +-- .../Thelia/Condition/ConditionCollection.php | 3 +- .../Thelia/Condition/ConditionEvaluator.php | 4 +- .../lib/Thelia/Condition/ConditionFactory.php | 7 +-- .../Thelia/Condition/ConditionOrganizer.php | 2 +- .../Condition/ConditionOrganizerInterface.php | 2 +- .../Implementation/ConditionAbstract.php | 6 +-- .../Implementation/ConditionInterface.php | 4 +- .../Implementation/MatchForEveryone.php | 3 +- .../Implementation/MatchForTotalAmount.php | 5 +- .../Implementation/MatchForXArticles.php | 1 + core/lib/Thelia/Condition/Operators.php | 2 +- .../Controller/Admin/CouponController.php | 2 +- .../Coupon/CouponCreateOrUpdateEvent.php | 8 ++-- .../Template/Assets/AssetManagerInterface.php | 25 +++++----- .../Template/Assets/AsseticAssetManager.php | 47 +++++++++---------- core/lib/Thelia/Core/Template/Loop/Cart.php | 1 - .../Thelia/Core/Template/Loop/OrderCoupon.php | 3 -- .../lib/Thelia/Core/Template/Loop/Product.php | 1 - .../Template/Loop/ProductSaleElements.php | 1 - .../Thelia/Core/Template/Loop/Template.php | 10 +--- .../Thelia/Core/Template/ParserInterface.php | 15 +++--- .../Smarty/Assets/SmartyAssetsManager.php | 13 +++-- .../Core/Template/Smarty/SmartyParser.php | 40 +++++++--------- .../Core/Template/TemplateDefinition.php | 21 ++++++--- .../Thelia/Core/Template/TemplateHelper.php | 13 ++--- core/lib/Thelia/Core/Thelia.php | 29 ++++++------ core/lib/Thelia/Coupon/BaseFacade.php | 7 +-- core/lib/Thelia/Coupon/CouponFactory.php | 4 +- core/lib/Thelia/Coupon/CouponManager.php | 5 +- core/lib/Thelia/Coupon/FacadeInterface.php | 6 +-- .../lib/Thelia/Coupon/Type/CouponAbstract.php | 15 ++---- .../Thelia/Coupon/Type/CouponInterface.php | 10 ++-- .../lib/Thelia/Coupon/Type/RemoveXPercent.php | 9 ++-- .../Form/MailingSystemModificationForm.php | 1 - core/lib/Thelia/Install/BaseInstall.php | 3 +- .../Install/CheckDatabaseConnection.php | 4 -- core/lib/Thelia/Install/CheckPermission.php | 10 +--- core/lib/Thelia/Install/Database.php | 3 +- .../Exception/AlreadyInstallException.php | 3 +- .../Install/Exception/InstallException.php | 2 +- .../Install/Exception/UpToDateException.php | 3 +- core/lib/Thelia/Install/Update.php | 9 ++-- core/lib/Thelia/Mailer/MailerFactory.php | 10 ++-- .../Thelia/Rewriting/RewritingResolver.php | 15 ++---- .../Thelia/Rewriting/RewritingRetriever.php | 17 ++++--- core/lib/Thelia/TaxEngine/Calculator.php | 47 +++++++++---------- core/lib/Thelia/TaxEngine/TaxEngine.php | 14 +++--- .../Thelia/TaxEngine/TaxType/BaseTaxType.php | 22 ++++----- .../TaxType/FeatureFixAmountTaxType.php | 2 +- .../Thelia/Tests/Coupon/CouponFactoryTest.php | 2 - 54 files changed, 220 insertions(+), 290 deletions(-) diff --git a/core/lib/Thelia/Action/Cart.php b/core/lib/Thelia/Action/Cart.php index 36ab41385..c1abd3034 100755 --- a/core/lib/Thelia/Action/Cart.php +++ b/core/lib/Thelia/Action/Cart.php @@ -186,11 +186,11 @@ class Cart extends BaseAction implements EventSubscriberInterface /** * try to attach a new item to an existing cart * - * @param \Thelia\Model\Cart $cart - * @param int $productId + * @param \Thelia\Model\Cart $cart + * @param int $productId * @param \Thelia\Model\ProductSaleElements $productSaleElements - * @param float $quantity - * @param ProductPrice $productPrice + * @param float $quantity + * @param ProductPrice $productPrice * * @return CartItem */ diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 8883cb27c..2bffb19ee 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -211,7 +211,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface /** @var CouponManager $couponManager */ $couponManager = $this->container->get('thelia.coupon.manager'); - if($couponManager->isCouponRemovingPostage()) { + if ($couponManager->isCouponRemovingPostage()) { $order = $event->getOrder(); $order->setPostage(0); @@ -235,7 +235,7 @@ class Coupon extends BaseAction implements EventSubscriberInterface $consumedCoupons = $request->getSession()->getConsumedCoupons(); if (is_array($consumedCoupons)) { - foreach($consumedCoupons as $couponCode) { + foreach ($consumedCoupons as $couponCode) { $couponQuery = CouponQuery::create(); $couponModel = $couponQuery->findOneByCode($couponCode); $couponModel->setLocale($request->getSession()->getLang()->getLocale()); diff --git a/core/lib/Thelia/Action/Order.php b/core/lib/Thelia/Action/Order.php index 9d7daaba7..792297642 100755 --- a/core/lib/Thelia/Action/Order.php +++ b/core/lib/Thelia/Action/Order.php @@ -30,7 +30,6 @@ use Thelia\Core\Event\Cart\CartEvent; use Thelia\Core\Event\Order\OrderAddressEvent; use Thelia\Core\Event\Order\OrderEvent; use Thelia\Core\Event\TheliaEvents; -use Thelia\Coupon\CouponManager; use Thelia\Exception\TheliaProcessException; use Thelia\Model\AddressQuery; use Thelia\Model\ConfigQuery; diff --git a/core/lib/Thelia/Command/UpdateCommand.php b/core/lib/Thelia/Command/UpdateCommand.php index 745a1b219..36f9aacb9 100644 --- a/core/lib/Thelia/Command/UpdateCommand.php +++ b/core/lib/Thelia/Command/UpdateCommand.php @@ -27,8 +27,6 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Thelia\Install\Exception\UpToDateException; use Thelia\Install\Update; -use Thelia\Model\ConfigQuery; - /** * Class UpdateCommand @@ -65,7 +63,7 @@ class UpdateCommand extends ContainerAwareCommand 'Your database is updated successfully !', '' )); - } catch(PropelException $e) { + } catch (PropelException $e) { $errorMsg = $e->getMessage(); $output->writeln(array( @@ -81,4 +79,4 @@ class UpdateCommand extends ContainerAwareCommand )); } } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/ConditionCollection.php b/core/lib/Thelia/Condition/ConditionCollection.php index be457bded..bedf5b337 100644 --- a/core/lib/Thelia/Condition/ConditionCollection.php +++ b/core/lib/Thelia/Condition/ConditionCollection.php @@ -26,7 +26,6 @@ namespace Thelia\Condition; use ArrayAccess; use Countable; use Iterator; -use Symfony\Component\DependencyInjection\ContainerInterface; use Thelia\Condition\Implementation\ConditionInterface; /** @@ -201,4 +200,4 @@ class ConditionCollection implements Iterator, Countable, ArrayAccess return json_encode($arrayToSerialize); } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/ConditionEvaluator.php b/core/lib/Thelia/Condition/ConditionEvaluator.php index 901a9161a..dd606fcd0 100644 --- a/core/lib/Thelia/Condition/ConditionEvaluator.php +++ b/core/lib/Thelia/Condition/ConditionEvaluator.php @@ -23,12 +23,10 @@ namespace Thelia\Condition; -use Symfony\Component\DependencyInjection\ContainerInterface; use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Condition\Operators; use Thelia\Condition\ConditionCollection; - /** * Validate Conditions * @@ -138,4 +136,4 @@ class ConditionEvaluator return false; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/ConditionFactory.php b/core/lib/Thelia/Condition/ConditionFactory.php index 431641659..72079fcc7 100644 --- a/core/lib/Thelia/Condition/ConditionFactory.php +++ b/core/lib/Thelia/Condition/ConditionFactory.php @@ -28,7 +28,6 @@ use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Coupon\FacadeInterface; use Thelia\Condition\ConditionCollection; - /** * Manage how Condition could interact with the current application state (Thelia) * @@ -114,7 +113,6 @@ class ConditionFactory return $collection; } - /** * Build a Condition from form * @@ -123,7 +121,7 @@ class ConditionFactory * @param array $values Values setting this Condition * * @throws \InvalidArgumentException - * @return ConditionInterface Ready to use Condition or false + * @return ConditionInterface Ready to use Condition or false */ public function build($conditionServiceId, array $operators, array $values) { @@ -166,7 +164,6 @@ class ConditionFactory */ public function getInputsFromConditionInterface(ConditionInterface $condition) { - return $condition->getValidators(); } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/ConditionOrganizer.php b/core/lib/Thelia/Condition/ConditionOrganizer.php index ebcff5f7d..6dab6e92c 100644 --- a/core/lib/Thelia/Condition/ConditionOrganizer.php +++ b/core/lib/Thelia/Condition/ConditionOrganizer.php @@ -44,4 +44,4 @@ class ConditionOrganizer implements ConditionOrganizerInterface // @todo: Implement organize() method. } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/ConditionOrganizerInterface.php b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php index b34982cc7..ab5a9dff7 100644 --- a/core/lib/Thelia/Condition/ConditionOrganizerInterface.php +++ b/core/lib/Thelia/Condition/ConditionOrganizerInterface.php @@ -40,4 +40,4 @@ interface ConditionOrganizerInterface * @return array Array of ConditionInterface sorted */ public function organize(array $conditions); -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php index ab0b404b3..48ec8ed1e 100644 --- a/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionAbstract.php @@ -171,7 +171,6 @@ abstract class ConditionAbstract implements ConditionInterface return $serializableCondition; } - /** * Check if currency if valid or not * @@ -232,7 +231,7 @@ abstract class ConditionAbstract implements ConditionInterface $selectHtml = ''; $optionHtml = ''; $inputs = $this->getValidators(); - if(isset($inputs['inputs'][$inputKey])) { + if (isset($inputs['inputs'][$inputKey])) { $operators = $inputs['inputs'][$inputKey]['availableOperators']; foreach ($operators as $key => $operator) { $selected = ''; @@ -282,6 +281,7 @@ abstract class ConditionAbstract implements ConditionInterface '; + return $html; } @@ -316,4 +316,4 @@ abstract class ConditionAbstract implements ConditionInterface return $selectHtml; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/Implementation/ConditionInterface.php b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php index a123d2c10..0b4f3efe0 100644 --- a/core/lib/Thelia/Condition/Implementation/ConditionInterface.php +++ b/core/lib/Thelia/Condition/Implementation/ConditionInterface.php @@ -24,7 +24,6 @@ namespace Thelia\Condition\Implementation; use Thelia\Condition\SerializableCondition; -use Thelia\Core\Translation\Translator; use Thelia\Coupon\FacadeInterface; /** @@ -41,7 +40,7 @@ interface ConditionInterface * * @param FacadeInterface $adapter Service adapter */ - function __construct(FacadeInterface $adapter); + public function __construct(FacadeInterface $adapter); /** * Get Condition Service id @@ -75,7 +74,6 @@ interface ConditionInterface */ public function getAvailableOperators(); - /** * Get I18n name * diff --git a/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php index e3452a830..48b7c250b 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForEveryone.php @@ -148,8 +148,7 @@ class MatchForEveryone extends ConditionAbstract public function drawBackOfficeInputs() { // No input - return ''; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php index 4ffe2ebd4..7cbdd32df 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForTotalAmount.php @@ -23,7 +23,6 @@ namespace Thelia\Condition\Implementation; -use Symfony\Component\Intl\Exception\NotImplementedException; use Thelia\Condition\Implementation\ConditionAbstract; use Thelia\Condition\Operators; use Thelia\Exception\InvalidConditionOperatorException; @@ -119,10 +118,8 @@ class MatchForTotalAmount extends ConditionAbstract $this->isPriceValid($priceValue); - $this->isCurrencyValid($currencyValue); - $this->operators = array( self::INPUT1 => $priceOperator, self::INPUT2 => $currencyOperator, @@ -335,4 +332,4 @@ class MatchForTotalAmount extends ConditionAbstract return $selectHtml; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php index 2d2df9c14..f1123b57b 100644 --- a/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php +++ b/core/lib/Thelia/Condition/Implementation/MatchForXArticles.php @@ -247,6 +247,7 @@ class MatchForXArticles extends ConditionAbstract '; + return $html; } diff --git a/core/lib/Thelia/Condition/Operators.php b/core/lib/Thelia/Condition/Operators.php index cc687acde..b6a8816ba 100644 --- a/core/lib/Thelia/Condition/Operators.php +++ b/core/lib/Thelia/Condition/Operators.php @@ -124,4 +124,4 @@ abstract class Operators return $ret; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Controller/Admin/CouponController.php b/core/lib/Thelia/Controller/Admin/CouponController.php index 275f9b5de..68508903e 100755 --- a/core/lib/Thelia/Controller/Admin/CouponController.php +++ b/core/lib/Thelia/Controller/Admin/CouponController.php @@ -314,7 +314,6 @@ class CouponController extends BaseAdminController /** @var ConditionInterface $condition */ $condition = $this->container->get($conditionId); - if ($inputs === null) { return $this->pageNotFound(); } @@ -723,6 +722,7 @@ class CouponController extends BaseAdminController $args = array(); $args['conditions'] = $this->cleanConditionForTemplate($couponManager->getConditions()); + return $this->render('coupon/conditions', $args); } diff --git a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php index de236ac3c..376db1d3f 100644 --- a/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php +++ b/core/lib/Thelia/Core/Event/Coupon/CouponCreateOrUpdateEvent.php @@ -87,10 +87,10 @@ class CouponCreateOrUpdateEvent extends ActionEvent /** * Constructor * - * @param string $code Coupon Code - * @param string $serviceId Coupon Service id - * @param string $title Coupon title - * @param array $effects Coupon effects ready to be serialized + * @param string $code Coupon Code + * @param string $serviceId Coupon Service id + * @param string $title Coupon title + * @param array $effects Coupon effects ready to be serialized * 'amount' key is mandatory and reflects * the amount deduced from the cart * @param string $shortDescription Coupon short description diff --git a/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php b/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php index 09a7acd8d..dedb54d8e 100644 --- a/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php +++ b/core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php @@ -23,7 +23,8 @@ namespace Thelia\Core\Template\Assets; -interface AssetManagerInterface { +interface AssetManagerInterface +{ /** * Prepare an asset directory by checking that no changes occured in * the source directory. If any change is detected, the whole asset directory @@ -45,23 +46,23 @@ interface AssetManagerInterface { /** * Generates assets from $asset_path in $output_path, using $filters. * - * @param $assetSource - * @param $assetDirectoryBase - * @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less) + * @param $assetSource + * @param $assetDirectoryBase + * @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less) * - * @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space - * @param $webAssetsKey - * @param string $outputUrl the URL to the base assets output directory in the web space + * @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space + * @param $webAssetsKey + * @param string $outputUrl the URL to the base assets output directory in the web space * - * @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. - * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) + * @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. + * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) * - * @param boolean $debug true / false + * @param boolean $debug true / false * * @internal param string $web_assets_directory_base the full disk path to the base assets output directory in the web space * @internal param string $output_url the URL to the base assets output directory in the web space * - * @return string The URL to the generated asset file. + * @return string The URL to the generated asset file. */ public function processAsset($assetSource, $assetDirectoryBase, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey, $outputUrl, $assetType, $filters, $debug); -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php b/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php index 16f6c67c7..bca1ce1c7 100755 --- a/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php +++ b/core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php @@ -51,7 +51,7 @@ class AsseticAssetManager implements AssetManagerInterface /** * Create a stamp form the modification time of the content of the given directory and all of its subdirectories * - * @param string $directory ther directory name + * @param string $directory ther directory name * @return string the stamp of this directory */ protected function getStamp($directory) @@ -76,7 +76,8 @@ class AsseticAssetManager implements AssetManagerInterface * * @return bool */ - protected function isSourceFile(\SplFileInfo $fileInfo) { + protected function isSourceFile(\SplFileInfo $fileInfo) + { return in_array($fileInfo->getExtension(), $this->source_file_extensions); } @@ -84,9 +85,9 @@ class AsseticAssetManager implements AssetManagerInterface * Recursively copy assets from the source directory to the destination * directory in the web space, omitting source files. * - * @param Filesystem $fs - * @param string $from_directory the source - * @param string $to_directory the destination + * @param Filesystem $fs + * @param string $from_directory the source + * @param string $to_directory the destination * @throws \RuntimeException if a problem occurs. */ protected function copyAssets(Filesystem $fs, $from_directory, $to_directory) @@ -205,8 +206,7 @@ class AsseticAssetManager implements AssetManagerInterface throw new \RuntimeException( "Failed to create asset stamp file $stamp_file_path. Please check that your web server has the proper access rights to do that."); } - /* } - else { + /* } else { @fclose($fp); } */ @@ -216,13 +216,13 @@ class AsseticAssetManager implements AssetManagerInterface /** * Decode the filters names, and initialize the Assetic FilterManager * - * @param FilterManager $filterManager the Assetic filter manager - * @param string $filters a comma separated list of filter names + * @param FilterManager $filterManager the Assetic filter manager + * @param string $filters a comma separated list of filter names * @throws \InvalidArgumentException if a wrong filter is passed - * @return an array of filter names + * @return an array of filter names */ - protected function decodeAsseticFilters(FilterManager $filterManager, $filters) { - + protected function decodeAsseticFilters(FilterManager $filterManager, $filters) + { if (!empty($filters)) { $filter_list = explode(',', $filters); @@ -261,8 +261,7 @@ class AsseticAssetManager implements AssetManagerInterface break; } } - } - else { + } else { $filter_list = array(); } @@ -272,20 +271,20 @@ class AsseticAssetManager implements AssetManagerInterface /** * Generates assets from $asset_path in $output_path, using $filters. * - * @param $assetSource - * @param $assetDirectoryBase - * @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less) + * @param $assetSource + * @param $assetDirectoryBase + * @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less) * - * @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space - * @param $webAssetsKey - * @param string $outputUrl the URL to the base assets output directory in the web space + * @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space + * @param $webAssetsKey + * @param string $outputUrl the URL to the base assets output directory in the web space * - * @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. - * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) + * @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. + * @param array $filters a list of filters, as defined below (see switch($filter_name) ...) * - * @param boolean $debug true / false + * @param boolean $debug true / false * - * @return string The URL to the generated asset file. + * @return string The URL to the generated asset file. */ public function processAsset($assetSource, $assetDirectoryBase, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey, $outputUrl, $assetType, $filters, $debug) { diff --git a/core/lib/Thelia/Core/Template/Loop/Cart.php b/core/lib/Thelia/Core/Template/Loop/Cart.php index 32c6d9ff2..aa7d65703 100755 --- a/core/lib/Thelia/Core/Template/Loop/Cart.php +++ b/core/lib/Thelia/Core/Template/Loop/Cart.php @@ -15,7 +15,6 @@ use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResultRow; use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\ArgumentCollection; -use Thelia\Model\CountryQuery; use Thelia\TaxEngine\TaxEngine; use Thelia\Type; diff --git a/core/lib/Thelia/Core/Template/Loop/OrderCoupon.php b/core/lib/Thelia/Core/Template/Loop/OrderCoupon.php index ed74a4dac..13335d4c8 100755 --- a/core/lib/Thelia/Core/Template/Loop/OrderCoupon.php +++ b/core/lib/Thelia/Core/Template/Loop/OrderCoupon.php @@ -25,8 +25,6 @@ namespace Thelia\Core\Template\Loop; use Propel\Runtime\ActiveQuery\Criteria; use Thelia\Condition\ConditionFactory; -use Thelia\Condition\Implementation\ConditionInterface; -use Thelia\Core\HttpFoundation\Request; use Thelia\Core\Template\Element\BaseLoop; use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResultRow; @@ -35,7 +33,6 @@ use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Model\OrderCouponQuery; use Thelia\Model\OrderQuery; -use Thelia\Type; /** * diff --git a/core/lib/Thelia/Core/Template/Loop/Product.php b/core/lib/Thelia/Core/Template/Loop/Product.php index 49bab69ec..8ee347f0a 100755 --- a/core/lib/Thelia/Core/Template/Loop/Product.php +++ b/core/lib/Thelia/Core/Template/Loop/Product.php @@ -36,7 +36,6 @@ use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Exception\TaxEngineException; use Thelia\Model\CategoryQuery; -use Thelia\Model\CountryQuery; use Thelia\Model\CurrencyQuery; use Thelia\Model\Map\ProductPriceTableMap; use Thelia\Model\Map\ProductSaleElementsTableMap; diff --git a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php index 319bb7fee..124f3d162 100755 --- a/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php +++ b/core/lib/Thelia/Core/Template/Loop/ProductSaleElements.php @@ -34,7 +34,6 @@ use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Exception\TaxEngineException; use Thelia\Model\Base\ProductSaleElementsQuery; -use Thelia\Model\CountryQuery; use Thelia\Model\CurrencyQuery; use Thelia\Model\Map\ProductSaleElementsTableMap; use Thelia\TaxEngine\TaxEngine; diff --git a/core/lib/Thelia/Core/Template/Loop/Template.php b/core/lib/Thelia/Core/Template/Loop/Template.php index 9b6ae8a28..e6cf47288 100644 --- a/core/lib/Thelia/Core/Template/Loop/Template.php +++ b/core/lib/Thelia/Core/Template/Loop/Template.php @@ -23,19 +23,12 @@ namespace Thelia\Core\Template\Loop; -use Propel\Runtime\ActiveQuery\Criteria; -use Thelia\Core\Security\AccessManager; -use Thelia\Core\Template\Element\BaseI18nLoop; use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResultRow; -use Thelia\Core\Template\Element\PropelSearchLoopInterface; use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\Argument; -use Thelia\Model\ModuleQuery; - -use Thelia\Module\BaseModule; use Thelia\Type; use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateDefinition; @@ -72,7 +65,8 @@ class Template extends BaseLoop implements ArraySearchLoopInterface ); } - public function buildArray() { + public function buildArray() + { $type = $this->getArg('template-type')->getValue(); if ($type == 'front-office') diff --git a/core/lib/Thelia/Core/Template/ParserInterface.php b/core/lib/Thelia/Core/Template/ParserInterface.php index 08653f588..22badf688 100755 --- a/core/lib/Thelia/Core/Template/ParserInterface.php +++ b/core/lib/Thelia/Core/Template/ParserInterface.php @@ -43,20 +43,19 @@ interface ParserInterface * * @param unknown $templateType the template type ( * - * @param string $templateName the template name - * @param string $templateDirectory path to the template dirtectory - * @param unknown $key ??? - * @param string $unshift ??? Etienne ? + * @param string $templateName the template name + * @param string $templateDirectory path to the template dirtectory + * @param unknown $key ??? + * @param string $unshift ??? Etienne ? */ public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false); - /** * Return the registeted template directories for a givent template type * - * @param unknown $templateType + * @param unknown $templateType * @throws InvalidArgumentException if the tempmateType is not defined - * @return array: an array of defined templates directories for the given template type + * @return array: an array of defined templates directories for the given template type */ public function getTemplateDirectories($templateType); -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php index cb867b8c1..18e771336 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php +++ b/core/lib/Thelia/Core/Template/Smarty/Assets/SmartyAssetsManager.php @@ -23,7 +23,6 @@ namespace Thelia\Core\Template\Smarty\Assets; -use Thelia\Core\Template\Assets\AsseticHelper; use Thelia\Core\Template\TemplateDefinition; use Thelia\Tools\URL; use Thelia\Core\Template\Assets\AssetManagerInterface; @@ -37,14 +36,14 @@ class SmartyAssetsManager private $web_root; private $path_relative_to_web_root; - static private $assetsDirectory = null; + private static $assetsDirectory = null; /** * Creates a new SmartyAssetsManager instance * - * @param AssetManagerInterface $assetsManager an asset manager instance - * @param string $web_root the disk path to the web root (with final /) - * @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated + * @param AssetManagerInterface $assetsManager an asset manager instance + * @param string $web_root the disk path to the web root (with final /) + * @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated */ public function __construct(AssetManagerInterface $assetsManager, $web_root, $path_relative_to_web_root) { @@ -67,7 +66,7 @@ class SmartyAssetsManager if (isset($templateDirectories[$templateDefinition->getName()])) { /* create assets foreach registered directory : main @ modules */ - foreach($templateDirectories[$templateDefinition->getName()] as $key => $directory) { + foreach ($templateDirectories[$templateDefinition->getName()] as $key => $directory) { $tpl_path = $directory . DS . self::$assetsDirectory; @@ -95,7 +94,7 @@ class SmartyAssetsManager /* we trick here relative thinking for file attribute */ $file = ltrim($file, '/'); - while(substr($file, 0, 3) == '../') { + while (substr($file, 0, 3) == '../') { $file = substr($file, 3); } diff --git a/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php b/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php index fe6e1cd0a..f652aaa01 100755 --- a/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php +++ b/core/lib/Thelia/Core/Template/Smarty/SmartyParser.php @@ -14,8 +14,6 @@ use Thelia\Core\Template\Smarty\AbstractSmartyPlugin; use Thelia\Core\Template\Exception\ResourceNotFoundException; use Thelia\Core\Template\ParserContext; use Thelia\Core\Template\TemplateDefinition; -use Thelia\Model\ConfigQuery; -use Thelia\Core\Template\TemplateHelper; use Imagine\Exception\InvalidArgumentException; use Thelia\Core\Translation\Translator; @@ -72,7 +70,6 @@ class SmartyParser extends Smarty implements ParserInterface $this->setCompileDir($compile_dir); $this->setCacheDir($cache_dir); - $this->debugging = $debug; // Prevent smarty ErrorException: Notice: Undefined index bla bla bla... @@ -80,7 +77,7 @@ class SmartyParser extends Smarty implements ParserInterface // Si on n'est pas en mode debug, activer le cache, avec une lifetime de 15mn, et en vérifiant que les templates sources n'ont pas été modifiés. - if($debug) { + if ($debug) { $this->setCaching(Smarty::CACHING_OFF); $this->setForceCompile(true); } else { @@ -89,7 +86,6 @@ class SmartyParser extends Smarty implements ParserInterface //$this->enableSecurity(); - // The default HTTP status $this->status = 200; @@ -100,15 +96,15 @@ class SmartyParser extends Smarty implements ParserInterface /** * Add a template directory to the current template list * - * @param unknown $templateType the template type (a TemplateDefinition type constant) - * @param string $templateName the template name - * @param string $templateDirectory path to the template dirtectory - * @param unknown $key ??? - * @param string $unshift ??? Etienne ? + * @param unknown $templateType the template type (a TemplateDefinition type constant) + * @param string $templateName the template name + * @param string $templateDirectory path to the template dirtectory + * @param unknown $key ??? + * @param string $unshift ??? Etienne ? */ - public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false) { - - if(true === $unshift && isset($this->templateDirectories[$templateType][$templateName])) { + public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false) + { + if (true === $unshift && isset($this->templateDirectories[$templateType][$templateName])) { $this->templateDirectories[$templateType][$templateName] = array_merge( array( @@ -124,7 +120,7 @@ class SmartyParser extends Smarty implements ParserInterface /** * Return the registeted template directories for a givent template type * - * @param unknown $templateType + * @param unknown $templateType * @throws InvalidArgumentException * @return multitype: */ @@ -176,7 +172,7 @@ class SmartyParser extends Smarty implements ParserInterface /* do not pass array directly to addTemplateDir since we cant control on keys */ if (isset($this->templateDirectories[$templateDefinition->getType()][$templateDefinition->getName()])) { - foreach($this->templateDirectories[$templateDefinition->getType()][$templateDefinition->getName()] as $key => $directory) { + foreach ($this->templateDirectories[$templateDefinition->getType()][$templateDefinition->getName()] as $key => $directory) { $this->addTemplateDir($directory, $key); } } @@ -194,9 +190,9 @@ class SmartyParser extends Smarty implements ParserInterface /** * Return a rendered template, either from file or ftom a string * - * @param string $resourceType either 'string' (rendering from a string) or 'file' (rendering a file) + * @param string $resourceType either 'string' (rendering from a string) or 'file' (rendering a file) * @param string $resourceContent the resource content (a text, or a template file name) - * @param array $parameters an associative array of names / value pairs + * @param array $parameters an associative array of names / value pairs * * @return string the rendered template text */ @@ -215,8 +211,8 @@ class SmartyParser extends Smarty implements ParserInterface /** * Return a rendered template file * - * @param string $realTemplateName the template name (from the template directory) - * @param array $parameters an associative array of names / value pairs + * @param string $realTemplateName the template name (from the template directory) + * @param array $parameters an associative array of names / value pairs * @return string the rendered template text */ public function render($realTemplateName, array $parameters = array()) @@ -231,8 +227,8 @@ class SmartyParser extends Smarty implements ParserInterface /** * Return a rendered template text * - * @param string $templateText the template text - * @param array $parameters an associative array of names / value pairs + * @param string $templateText the template text + * @param array $parameters an associative array of names / value pairs * @return string the rendered template text */ public function renderString($templateText, array $parameters = array()) @@ -298,4 +294,4 @@ class SmartyParser extends Smarty implements ParserInterface } } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Core/Template/TemplateDefinition.php b/core/lib/Thelia/Core/Template/TemplateDefinition.php index 7a4d1685c..28ac17866 100644 --- a/core/lib/Thelia/Core/Template/TemplateDefinition.php +++ b/core/lib/Thelia/Core/Template/TemplateDefinition.php @@ -57,13 +57,12 @@ class TemplateDefinition */ protected $type; - public function __construct($name, $type) { $this->name = $name; $this->type = $type; - switch($type) { + switch ($type) { case TemplateDefinition::FRONT_OFFICE: $this->path = self::FRONT_OFFICE_SUBDIR . $name; break; @@ -90,14 +89,17 @@ class TemplateDefinition public function setName($name) { $this->name = $name; + return $this; } - public function getI18nPath() { + public function getI18nPath() + { return $this->getPath() . DS . 'I18n'; } - public function getAbsoluteI18nPath() { + public function getAbsoluteI18nPath() + { return THELIA_TEMPLATE_DIR . $this->getI18nPath(); } @@ -106,7 +108,8 @@ class TemplateDefinition return $this->path; } - public function getAbsolutePath() { + public function getAbsolutePath() + { return THELIA_TEMPLATE_DIR . $this->getPath(); } @@ -115,13 +118,15 @@ class TemplateDefinition return $this->getPath() . DS . 'configs'; } - public function getAbsoluteConfigPath() { + public function getAbsoluteConfigPath() + { return THELIA_TEMPLATE_DIR . $this->getConfigPath(); } public function setPath($path) { $this->path = $path; + return $this; } @@ -133,13 +138,15 @@ class TemplateDefinition public function setType($type) { $this->type = $type; + return $this; } /** * Returns an iterator on the standard templates subdir names */ - public static function getStandardTemplatesSubdirsIterator() { + public static function getStandardTemplatesSubdirsIterator() + { return new \ArrayIterator(self::$standardTemplatesSubdirs); } } diff --git a/core/lib/Thelia/Core/Template/TemplateHelper.php b/core/lib/Thelia/Core/Template/TemplateHelper.php index 000a5bfd5..a95d7b899 100644 --- a/core/lib/Thelia/Core/Template/TemplateHelper.php +++ b/core/lib/Thelia/Core/Template/TemplateHelper.php @@ -93,7 +93,8 @@ class TemplateHelper /** * Returns an array which contains all standard template definitions */ - public function getStandardTemplateDefinitions() { + public function getStandardTemplateDefinitions() + { return array( $this->getActiveFrontTemplate(), $this->getActiveAdminTemplate(), @@ -105,16 +106,16 @@ class TemplateHelper /** * Return a list of existing templates for a given template type * - * @param int $templateType the template type - * @return An array of \Thelia\Core\Template\TemplateDefinition + * @param int $templateType the template type + * @return An array of \Thelia\Core\Template\TemplateDefinition */ - public function getList($templateType) { - + public function getList($templateType) + { $list = $exclude = array(); $tplIterator = TemplateDefinition::getStandardTemplatesSubdirsIterator(); - foreach($tplIterator as $type => $subdir) { + foreach ($tplIterator as $type => $subdir) { if ($templateType == $type) { diff --git a/core/lib/Thelia/Core/Thelia.php b/core/lib/Thelia/Core/Thelia.php index 7a1d96750..844eb3d29 100755 --- a/core/lib/Thelia/Core/Thelia.php +++ b/core/lib/Thelia/Core/Thelia.php @@ -49,7 +49,6 @@ use Thelia\Config\DefinePropel; use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\TheliaContainerBuilder; use Thelia\Core\DependencyInjection\Loader\XmlFileLoader; -use Thelia\Model\ConfigQuery; use Symfony\Component\Config\FileLocator; use Propel\Runtime\Propel; @@ -110,12 +109,13 @@ class Thelia extends Kernel * Add all module's standard templates to the parser environment * * @param TheliaParser $parser the parser - * @param Module $module the Module. + * @param Module $module the Module. */ - protected function addStandardModuleTemplatesToParserEnvironment($parser, $module) { + protected function addStandardModuleTemplatesToParserEnvironment($parser, $module) + { $stdTpls = TemplateDefinition::getStandardTemplatesSubdirsIterator(); - foreach($stdTpls as $templateType => $templateSubdirName) { + foreach ($stdTpls as $templateType => $templateSubdirName) { $this->addModuleTemplateToParserEnvironment($parser, $module, $templateType, $templateSubdirName); } } @@ -123,13 +123,13 @@ class Thelia extends Kernel /** * Add a module template directory to the parser environment * - * @param TheliaParser $parser the parser - * @param Module $module the Module. - * @param string $templateType the template type (one of the TemplateDefinition type constants) - * @param string $templateSubdirName the template subdirectory name (one of the TemplateDefinition::XXX_SUBDIR constants) + * @param TheliaParser $parser the parser + * @param Module $module the Module. + * @param string $templateType the template type (one of the TemplateDefinition type constants) + * @param string $templateSubdirName the template subdirectory name (one of the TemplateDefinition::XXX_SUBDIR constants) */ - protected function addModuleTemplateToParserEnvironment($parser, $module, $templateType, $templateSubdirName) { - + protected function addModuleTemplateToParserEnvironment($parser, $module, $templateType, $templateSubdirName) + { // Get template path $templateDirectory = $module->getAbsoluteTemplateDirectoryPath($templateSubdirName); @@ -155,8 +155,7 @@ class Thelia extends Kernel ); } } - } - catch (\UnexpectedValueException $ex) { + } catch (\UnexpectedValueException $ex) { // The directory does not exists, ignore it. } } @@ -176,7 +175,7 @@ class Thelia extends Kernel ->depth(0) ->in(THELIA_ROOT . "/core/lib/Thelia/Config/Resources"); - foreach($finder as $file) { + foreach ($finder as $file) { $loader->load($file->getBaseName()); } @@ -219,7 +218,7 @@ class Thelia extends Kernel // Standard templates (front, back, pdf, mail) $th = TemplateHelper::getInstance(); - foreach($th->getStandardTemplateDefinitions() as $templateDefinition) { + foreach ($th->getStandardTemplateDefinitions() as $templateDefinition) { if (is_dir($dir = $templateDefinition->getAbsoluteI18nPath())) { $translationDirs[] = $dir; } @@ -370,4 +369,4 @@ class Thelia extends Kernel //Nothing is load here but it's possible to load container configuration here. //exemple in sf2 : $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Coupon/BaseFacade.php b/core/lib/Thelia/Coupon/BaseFacade.php index 3df562333..d1f1d22a6 100644 --- a/core/lib/Thelia/Coupon/BaseFacade.php +++ b/core/lib/Thelia/Coupon/BaseFacade.php @@ -57,9 +57,9 @@ class BaseFacade implements FacadeInterface /** * Constructor * - * @param ContainerInterface $container Service container + * @param ContainerInterface $container Service container */ - function __construct(ContainerInterface $container) + public function __construct(ContainerInterface $container) { $this->container = $container; } @@ -135,7 +135,6 @@ class BaseFacade implements FacadeInterface return $this->getRequest()->getSession()->getCurrency()->getCode(); } - /** * Return the number of Products in the Cart * @@ -202,7 +201,6 @@ class BaseFacade implements FacadeInterface return $this->container->get('thelia.translator'); } - /** * Return the main currency * THe one used to set prices in BackOffice @@ -234,7 +232,6 @@ class BaseFacade implements FacadeInterface return $this->container->get('thelia.condition.validator'); } - /** * Return all available currencies * diff --git a/core/lib/Thelia/Coupon/CouponFactory.php b/core/lib/Thelia/Coupon/CouponFactory.php index e34ee9263..69eb75162 100644 --- a/core/lib/Thelia/Coupon/CouponFactory.php +++ b/core/lib/Thelia/Coupon/CouponFactory.php @@ -63,7 +63,7 @@ class CouponFactory * * @throws \Thelia\Exception\CouponExpiredException * @throws \Thelia\Exception\InvalidConditionException - * @return CouponInterface ready to be processed + * @return CouponInterface ready to be processed */ public function buildCouponFromCode($couponCode) { @@ -132,6 +132,4 @@ class CouponFactory return clone $couponManager; } - - } diff --git a/core/lib/Thelia/Coupon/CouponManager.php b/core/lib/Thelia/Coupon/CouponManager.php index 83cfffb52..92fc8e572 100644 --- a/core/lib/Thelia/Coupon/CouponManager.php +++ b/core/lib/Thelia/Coupon/CouponManager.php @@ -60,7 +60,6 @@ class CouponManager $this->facade = $container->get('thelia.facade'); } - /** * Get Discount for the given Coupons * @@ -241,10 +240,10 @@ class CouponManager $ret = $usageLeft; } - } catch(\Exception $e) { + } catch (\Exception $e) { $ret = false; } return $ret; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Coupon/FacadeInterface.php b/core/lib/Thelia/Coupon/FacadeInterface.php index 2b78a49d6..9e93115d0 100644 --- a/core/lib/Thelia/Coupon/FacadeInterface.php +++ b/core/lib/Thelia/Coupon/FacadeInterface.php @@ -43,9 +43,9 @@ interface FacadeInterface /** * Constructor * - * @param ContainerInterface $container Service container + * @param ContainerInterface $container Service container */ - function __construct(ContainerInterface $container); + public function __construct(ContainerInterface $container); /** * Return a Cart a CouponManager can process @@ -170,4 +170,4 @@ interface FacadeInterface */ public function getDispatcher(); -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Coupon/Type/CouponAbstract.php b/core/lib/Thelia/Coupon/Type/CouponAbstract.php index 5e83afb85..ac4893478 100644 --- a/core/lib/Thelia/Coupon/Type/CouponAbstract.php +++ b/core/lib/Thelia/Coupon/Type/CouponAbstract.php @@ -23,7 +23,6 @@ namespace Thelia\Coupon\Type; -use Symfony\Component\Intl\Exception\NotImplementedException; use Thelia\Condition\ConditionEvaluator; use Thelia\Core\Translation\Translator; use Thelia\Coupon\FacadeInterface; @@ -62,7 +61,6 @@ abstract class CouponAbstract implements CouponInterface /** @var ConditionEvaluator Condition validator */ protected $conditionEvaluator = null; - /** @var string Service Id */ protected $serviceId = null; @@ -75,8 +73,6 @@ abstract class CouponAbstract implements CouponInterface /** @var string Coupon code (ex: XMAS) */ protected $code = null; - - /** @var string Coupon title (ex: Coupon for XMAS) */ protected $title = null; @@ -86,8 +82,6 @@ abstract class CouponAbstract implements CouponInterface /** @var string Coupon description */ protected $description = null; - - /** @var bool if Coupon is enabled */ protected $isEnabled = false; @@ -106,7 +100,6 @@ abstract class CouponAbstract implements CouponInterface /** @var bool if Coupon is available for Products already on special offers */ protected $isAvailableOnSpecialOffers = false; - /** * Constructor * @@ -146,9 +139,9 @@ abstract class CouponAbstract implements CouponInterface * @param bool $isRemovingPostage If Coupon is removing postage * @param bool $isAvailableOnSpecialOffers If available on Product already * on special offer price - * @param bool $isEnabled False if Coupon is disabled by admin - * @param int $maxUsage How many usage left - * @param \Datetime $expirationDate When the Code is expiring + * @param bool $isEnabled False if Coupon is disabled by admin + * @param int $maxUsage How many usage left + * @param \Datetime $expirationDate When the Code is expiring * * @return $this */ @@ -355,7 +348,6 @@ abstract class CouponAbstract implements CouponInterface return $this->serviceId; } - /** * Check if the current state of the application is matching this Coupon conditions * Thelia variables are given by the FacadeInterface @@ -398,5 +390,4 @@ abstract class CouponAbstract implements CouponInterface return $this->extendedInputs; } - } diff --git a/core/lib/Thelia/Coupon/Type/CouponInterface.php b/core/lib/Thelia/Coupon/Type/CouponInterface.php index a45d6cbab..7f58d282c 100644 --- a/core/lib/Thelia/Coupon/Type/CouponInterface.php +++ b/core/lib/Thelia/Coupon/Type/CouponInterface.php @@ -76,9 +76,9 @@ interface CouponInterface * @param bool $isRemovingPostage If Coupon is removing postage * @param bool $isAvailableOnSpecialOffers If available on Product already * on special offer price - * @param bool $isEnabled False if Coupon is disabled by admin - * @param int $maxUsage How many usage left - * @param \Datetime $expirationDate When the Code is expiring + * @param bool $isEnabled False if Coupon is disabled by admin + * @param int $maxUsage How many usage left + * @param \Datetime $expirationDate When the Code is expiring */ public function set( FacadeInterface $facade, @@ -138,8 +138,6 @@ interface CouponInterface */ public function isRemovingPostage(); - - /** * Return condition to validate the Coupon or not * @@ -173,7 +171,6 @@ interface CouponInterface */ public function isAvailableOnSpecialOffers(); - /** * Check if Coupon has been disabled by admin * @@ -196,7 +193,6 @@ interface CouponInterface */ public function isExpired(); - /** * Return effects generated by the coupon * A positive value diff --git a/core/lib/Thelia/Coupon/Type/RemoveXPercent.php b/core/lib/Thelia/Coupon/Type/RemoveXPercent.php index 7d83de333..b6c13df1a 100644 --- a/core/lib/Thelia/Coupon/Type/RemoveXPercent.php +++ b/core/lib/Thelia/Coupon/Type/RemoveXPercent.php @@ -60,9 +60,9 @@ class RemoveXPercent extends CouponAbstract * @param bool $isRemovingPostage If Coupon is removing postage * @param bool $isAvailableOnSpecialOffers If available on Product already * on special offer price - * @param bool $isEnabled False if Coupon is disabled by admin - * @param int $maxUsage How many usage left - * @param \Datetime $expirationDate When the Code is expiring + * @param bool $isEnabled False if Coupon is disabled by admin + * @param int $maxUsage How many usage left + * @param \Datetime $expirationDate When the Code is expiring * * @return $this */ @@ -110,7 +110,6 @@ class RemoveXPercent extends CouponAbstract return $basePrice * (( $this->percentage ) / 100); } - /** * Get I18n name * @@ -174,4 +173,4 @@ class RemoveXPercent extends CouponAbstract return $html; } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Form/MailingSystemModificationForm.php b/core/lib/Thelia/Form/MailingSystemModificationForm.php index 709c19144..144037a50 100644 --- a/core/lib/Thelia/Form/MailingSystemModificationForm.php +++ b/core/lib/Thelia/Form/MailingSystemModificationForm.php @@ -22,7 +22,6 @@ /*************************************************************************************/ namespace Thelia\Form; -use Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\ExecutionContextInterface; use Thelia\Core\Translation\Translator; use Thelia\Model\ProfileQuery; diff --git a/core/lib/Thelia/Install/BaseInstall.php b/core/lib/Thelia/Install/BaseInstall.php index aa41140dd..2e602b1b6 100644 --- a/core/lib/Thelia/Install/BaseInstall.php +++ b/core/lib/Thelia/Install/BaseInstall.php @@ -53,9 +53,8 @@ abstract class BaseInstall throw new AlreadyInstallException("Thelia is already installed"); } - $this->exec(); } abstract public function exec(); -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Install/CheckDatabaseConnection.php b/core/lib/Thelia/Install/CheckDatabaseConnection.php index c9c2060f5..4a6d4a33b 100644 --- a/core/lib/Thelia/Install/CheckDatabaseConnection.php +++ b/core/lib/Thelia/Install/CheckDatabaseConnection.php @@ -24,12 +24,8 @@ namespace Thelia\Install; use PDO; -use RecursiveDirectoryIterator; -use RecursiveIteratorIterator; use Symfony\Component\Translation\TranslatorInterface; use Thelia\Core\Translation\Translator; -use Thelia\Install\Exception\InstallException; - /** * Class CheckDatabaseConnection diff --git a/core/lib/Thelia/Install/CheckPermission.php b/core/lib/Thelia/Install/CheckPermission.php index efdaf6f04..38b6049dc 100644 --- a/core/lib/Thelia/Install/CheckPermission.php +++ b/core/lib/Thelia/Install/CheckPermission.php @@ -28,7 +28,6 @@ use RecursiveIteratorIterator; use Symfony\Component\Translation\TranslatorInterface; use Thelia\Core\Translation\Translator; - /** * Class CheckPermission * @@ -164,9 +163,6 @@ class CheckPermission extends BaseInstall } } - - - return $this->isValid; } @@ -200,7 +196,6 @@ class CheckPermission extends BaseInstall return (is_writable(THELIA_ROOT . $directory) === true); } - /** * Get Translated text about the directory state * @@ -269,7 +264,6 @@ class CheckPermission extends BaseInstall return $translatedText; } - /** * Get Translated text about the directory state * Not usable with CLI @@ -382,7 +376,7 @@ class CheckPermission extends BaseInstall { $serverValueInBytes = $this->returnBytes(ini_get($key)); - if($serverValueInBytes == -1) { + if ($serverValueInBytes == -1) { return true; } @@ -400,7 +394,7 @@ class CheckPermission extends BaseInstall { $val = trim($val); $last = strtolower($val[strlen($val)-1]); - switch($last) { + switch ($last) { // The 'G' modifier is available since PHP 5.1.0 case 'g': $val *= 1024; diff --git a/core/lib/Thelia/Install/Database.php b/core/lib/Thelia/Install/Database.php index d17bd7c3d..4fad6d4a2 100644 --- a/core/lib/Thelia/Install/Database.php +++ b/core/lib/Thelia/Install/Database.php @@ -23,7 +23,6 @@ namespace Thelia\Install; - /** * Class Database * @package Thelia\Install @@ -112,4 +111,4 @@ class Database ) ); } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Install/Exception/AlreadyInstallException.php b/core/lib/Thelia/Install/Exception/AlreadyInstallException.php index 1409c7cdd..b2ff1555e 100644 --- a/core/lib/Thelia/Install/Exception/AlreadyInstallException.php +++ b/core/lib/Thelia/Install/Exception/AlreadyInstallException.php @@ -23,7 +23,6 @@ namespace Thelia\Install\Exception; - /** * Class AlreadyInstallException * @package Thelia\Install\Exception @@ -32,4 +31,4 @@ namespace Thelia\Install\Exception; class AlreadyInstallException extends InstallException { -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Install/Exception/InstallException.php b/core/lib/Thelia/Install/Exception/InstallException.php index 6924bcfe5..2d0f45fe4 100644 --- a/core/lib/Thelia/Install/Exception/InstallException.php +++ b/core/lib/Thelia/Install/Exception/InstallException.php @@ -29,4 +29,4 @@ namespace Thelia\Install\Exception; class InstallException extends \RuntimeException { -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Install/Exception/UpToDateException.php b/core/lib/Thelia/Install/Exception/UpToDateException.php index 45db7eb5a..e7401fe88 100644 --- a/core/lib/Thelia/Install/Exception/UpToDateException.php +++ b/core/lib/Thelia/Install/Exception/UpToDateException.php @@ -23,7 +23,6 @@ namespace Thelia\Install\Exception; - /** * Class UpToDateException * @package Thelia\Install\Exception @@ -32,4 +31,4 @@ namespace Thelia\Install\Exception; class UpToDateException extends InstallException { -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Install/Update.php b/core/lib/Thelia/Install/Update.php index 0a1011aec..923c8f1ab 100644 --- a/core/lib/Thelia/Install/Update.php +++ b/core/lib/Thelia/Install/Update.php @@ -29,13 +29,12 @@ use Thelia\Log\Tlog; use Thelia\Model\ConfigQuery; use Thelia\Model\Map\ProductTableMap; - /** * Class Update * @package Thelia\Install * @author Manuel Raynaud */ -class Update +class Update { protected static $version = array( '0' => '2.0.0-beta1', @@ -61,7 +60,7 @@ class Update $currentVersion = ConfigQuery::read('thelia_version'); $logger->debug("start update process"); - if(true === $this->isLatestVersion($currentVersion)) { + if (true === $this->isLatestVersion($currentVersion)) { $logger->debug("You already have the latest version. No update available"); throw new UpToDateException('You already have the latest version. No update available'); } @@ -78,7 +77,7 @@ class Update } $con->commit(); $logger->debug('update successfully'); - } catch(PropelException $e) { + } catch (PropelException $e) { $con->rollBack(); $logger->error(sprintf('error during update process with message : %s', $e->getMessage())); throw $e; @@ -99,4 +98,4 @@ class Update ConfigQuery::write('thelia_version', $version); } -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Mailer/MailerFactory.php b/core/lib/Thelia/Mailer/MailerFactory.php index e4fee490e..00cb2cb32 100644 --- a/core/lib/Thelia/Mailer/MailerFactory.php +++ b/core/lib/Thelia/Mailer/MailerFactory.php @@ -27,13 +27,13 @@ use Thelia\Core\Event\MailTransporterEvent; use Thelia\Core\Event\TheliaEvents; use Thelia\Model\ConfigQuery; - /** * Class MailerFactory * @package Thelia\Mailer * @author Manuel Raynaud */ -class MailerFactory { +class MailerFactory +{ /** * @var \Swift_Mailer */ @@ -49,7 +49,7 @@ class MailerFactory { $transporterEvent = new MailTransporterEvent(); $this->dispatcher->dispatch(TheliaEvents::MAILTRANSPORTER_CONFIG, $transporterEvent); - if($transporterEvent->hasTransporter()) { + if ($transporterEvent->hasTransporter()) { $transporter = $transporterEvent->getTransporter(); } else { if (ConfigQuery::isSmtpEnable()) { @@ -74,6 +74,7 @@ class MailerFactory { ->setTimeout(ConfigQuery::getSmtpTimeout()) ->setSourceIp(ConfigQuery::getSmtpSourceIp()) ; + return $smtpTransporter; } @@ -87,5 +88,4 @@ class MailerFactory { return $this->swiftMailer; } - -} \ No newline at end of file +} diff --git a/core/lib/Thelia/Rewriting/RewritingResolver.php b/core/lib/Thelia/Rewriting/RewritingResolver.php index 8edd0ebba..91be66b55 100755 --- a/core/lib/Thelia/Rewriting/RewritingResolver.php +++ b/core/lib/Thelia/Rewriting/RewritingResolver.php @@ -22,12 +22,8 @@ /*************************************************************************************/ namespace Thelia\Rewriting; -use Propel\Runtime\ActiveQuery\Criteria; -use Propel\Runtime\ActiveQuery\Join; -use Thelia\Exception\RewritingUrlException; use Thelia\Exception\UrlRewritingException; use Thelia\Model\RewritingUrlQuery; -use Thelia\Model\Map\RewritingUrlTableMap; /** * Class RewritingResolver @@ -51,7 +47,7 @@ class RewritingResolver { $this->rewritingUrlQuery = new RewritingUrlQuery(); - if($url !== null) { + if ($url !== null) { $this->load($url); } } @@ -62,7 +58,7 @@ class RewritingResolver $rewrittenUrl = urldecode($rewrittenUrl); $this->search = $this->rewritingUrlQuery->getResolverSearch($rewrittenUrl); - if($this->search->count() == 0) { + if ($this->search->count() == 0) { throw new UrlRewritingException('URL NOT FOUND', UrlRewritingException::URL_NOT_FOUND); } @@ -76,16 +72,16 @@ class RewritingResolver protected function getOtherParameters() { - if($this->search === null) { + if ($this->search === null) { throw new UrlRewritingException('RESOLVER NULL SEARCH', UrlRewritingException::RESOLVER_NULL_SEARCH); } $otherParameters = array(); - foreach($this->search as $result) { + foreach ($this->search as $result) { $parameter = $result->getParameter(); $value = $result->getValue(); - if(null !== $parameter) { + if (null !== $parameter) { $otherParameters[$parameter] = $value; } } @@ -93,5 +89,4 @@ class RewritingResolver return $otherParameters; } - } diff --git a/core/lib/Thelia/Rewriting/RewritingRetriever.php b/core/lib/Thelia/Rewriting/RewritingRetriever.php index ce6ada8e7..cfff07914 100755 --- a/core/lib/Thelia/Rewriting/RewritingRetriever.php +++ b/core/lib/Thelia/Rewriting/RewritingRetriever.php @@ -22,9 +22,7 @@ /*************************************************************************************/ namespace Thelia\Rewriting; -use Propel\Runtime\ActiveQuery\Criteria; use Thelia\Model\RewritingUrlQuery; -use Thelia\Model\Map\RewritingUrlTableMap; use Thelia\Tools\URL; /** @@ -46,7 +44,7 @@ class RewritingRetriever { $this->rewritingUrlQuery = new RewritingUrlQuery(); - if($view !== null && $viewLocale !== null) { + if ($view !== null && $viewLocale !== null) { $this->load($view, $viewLocale, $viewId); } } @@ -61,16 +59,16 @@ class RewritingRetriever $this->search = $this->rewritingUrlQuery->getViewUrlQuery($view, $viewLocale, $viewId); $allParametersWithoutView = array(); - if(null !== $viewId) { + if (null !== $viewId) { $allParametersWithoutView['locale'] = $viewLocale; } - if(null !== $viewId) { + if (null !== $viewId) { $allParametersWithoutView[$view . '_id'] = $viewId; } $this->rewrittenUrl = null; $this->url = URL::getInstance()->viewUrl($view, $allParametersWithoutView); - if($this->search !== null) { + if ($this->search !== null) { $this->rewrittenUrl = URL::getInstance()->absoluteUrl( $this->search->getUrl() ); @@ -85,8 +83,9 @@ class RewritingRetriever */ public function loadSpecificUrl($view, $viewLocale, $viewId = null, $viewOtherParameters = array()) { - if(empty($viewOtherParameters)) { + if (empty($viewOtherParameters)) { $this->loadViewUrl($view, $viewLocale, $viewId); + return; } @@ -94,13 +93,13 @@ class RewritingRetriever $allParametersWithoutView = $viewOtherParameters; $allParametersWithoutView['locale'] = $viewLocale; - if(null !== $viewId) { + if (null !== $viewId) { $allParametersWithoutView[$view . '_id'] = $viewId; } $this->rewrittenUrl = null; $this->url = URL::getInstance()->viewUrl($view, $allParametersWithoutView); - if($this->search !== null) { + if ($this->search !== null) { $this->rewrittenUrl = $this->search->getUrl(); } } diff --git a/core/lib/Thelia/TaxEngine/Calculator.php b/core/lib/Thelia/TaxEngine/Calculator.php index a067f200d..c0f01ea1e 100755 --- a/core/lib/Thelia/TaxEngine/Calculator.php +++ b/core/lib/Thelia/TaxEngine/Calculator.php @@ -61,10 +61,10 @@ class Calculator $this->country = null; $this->taxRulesCollection = null; - if($product->getId() === null) { + if ($product->getId() === null) { throw new TaxEngineException('Product id is empty in Calculator::load', TaxEngineException::UNDEFINED_PRODUCT); } - if($country->getId() === null) { + if ($country->getId() === null) { throw new TaxEngineException('Country id is empty in Calculator::load', TaxEngineException::UNDEFINED_COUNTRY); } @@ -82,13 +82,13 @@ class Calculator $this->country = null; $this->taxRulesCollection = null; - if($taxRule->getId() === null) { + if ($taxRule->getId() === null) { throw new TaxEngineException('TaxRule id is empty in Calculator::loadTaxRule', TaxEngineException::UNDEFINED_TAX_RULE); } - if($country->getId() === null) { + if ($country->getId() === null) { throw new TaxEngineException('Country id is empty in Calculator::loadTaxRule', TaxEngineException::UNDEFINED_COUNTRY); } - if($product->getId() === null) { + if ($product->getId() === null) { throw new TaxEngineException('Product id is empty in Calculator::load', TaxEngineException::UNDEFINED_PRODUCT); } @@ -120,15 +120,15 @@ class Calculator */ public function getTaxedPrice($untaxedPrice, &$taxCollection = null, $askedLocale = null) { - if(null === $this->taxRulesCollection) { + if (null === $this->taxRulesCollection) { throw new TaxEngineException('Tax rules collection is empty in Calculator::getTaxedPrice', TaxEngineException::UNDEFINED_TAX_RULES_COLLECTION); } - if(null === $this->product) { + if (null === $this->product) { throw new TaxEngineException('Product is empty in Calculator::getTaxedPrice', TaxEngineException::UNDEFINED_PRODUCT); } - if(false === filter_var($untaxedPrice, FILTER_VALIDATE_FLOAT)) { + if (false === filter_var($untaxedPrice, FILTER_VALIDATE_FLOAT)) { throw new TaxEngineException('BAD AMOUNT FORMAT', TaxEngineException::BAD_AMOUNT_FORMAT); } @@ -136,16 +136,16 @@ class Calculator $currentPosition = 1; $currentTax = 0; - if(null !== $taxCollection) { + if (null !== $taxCollection) { $taxCollection = new OrderProductTaxCollection(); } - foreach($this->taxRulesCollection as $taxRule) { - $position = (int)$taxRule->getTaxRuleCountryPosition(); + foreach ($this->taxRulesCollection as $taxRule) { + $position = (int) $taxRule->getTaxRuleCountryPosition(); $taxType = $taxRule->getTypeInstance(); $taxType->loadRequirements( $taxRule->getRequirements() ); - if($currentPosition !== $position) { + if ($currentPosition !== $position) { $taxedPrice += $currentTax; $currentTax = 0; $currentPosition = $position; @@ -154,7 +154,7 @@ class Calculator $taxAmount = round($taxType->calculate($this->product, $taxedPrice), 2); $currentTax += $taxAmount; - if(null !== $taxCollection) { + if (null !== $taxCollection) { $taxI18n = I18n::forceI18nRetrieving($askedLocale, 'Tax', $taxRule->getId()); $orderProductTax = new OrderProductTax(); $orderProductTax->setTitle($taxI18n->getTitle()); @@ -171,36 +171,36 @@ class Calculator public function getUntaxedPrice($taxedPrice) { - if(null === $this->taxRulesCollection) { + if (null === $this->taxRulesCollection) { throw new TaxEngineException('Tax rules collection is empty in Calculator::getTaxAmount', TaxEngineException::UNDEFINED_TAX_RULES_COLLECTION); } - if(null === $this->product) { + if (null === $this->product) { throw new TaxEngineException('Product is empty in Calculator::getTaxedPrice', TaxEngineException::UNDEFINED_PRODUCT); } - if(false === filter_var($taxedPrice, FILTER_VALIDATE_FLOAT)) { + if (false === filter_var($taxedPrice, FILTER_VALIDATE_FLOAT)) { throw new TaxEngineException('BAD AMOUNT FORMAT', TaxEngineException::BAD_AMOUNT_FORMAT); } $taxRule = $this->taxRulesCollection->getLast(); - if(null === $taxRule) { + if (null === $taxRule) { throw new TaxEngineException('Tax rules collection got no tax ', TaxEngineException::NO_TAX_IN_TAX_RULES_COLLECTION); } $untaxedPrice = $taxedPrice; - $currentPosition = (int)$taxRule->getTaxRuleCountryPosition(); + $currentPosition = (int) $taxRule->getTaxRuleCountryPosition(); $currentFixTax = 0; $currentTaxFactor = 0; do { - $position = (int)$taxRule->getTaxRuleCountryPosition(); + $position = (int) $taxRule->getTaxRuleCountryPosition(); $taxType = $taxRule->getTypeInstance(); $taxType->loadRequirements( $taxRule->getRequirements() ); - if($currentPosition !== $position) { + if ($currentPosition !== $position) { $untaxedPrice -= $currentFixTax; $untaxedPrice = $untaxedPrice / (1+$currentTaxFactor); $currentFixTax = 0; @@ -211,8 +211,7 @@ class Calculator $currentFixTax += $taxType->fixAmountRetriever($this->product); $currentTaxFactor += $taxType->pricePercentRetriever(); - - } while($taxRule = $this->taxRulesCollection->getPrevious()); + } while ($taxRule = $this->taxRulesCollection->getPrevious()); $untaxedPrice -= $currentFixTax; $untaxedPrice = $untaxedPrice / (1+$currentTaxFactor); @@ -224,7 +223,7 @@ class Calculator $untaxedPrice -= $taxType->fixAmountRetriever(); - } while($taxRule = $this->taxRulesCollection->getPrevious()); + } while ($taxRule = $this->taxRulesCollection->getPrevious()); $taxRule = $this->taxRulesCollection->getLast(); @@ -238,7 +237,7 @@ class Calculator $toto = true; - } while($taxRule = $this->taxRulesCollection->getPrevious()); + } while ($taxRule = $this->taxRulesCollection->getPrevious()); $untaxedPrice = $untaxedPrice / (1+$currentTaxFactor);*/ diff --git a/core/lib/Thelia/TaxEngine/TaxEngine.php b/core/lib/Thelia/TaxEngine/TaxEngine.php index 36406dc59..f14db2205 100755 --- a/core/lib/Thelia/TaxEngine/TaxEngine.php +++ b/core/lib/Thelia/TaxEngine/TaxEngine.php @@ -42,13 +42,13 @@ class TaxEngine */ protected $session = null; - static public function getInstance(Session $session = null) + public static function getInstance(Session $session = null) { - if(null === self::$instance) { + if (null === self::$instance) { self::$instance = new TaxEngine(); } - if(null !== self::$instance) { + if (null !== self::$instance) { self::$instance->setSession($session); } @@ -85,7 +85,7 @@ class TaxEngine $fileName = $directoryContent->getFilename(); $className = substr($fileName, 0, (1+strlen($directoryContent->getExtension())) * -1); - if($className == "BaseTaxType") { + if ($className == "BaseTaxType") { continue; } @@ -101,14 +101,14 @@ class TaxEngine * Then look at the current customer default address country * Else look at the default website country * - * @param bool $force result is static cached ; even if a below parameter change between 2 calls, we need to keep coherent results. but you can force it. + * @param bool $force result is static cached ; even if a below parameter change between 2 calls, we need to keep coherent results. but you can force it. * @return null|TaxEngine */ public function getDeliveryCountry($force = false) { - if(false === $force || null === self::$taxCountry) { + if (false === $force || null === self::$taxCountry) { /* is there a logged in customer ? */ - if(null !== $customer = $this->session->getCustomerUser()) { + if (null !== $customer = $this->session->getCustomerUser()) { if (null !== $this->session->getOrder() && null !== $this->session->getOrder()->chosenDeliveryAddress && null !== $currentDeliveryAddress = AddressQuery::create()->findPk($this->session->getOrder()->chosenDeliveryAddress)) { diff --git a/core/lib/Thelia/TaxEngine/TaxType/BaseTaxType.php b/core/lib/Thelia/TaxEngine/TaxType/BaseTaxType.php index f8bdd8647..e5dd69a06 100755 --- a/core/lib/Thelia/TaxEngine/TaxType/BaseTaxType.php +++ b/core/lib/Thelia/TaxEngine/TaxType/BaseTaxType.php @@ -35,13 +35,13 @@ abstract class BaseTaxType { protected $requirements = null; - public abstract function pricePercentRetriever(); + abstract public function pricePercentRetriever(); - public abstract function fixAmountRetriever(Product $product); + abstract public function fixAmountRetriever(Product $product); - public abstract function getRequirementsList(); + abstract public function getRequirementsList(); - public abstract function getTitle(); + abstract public function getTitle(); public function calculate(Product $product, $untaxedPrice) { @@ -52,20 +52,20 @@ abstract class BaseTaxType { $this->requirements = $this->getRequirementsList(); - if(!is_array($this->requirements)) { + if (!is_array($this->requirements)) { throw new TaxEngineException('getRequirementsList must return an array', TaxEngineException::TAX_TYPE_BAD_ABSTRACT_METHOD); } - foreach($this->requirements as $requirement => $requirementType) { - if(!$requirementType instanceof TypeInterface) { + foreach ($this->requirements as $requirement => $requirementType) { + if (!$requirementType instanceof TypeInterface) { throw new TaxEngineException('getRequirementsList must return an array of TypeInterface', TaxEngineException::TAX_TYPE_BAD_ABSTRACT_METHOD); } - if(!array_key_exists($requirement, $requirementsValues)) { + if (!array_key_exists($requirement, $requirementsValues)) { throw new TaxEngineException('Cannot load requirements : requirement value for `' . $requirement . '` not found', TaxEngineException::TAX_TYPE_REQUIREMENT_NOT_FOUND); } - if(!$requirementType->isValid($requirementsValues[$requirement])) { + if (!$requirementType->isValid($requirementsValues[$requirement])) { throw new TaxEngineException('Requirement value for `' . $requirement . '` does not match required type', TaxEngineException::TAX_TYPE_BAD_REQUIREMENT_VALUE); } @@ -75,11 +75,11 @@ abstract class BaseTaxType public function getRequirement($key) { - if($this->requirements === null) { + if ($this->requirements === null) { throw new TaxEngineException('Requirements are empty in BaseTaxType::getRequirement', TaxEngineException::UNDEFINED_REQUIREMENTS); } - if(!array_key_exists($key, $this->requirements)) { + if (!array_key_exists($key, $this->requirements)) { throw new TaxEngineException('Requirement value for `' . $key . '` does not exists in BaseTaxType::$requirements', TaxEngineException::UNDEFINED_REQUIREMENT_VALUE); } diff --git a/core/lib/Thelia/TaxEngine/TaxType/FeatureFixAmountTaxType.php b/core/lib/Thelia/TaxEngine/TaxType/FeatureFixAmountTaxType.php index e623528c2..baae41055 100755 --- a/core/lib/Thelia/TaxEngine/TaxType/FeatureFixAmountTaxType.php +++ b/core/lib/Thelia/TaxEngine/TaxType/FeatureFixAmountTaxType.php @@ -52,7 +52,7 @@ class FeatureFixAmountTaxType extends BaseTaxType $taxAmount = $query->getFreeTextValue(); $testInt = new FloatType(); - if(!$testInt->isValid($taxAmount)) { + if (!$testInt->isValid($taxAmount)) { throw new TaxEngineException('Feature value does not match FLOAT format', TaxEngineException::FEATURE_BAD_EXPECTED_VALUE); } diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php index f4de7ee02..74d139c4e 100644 --- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php +++ b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php @@ -406,7 +406,6 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua $couponManager = new RemoveXAmount($stubFacade); - $condition1 = new MatchForTotalAmount($stubFacade); $operators = array( MatchForTotalAmount::INPUT1 => Operators::SUPERIOR, @@ -439,7 +438,6 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua ->method('unserializeConditionCollection') ->will($this->returnValue($conditions)); - $stubContainer->expects($this->any()) ->method('get') ->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory)); From 3121fc4f5f81b5f012395c2cd6db18b663afc353 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 14:55:52 +0100 Subject: [PATCH 05/10] clear order and consumed coupon in session after processing order. Fix #162 --- core/lib/Thelia/Action/Coupon.php | 2 ++ core/lib/Thelia/Action/Order.php | 3 ++- .../Core/HttpFoundation/Session/Session.php | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/core/lib/Thelia/Action/Coupon.php b/core/lib/Thelia/Action/Coupon.php index 2bffb19ee..8751dae3b 100755 --- a/core/lib/Thelia/Action/Coupon.php +++ b/core/lib/Thelia/Action/Coupon.php @@ -263,6 +263,8 @@ class Coupon extends BaseAction implements EventSubscriberInterface $orderCoupon->save(); } } + + $request->getSession()->setConsumedCoupons(array()); } /** diff --git a/core/lib/Thelia/Action/Order.php b/core/lib/Thelia/Action/Order.php index 792297642..1abe36508 100755 --- a/core/lib/Thelia/Action/Order.php +++ b/core/lib/Thelia/Action/Order.php @@ -287,7 +287,8 @@ class Order extends BaseAction implements EventSubscriberInterface $sessionOrder = new \Thelia\Model\Order(); $event->setOrder($sessionOrder); $event->setPlacedOrder($placedOrder); - $this->getSession()->setOrder($placedOrder); + $this->getSession()->setProcessedOrder($placedOrder); + $this->getSession()->setOrder(new \Thelia\Model\Order()); /* empty cart */ $this->getDispatcher()->dispatch(TheliaEvents::CART_CLEAR, new CartEvent($this->getCart($this->getRequest()))); diff --git a/core/lib/Thelia/Core/HttpFoundation/Session/Session.php b/core/lib/Thelia/Core/HttpFoundation/Session/Session.php index b35bd4a13..5179d7e56 100755 --- a/core/lib/Thelia/Core/HttpFoundation/Session/Session.php +++ b/core/lib/Thelia/Core/HttpFoundation/Session/Session.php @@ -253,6 +253,26 @@ class Session extends BaseSession return $this->get("thelia.order"); } + /** + * @param Order $order + * @return $this + */ + public function setProcessedOrder(Order $order) + { + $this->set('thelia.order.processed', $order); + + return $this; + } + + /** + * Return an order already processed, usefull for payment modules + * @return Order + */ + public function getProcessedOrder() + { + return $this->get('thelia.order.processed'); + } + /** * Set consumed coupons by the Customer * From 029a7ab9573228d2d7d061717d5f0cba3f646268 Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 15:07:18 +0100 Subject: [PATCH 06/10] complete changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db77a175c..f93028f66 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,9 @@ - Coupon effect inputs are now more customisable (input text, select, ajax, etc.. are usable) and unlimited amount of input for coupon effect are now possible too - when a category is deleted, all subcategories are deleted - delete products when categories are removed. Works only when the category is the default one for this product -- Manager update exists now. +- Manager update exists now. Rune php Thelia thelia:update - Coupon works now +- Improved tax rule configuration #2.0.0-beta2 From b40894e2d40a51067e77c171869b33705dc9f627 Mon Sep 17 00:00:00 2001 From: enurit Date: Fri, 10 Jan 2014 15:18:30 +0100 Subject: [PATCH 07/10] French translation Add of missing french translations --- templates/backOffice/default/I18n/fr_FR.php | 25 +++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/templates/backOffice/default/I18n/fr_FR.php b/templates/backOffice/default/I18n/fr_FR.php index 6ac502754..c447b6d4c 100755 --- a/templates/backOffice/default/I18n/fr_FR.php +++ b/templates/backOffice/default/I18n/fr_FR.php @@ -6,6 +6,9 @@ return array( '(edit)' => '(modification)', '14.50' => '14.50', '0 combinations' => '0 combinaisons', + 'Cannot translate all fields. According to your PHP configuration, forms cannot contains more than + %current_max_input_vars input fields, but at least %required_max_input_vars are required. Please change the value of max_input_vars in your PHP configuration + of change the translation file by hand.' => 'Impossible de traduire tout les champs. Selon votre configuration PHP, les formulaires ne peuvent pas contenir plus de %current_max_input_vars champs input, mais au moins %required_max_input_vars sont nécessaire. Vous devez changer la valeur max_input_vars dans votre fichier de configuration PHP ou modifier le fichier de traduction manuellement.', 'Congratulations, all text is now translated !' => 'Félicitation, tout est traduit !', 'Did not found any text to translate. It\'s probably normal. If not, please be sure to use Smarty\'s "intl" function in templates, or the Translator::trans() method in PHP files.' => 'Aucun texte à traduire trouvé. Cela est probablement normal. Sinon veuillez-vous assurer d\'utiliser la fonction Smarty intl dans vos templates, ou la méthode Translator::trans() dans vos fichiers PHP.', 'A content could be attached to more than one folder. Select here the additional folders for this content.' => 'Un contenu peut-être lié à un ou plusieurs fichier. Sélectionnez ici les dossiers additionnels pour ce contenu.', @@ -78,6 +81,8 @@ return array( 'Can\'t be cumulative' => 'Ne peut être cumulé', 'Can\'t load documents, please refresh this page.' => 'Impossible de charger le document, veuillez rafraîchir cette page.', 'Can\'t load images, please refresh this page.' => 'Impossible de charger les images, veuillez rafraîchir cette page.', + 'Can\'t reorder documents, please refresh this page.' => 'Impossible de réorganiser les documents, rafraichissez la page.', + 'Can\'t reorder images, please refresh this page.' => 'Impossible de réorganiser les images, rafraichissez la page.', 'Cancel' => 'Annuler', 'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure', 'Cancel this order' => 'Annuler cette commande', @@ -106,6 +111,7 @@ return array( 'Change this tax rule' => 'Modifier cette règle de taxe', 'Change this template' => 'Modifier ce template', 'Change this variable' => 'Modifier cette variable', + 'Chapo' => 'Chapeau', 'Check this box if you want to add this attributes to all product templates' => 'Cochez cette case si vous voulez ajouter cette déclinaison à tous les templates produits', 'Check this box if you want to add this features to all product templates' => 'Cochez cette case si voulez ajouter cette caractéristique à tous les templates produit.', 'Choose a country' => 'Choisissez un pays', @@ -309,6 +315,7 @@ return array( 'Document' => 'Document', 'Document informations' => 'Informations sur le document', 'Documents' => 'Documents', + 'Don\'t repeat keywords over and over in a row. Rather, put in keyword phrases.' => 'Ne pas répéter les mots-clés. Il est préférable de les intégrer dans des phrases.', 'Download invoice as PDF' => 'Télécharger la facture au format PDF', 'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF', 'Drop files to upload' => 'Déposez des fichiers à envoyer', @@ -430,6 +437,7 @@ return array( 'Enter new currency position' => 'Modifier la position de la devise', 'Enter new feature position' => 'Modifier la position de la caractéristique', 'Enter new folder position' => 'Modifier la position du dossier', + 'Enter new module position' => 'Entrez l\'emplacement du nouveau module', 'Enter new product position' => 'Classement du produit', 'Enter new value position' => 'Entrez une nouvelle position', 'Enter one or more IP V4 addresses separated by ";". Leave empty to display logs for all IP addresses' => 'Entrez une ou plusieurs adresses IP V4 séparées par un ";". Laissez vide afin d\'afficher les logs pour toutes les adresses IP', @@ -441,6 +449,7 @@ return array( 'Expiration date :' => 'Date de fin de validité', 'Failed to get converted prices. Please try again.' => 'Erreur lors de la récupération des prix convertis. Veuillez réessayer.', 'Failed to get prices. Please try again.' => 'Erreur lors de la récupération des prix. Veuillez réessayer.', + 'Fax number' => 'Numéro de fax', 'Feature Name' => 'Nom de la caractéristique', 'Feature information' => 'Informations sur la caractéristique', 'Feature title' => 'Titre de la caractéristique', @@ -501,6 +510,7 @@ return array( 'Is enabled' => 'Est valide', 'Is removing postage' => 'Offre les frais de port', 'Is unlimited' => 'Est illimité', + 'Keep the most important part of your description in the first 150-160 characters.' => 'Insérez la partie la plus importante de votre description dans les 150-160 premiers caractères.', 'Kg' => 'Kg', 'Label' => 'Libellé', 'Language name' => 'Nom de la langue', @@ -528,6 +538,8 @@ return array( 'Mailing template name' => 'Nom du template de mailing', 'Mailing template purpose' => 'Objectif du template de mailing', 'Mailing templates' => 'Template e-mail', + 'Make sure it uses keywords found within the page itself.' => 'Assurez-vous d\'utiliser des mot-clés qui apparaissent dans le contenu de la page en cours.', + 'Make sure that your title is clear, and contains many of the keywords within the page itself.' => 'Assurez-vous que votre titre est clair et qu\'il contient les mot clés pertinents de la page en cours.', 'Manage module rights' => 'Gestion des accès aux modules', 'Manage resource rights' => 'Gérer les droits d\'accès aux ressources', 'Manage taxes' => 'Gérer les taxes', @@ -573,6 +585,9 @@ return array( 'Order n°' => 'Commande n°', 'Ordered products' => 'Produits commandés', 'Orders' => 'Commandes', + 'Originating file line number ' => 'Nombre de ligne du fichier d\'origine.', + 'Originating file name' => 'Nom du fichier d\'origine.', + 'Originating function name ' => 'Nom de la fonction d\'origine.', 'Other addresses' => 'Autres adresses', 'Overall sales' => 'Total des ventes', 'PDF templates' => 'Template PDF', @@ -669,7 +684,7 @@ return array( 'Rewritten URL' => 'URL réécrites', 'Rights' => 'Droits', 'SEO' => 'SEO', - 'Sale' => 'Vente', + 'Sale' => 'En promo', 'Sale price incl. taxes' => 'Prix de vente taxes incluses', 'Sale price
w/ taxes (%currency)' => 'Prix de vente
sans taxes (%currency)', 'Sale price
w/o taxes (%currency)' => 'Prix de vente
avec taxes (%currency)', @@ -714,6 +729,7 @@ return array( 'Select which items you want to translate' => 'Sélectionnez quels éléments vous voulez traduire', 'Send a mail to this customer' => 'Contacter ce client par mail', 'Send files' => 'Envoyer des fichiers', + 'Sequential number of log line' => 'Numéro de ligne du log.', 'Set as default tax rule' => 'Configurer en tant que règle par défaut', 'Shipping configuration' => 'Configuration du transport', 'Shipping configuration name' => 'Nom de la configuration de livraison', @@ -740,6 +756,7 @@ return array( 'Status' => 'Etat', 'Store' => 'Magasin', 'Store Business Identification Number (SIRET, etc).' => 'Numéro d\'identification de votre magasin (SIRET, etc).', + 'Store address' => 'Adresse du magasin', 'Store configuration' => 'Configuration du magasin', 'Street address' => 'Adresse', 'Subject' => 'Sujet', @@ -763,7 +780,9 @@ return array( 'Template title' => 'Titre du template', 'Templates' => 'Templates', 'Text version of this message' => 'Version texte de ce message', + 'The HTML TITLE element is the most important element on your web page.' => 'La balise HTML TITLE est l\'élément le plus important de votre page.', 'The default pricing is used when no combination is defined.' => 'Le tarif par défaut est utilisé lorsque aucune combinaison n\'est définie.', + 'The destinations processes logs to display, store or send them. You can select and configure zero, one or more destinations below.' => 'Destinations des processus de journaux à afficher, stocker ou envoyer. Vous pouvez sélectionner et configurer aucune, une ou plusieurs destinations ci-dessous.', 'The detailed description.' => 'La description détaillée.', 'The mailing template in HTML format.' => 'Le template de mailing au format HTML', 'The mailing template in text-only format.' => 'Le template de mailing en format text-only.', @@ -821,7 +840,7 @@ return array( 'This year' => 'Cette année', 'Timeout' => 'Timeout', 'Timeout :' => 'Timeout:', - 'Title' => 'Civilité', + 'Title' => 'Titre', 'Title :' => 'Titre', 'To' => 'A', 'To create a new content, select an existing folder, or create a new one.' => 'Piur créer un nouveau contenu, choisissez un des dossiers ci dessus, ou créez un nouveau dossier.', @@ -855,6 +874,7 @@ return array( 'Use Text message defined below' => 'Utiliser le message Text défini ci-dessous', 'Use address by default' => 'Utiliser comme adresse par défaut', 'Use default layout' => 'Utiliser le layout par défaut', + 'Use the keyword phrase in your URL.' => 'Utilisez les mot-clés importants de la page dans votre URL.', 'Use this address by default' => 'Utiliser comme adresse par défaut', 'Used in your store front' => 'Utilisé dans votre vitrine', 'Username' => 'Nom d\'utilisateur', @@ -887,6 +907,7 @@ 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\'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 don\'t need to use commas or other punctuations.' => 'Il n\'est pas nécessaire d\'utiliser d\'apostrophe ou autre ponctuation.', 'Your current IP address is %ip' => 'Votre adresse IP courante est %ip', 'Zip code' => 'Code postal', 'Zones' => 'Zones', From 798129a09417063ad7877a73fef1fd086b8fc33f Mon Sep 17 00:00:00 2001 From: Manuel Raynaud Date: Fri, 10 Jan 2014 15:21:20 +0100 Subject: [PATCH 08/10] update default VAT --- install/insert.sql | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/install/insert.sql b/install/insert.sql index c692ee994..86b26259b 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -1190,15 +1190,15 @@ INSERT INTO `country_i18n` (`id`, `locale`, `title`, `description`, `chapo`, `po INSERT INTO `tax` (`id`, `type`, `serialized_requirements`, `created_at`, `updated_at`) VALUES - (1, 'PricePercentTaxType', 'eyJwZXJjZW50IjoxOS42fQ==', NOW(), NOW()), - (2, 'PricePercentTaxType', 'eyJwZXJjZW50Ijo1LjV9', NOW(), NOW()); + (1, 'PricePercentTaxType', 'eyJwZXJjZW50IjoiMjAifQ==', NOW(), NOW()), + (2, 'PricePercentTaxType', 'eyJwZXJjZW50IjoiMTAifQ==', NOW(), NOW()); INSERT INTO `tax_i18n` (`id`, `locale`, `title`) VALUES - (1, 'fr_FR', 'TVA française à 19.6%'), - (1, 'en_US', 'French 19.6% VAT'), - (2, 'fr_FR', 'TVA française à 5.5%'), - (2, 'en_US', 'French 5.5% VAT'); + (1, 'fr_FR', 'TVA française à 20%'), + (1, 'en_US', 'French 20% VAT'), + (2, 'fr_FR', 'TVA française à 10%'), + (2, 'en_US', 'French 10% VAT'); INSERT INTO `tax_rule` (`id`, `is_default`, `created_at`, `updated_at`) VALUES (1, 1, NOW(), NOW()), @@ -1206,10 +1206,10 @@ INSERT INTO `tax_rule` (`id`, `is_default`, `created_at`, `updated_at`) INSERT INTO `tax_rule_i18n` (`id`, `locale`, `title`) VALUES - (1, 'fr_FR', 'TVA française à 19.6%'), - (1, 'en_US', 'French 19.6% VAT'), - (2, 'fr_FR', 'TVA française à 5.5%'), - (2, 'en_US', 'French 5.5% VAT'); + (1, 'fr_FR', 'TVA française à 20%'), + (1, 'en_US', 'French 20% VAT'), + (2, 'fr_FR', 'TVA française à 10%'), + (2, 'en_US', 'French 10% VAT'); INSERT INTO `tax_rule_country` (`tax_rule_id`, `country_id`, `tax_id`, `position`, `created_at`, `updated_at`) VALUES From d4f47333f203693751dbfd214d6bc5f6660bb2d6 Mon Sep 17 00:00:00 2001 From: enurit Date: Fri, 10 Jan 2014 15:33:59 +0100 Subject: [PATCH 09/10] Front Translation Adding translation for front default template --- templates/frontOffice/default/I18n/fr_FR.php | 125 +++++++++---------- 1 file changed, 60 insertions(+), 65 deletions(-) diff --git a/templates/frontOffice/default/I18n/fr_FR.php b/templates/frontOffice/default/I18n/fr_FR.php index 81af6027e..0ffe8243e 100755 --- a/templates/frontOffice/default/I18n/fr_FR.php +++ b/templates/frontOffice/default/I18n/fr_FR.php @@ -3,17 +3,19 @@ return array( '%nb Item' => '%nb produit', '%nb Items' => '%nb produits', + '+' => '+', '+ View All' => '+ Voir tout', '404' => '404', + 'Sorry! We are not able to give you a delivery method for your order.' => 'Désolé ! Nous n\'avons aucune méthode de livraison pour votre commande.', 'A summary of your order email has been sent to the following address' => 'Un récapitulatif de commande vows a été envoyé par e-mail à l\'adresse suivante : ', 'Account' => 'Mon compte', 'Add a new address' => 'Ajouter une nouvelle adresse', 'Add to cart' => 'Ajouter au panier', 'Additional Info' => 'Informations complémentaires', + 'Address' => 'Adresse', 'Address %nb' => 'Adresse n°', 'Address Update' => 'Mise à jour de l\'adresse', - 'Address' => 'Adresse', - 'Address Line 2'=>'Complément d\'adresse', + 'All rights reserved.' => 'Tout droits réservés.', 'Amount' => 'Montant', 'Availability' => 'Disponibilité', 'Available' => 'Disponible', @@ -23,102 +25,95 @@ return array( 'Cancel' => 'Annuler', 'Cart' => 'Panier', 'Categories' => 'Catégories', - 'Cellphone'=> 'Portable', + 'Change Password' => 'Modifier mon mot de passe', 'Change address' => 'Changer d\'adresse', 'Change my account information' => 'Modifier mes informations personnelles', 'Change my password' => 'Changer mon mot de passe', - 'Change Password' => 'Modifier mon mot de passe', 'Check my order' => 'Vérifier ma commmande', 'Checkout' => 'Payer', 'Choose your delivery address' => 'Choisissez une adresse de livraison', 'Choose your delivery method' => 'Choisissez votre moyen de livraison', 'Choose your payment method' => 'Choisissez voter moyen de paiement', 'Code :' => 'Code', - 'Company Name'=>'Entreprise', - 'Complementary address' => 'Résidence secondaire', 'Contact Us' => 'Contactez-nous', 'Continue Shopping' => 'Continuer mes achats', 'Copyright' => 'Copyright', 'Coupon code' => 'Code promo', + 'Create' => 'Créer', 'Create New Account' => 'Créer un nouveau compte', 'Create New Address' => 'Créer une nouvelle adresse', - 'Create' => 'Créer', - 'Currency:' => 'Monnaie', + 'Currency' => 'Devise', + 'Currency:' => 'Devise', 'Date' => 'Date', - 'Delete address' => 'Supprimer cette adresse', - 'Delivery address' => 'Adresse de livraison', 'Delivery Information' => 'Informations de livraison', + 'Delivery address' => 'Adresse de livraison', 'Demo product description' => 'Exemple de description de produit', 'Demo product title' => 'Exemple de titre', 'Description' => 'Description', 'Do you have an account?' => 'Avez-vous déjà un compte ?', 'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?', - 'Edit this address' => 'Editer cette adresse', 'Edit' => 'Editer', + 'Edit this address' => 'Editer cette adresse', 'Email address' => 'Adresse e-mail', - 'Email Address' => 'Adresse e-mail', + 'Email not displaying correctly?' => 'L\'e-mail ne s\'affiche pas correctement ?', + 'Facebook' => 'Facebook', 'Follow us' => 'Suivez-nous', 'Follow us introduction' => 'Sur les réseaux :', 'Forgot your Password?' => 'Mot de passe oublié ?', 'Free shipping' => 'Livraison gratuite', 'Go home' => 'Retour à l\'accueil', + 'Google+' => 'Google+', 'Grid' => 'Grille', - 'Home address' => 'Résidence principale', 'Home' => 'Accueil', 'In Stock' => 'Disponible', - 'instead of' => 'au lieu de', - 'Item(s)' => 'Produit(s)', - 'I would like to receive the newsletter or the latest news.' => 'Je veux m\'inscrire à la newsletter pour rester informé.', + 'Instagram' => 'Instagram', + 'Language' => 'Langue', 'Language:' => 'Langue', + 'Latest' => 'Nouveautés', 'Latest articles' => 'Nouveaux articles', 'Latest products' => 'Derniers produits', - 'Latest' => 'Nouveautés', - 'List of orders' => 'Liste de mes commandes', 'List' => 'Liste', + 'List of orders' => 'Liste de mes commandes', 'Log In!' => 'Se connecter', 'Log out!' => 'Se déconnecter', - 'Login Information' => 'Informations de connexion', 'Login' => 'Connexion', + 'Login Information' => 'Informations de connexion', 'Main Navigation' => 'Navigation principale', 'Minimum 2 characters.' => '2 caractères minimum.', - 'missing or invalid data' => 'Information éronnée ou incomplète', - 'Multi-payment platform' => 'Plateforme de paiement en ligne',// bizarre ? + 'Multi-payment platform' => 'Plateforme de paiement en ligne', 'My Account' => 'Mon compte', - 'My Address book' => 'Mon carnet d\'adresses', 'My Address Books' => 'Mes carnets d\'adresses', - 'My order' => 'Ma commande', + 'My Address book' => 'Mon carnet d\'adresses', 'My Orders' => 'Mes commandes', + 'My order' => 'Ma commande', + 'Name' => 'Nom', 'Name ascending' => 'Nom croissant', 'Name descending' => 'Nom décroissant', - 'Name' => 'Nom', 'Need help ?' => 'Besoin d\'aide? ', - 'Newsletter Subscription' => 'Inscription à la newsletter', 'Newsletter' => 'Newsletter', - 'Next product' => 'Produits suivants', + 'Newsletter Subscription' => 'Inscription à la newsletter', + 'Next' => 'Suivant', 'Next Step' => 'Etape suivante', - 'Next' => 'Suivant', - 'Next' => 'Suivant', + 'Next product' => 'Produits suivants', + 'No Content in this folder.' => 'Aucun contenu dans ce dossier.', 'No articles currently' => 'Actuellement aucun article', - 'No, I am a new customer.' => 'Non, je suis un nouveau client.', 'No products available in this category' => 'Aucun produit dans cette catégorie.', 'No results found' => 'Aucun résultat', - 'No' => 'Non', 'No.' => 'N°', 'Offers' => 'Promotions', 'Ok' => 'Ok', 'Order details' => 'Détail de commande', 'Order number' => 'Commande numéro', - 'Orders over $50' => 'Commandes supérieures à 50€',//ne devrait-on pas mettre une variable ici? - 'Out of stock' => 'Indisponible', + 'Orders over $50' => 'Commandes supérieures à 50€', + 'Our mailing address is:' => 'Notre adresse mail est :', + 'Out of Stock' => 'Hors stock', 'Pagination' => 'Pagination', - 'Password Forgotten' => 'Mot de passe oublié', 'Password' => 'Mot de passe', - 'Password confirmation'=>"Confirmer le mot de passe", - 'per page' => 'par page', + 'Password Forgotten' => 'Mot de passe oublié', 'Personal Information' => 'Informations personnelles', 'Placeholder address label' => 'Maison, Domicile, Travail...', 'Placeholder address1' => 'Adresse', - 'Placeholder address2' => '', + 'Placeholder address2' => 'Adresse suite', 'Placeholder cellphone' => 'Portable', 'Placeholder city' => 'Ville', 'Placeholder company' => 'Compagnie', @@ -131,46 +126,43 @@ return array( 'Placeholder lastname' => 'Nom de famille', 'Placeholder phone' => 'Téléphone', 'Placeholder zipcode' => 'Code postal', - 'Please enter your email address' => 'Veuillez saisir votre adresse e-mail', 'Please enter your email address below.' => 'Veuillez saisir votre adresse e-mail ci-dessous.', 'Position' => 'Position', - 'Previous product' => 'Produits précédents', 'Previous' => 'Précédent', + 'Previous product' => 'Produits précédents', + 'Price' => 'Prix', 'Price ascending' => 'Prix croissant', 'Price descending' => 'Prix décroissant', - 'Price' => 'Prix', 'Proceed checkout' => 'Payer', 'Product Empty Button' => 'Ajouter mon premier produit', - 'Product Empty Message' => 'C\'est très simple d\'ajouter un produit dans l\'adminsitration. -
    -
  1. N\'oubliez pas de sélectionner NEW dans l\'onglet Details afin de voir votre produit dans la section des nouveautés.
  2. -
  3. N\'oubliez pas de sélectionner SALE dans l\'onglet Details afin de voir votre produit dans la section des promotions.
  4. -
', + 'Product Empty Message' => 'C\'est très simple d\'ajouter un produit dans l\'administration.
  1. N\'oubliez pas de sélectionner NEW dans l\'onglet Details afin de voir votre produit dans la section des nouveautés.
  2. N\'oubliez pas de sélectionner SALE dans l\'onglet Details afin de voir votre produit dans la section des promotions.
', 'Product Empty Title' => 'Bonjour', 'Product Name' => 'Nom du produit', 'Product Offers' => 'Produits en promotion', - 'products' => 'produits', 'Qty' => 'Qté', 'Quantity' => 'Quantité', - 'Questions ? See or F.A.Q.' => 'Des questions ? Voir la F.A.Q.', // bizarre le 'see or ' + 'Questions ? See or F.A.Q.' => 'Des questions ? Voir la F.A.Q.', + 'RSS' => 'RSS', 'Rating' => 'Avis', - 'Ref.' => '', - 'Register!' => 'S\'inscrire !', + 'Ref.' => 'Ref.', 'Register' => 'S\'inscrire', + 'Register!' => 'S\'inscrire !', 'Regular Price:' => 'Prix :', - 'Related' => 'Liés', // voir le contexte pour l'accord - 'Remove this address' => 'Supprimer cette adresse', + 'Related' => 'Liés', 'Remove' => 'Supprimer', - 'Search a product' => 'Chercher un produit', - 'Search Result for' => 'Résultat de recherche pour', + 'Remove this address' => 'Supprimer cette adresse', + 'SELECT YOUR CURRENCY' => 'Sélectionnez votre devise', + 'SELECT YOUR LANGUAGE' => 'Sélectionnez votre langue', 'Search' => 'Recherche', + 'Search Result for' => 'Résultat de recherche pour', + 'Search a product' => 'Chercher un produit', 'Search...' => 'Recherche…', - 'Secure payment' => 'Paiement sécurisé', 'Secure Payment' => 'Paiement sécurisé', + 'Secure payment' => 'Paiement sécurisé', 'Select Country' => 'Choisissez un pays', 'Select Title' => 'Civilité', - 'Send us a message' => 'Envoyer nous un message', 'Send' => 'Envoyer', + 'Send us a message' => 'Envoyer nous un message', 'Shipping Tax' => 'Frais de livraison', 'Show' => 'Voir', 'Sign In' => 'Se connecter', @@ -179,32 +171,31 @@ return array( 'Sort By' => 'Trier par', 'Special Price:' => 'Prix en promotion :', 'Status' => 'Etat', - 'Street Address'=>"Adresse", 'Subscribe' => 'Inscription', - 'Tax Inclusive' => 'TVA incluse', 'Thank you for the trust you place in us.' => 'Merci pour votre confiance. ', 'Thanks !' => 'Merci !', - 'Thanks for signing up! We\'ll keep you posted whenever we have any new updates.' => '', - 'Thanks for your message, we will contact as soon as possible.' => '', - 'The page cannot be found' => '', + 'Thanks for signing up! We\'ll keep you posted whenever we have any new updates.' => 'Merci de votre inscription ! Nous vous tiendrons informé dès qu\'il y aura des nouveautés.', + 'Thanks for your message, we will contact as soon as possible.' => 'Merci de votre message, nous vous contacterons dès que possible.', + 'The page cannot be found' => 'La page ne peut pas être trouvée', 'Thelia V2' => 'Thelia v2', 'Toggle navigation' => 'Navigation alternative', 'Total' => 'Total', - 'TTC' => 'TTC', + 'Twitter' => 'Twitter', 'Unit Price' => 'Prix unitaire', - 'Update Profile' => 'Mettre à jour votre profil', 'Update' => 'Mettre à jour', + 'Update Profile' => 'Mettre à jour votre profil', + 'Update Quantity' => 'Mettre à jour la quantité', 'Upsell Products' => 'Nous vous proposons également', 'Useful links' => 'Liens utiles', + 'View' => 'Voir', + 'View Cart' => 'Voir mon panier', 'View all' => ' Voir tout', 'View as' => 'Voir en tant que ', - 'View Cart' => 'Voir mon panier', + 'View it in your browser' => 'Visualiser le dans votre navigateur.', 'View order %ref as pdf document' => 'Ouvrir la commande %ref dans un pdf', 'View product' => 'Voir le produit', - 'View' => 'Voir', 'Warning' => 'Attention', - 'Yes' => 'Oui', - 'Yes, I have a password :' => 'Oui, j\'ai déjà un mot de passe', + 'Welcome to Thelia. This is a demo site built with Thelia V2 an E-Commerce solution based on Symfony 2.' => 'Bienvenue sur cette boutique Thelia. ce site est une version demo motorisée par la solution e-commerce Thelia v2 basée sur symfony 2.', 'You are here:' => 'Vous êtes ici :', 'You choose to pay by' => 'Vous avez choisi de payer par', 'You don\'t have orders yet.' => 'Vous n\'avez pas encore de commande.', @@ -215,4 +206,8 @@ return array( 'Your Cart' => 'Votre panier', 'Your email address' => 'Votre adresse e-mail', 'Your order will be confirmed by us upon receipt of your payment.' => 'Votre commande sera confirmée à réception de votre pavement.', + 'Youtube' => 'Youtube', + 'instead of' => 'au lieu de', + 'missing or invalid data' => 'Information éronnée ou incomplète', + 'per page' => 'par page', ); From cabe894e13fe6e8fdfe9e7f9acf8d37266f82ee4 Mon Sep 17 00:00:00 2001 From: enurit Date: Fri, 10 Jan 2014 15:37:32 +0100 Subject: [PATCH 10/10] English translation Fix some english translation --- templates/backOffice/default/I18n/en_US.php | 1427 +++++++++---------- 1 file changed, 708 insertions(+), 719 deletions(-) diff --git a/templates/backOffice/default/I18n/en_US.php b/templates/backOffice/default/I18n/en_US.php index c57410ab1..8663b8c48 100755 --- a/templates/backOffice/default/I18n/en_US.php +++ b/templates/backOffice/default/I18n/en_US.php @@ -1,723 +1,712 @@ 'Thelia Back Office', - 'Version %ver' => 'Version %ver', - 'View site' => 'View site', - 'View shop' => 'View shop', - 'Profil' => 'Profile', - 'Close administation session' => 'Close administation session', - 'Logout' => 'Logout', - 'Home' => 'Home', - 'Customers' => 'Customers', - 'Orders' => 'Orders', - 'All orders' => 'All orders', - 'Catalog' => 'Catalog', - 'Folders' => 'Folders', - 'Coupons' => 'Coupons', - 'Configuration' => 'Configuration', - 'Modules' => 'Modules', - 'Search' => 'Search', - 'Thelia, solution e-commerce libre' => 'Thelia, solution e-commerce libre', - '© Thelia 2013' => '© Thelia 2013', - 'Édité par OpenStudio' => 'Édité par OpenStudio', - 'Forum Thelia' => 'Forum Thelia', - 'Contributions Thelia' => 'Contributions Thelia', - 'Thelia Mailing System' => 'Thelia Mailing System', - 'Administration logs' => 'Administration logs', - 'Show logs' => 'Show logs', - 'Period' => 'Period', - 'From' => 'From', - 'To' => 'To', - 'Administrators' => 'Administrators', - 'Resources' => 'Resources', - 'Taxes rules' => 'Taxes rules', - 'Taxes' => 'Taxes', - 'Create a new administrator' => 'Create a new administrator', - 'Login' => 'Login', - 'FirstName' => 'FirstName', - 'LastName' => 'LastName', - 'Profile' => 'Profile', - 'Actions' => 'Actions', - 'Superadministrator' => 'Superadministrator', - 'Change this administrator' => 'Change this administrator', - 'Password' => 'Password', - 'Create' => 'Create', - 'Cancel' => 'Cancel', - 'Leave empty to keep current password' => 'Leave empty to keep current password', - 'Update a new administrator' => 'Update a new administrator', - 'Update' => 'Update', - 'Delete administrator' => 'Delete administrator', - 'Do you really want to delete this administrator ?' => 'Do you really want to delete this administrator ?', - 'You can\'t delete this administrator' => 'You can\'t delete this administrator', - 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.', - 'Label' => 'Label', - 'Company' => 'Company', - 'Firstname' => 'Firstname', - 'Lastname' => 'Lastname', - 'Address' => 'Address', - 'Additional address' => 'Additional address', - 'Zip code' => 'Zip code', - 'City' => 'City', - 'Edit an address' => 'Edit an address', - 'Edit this address' => 'Edit this address', - 'Edit a language' => 'Edit a language', - 'Edit this language' => 'Edit this language', - 'Current product template' => 'Current product template', - 'Do not use a product template' => 'Do not use a product template', - 'Apply' => 'Apply', - 'Product Attributes' => 'Product Attributes', - 'ID' => 'ID', - 'Attribute Name' => 'Attribute Name', - 'This product template does not contains any features' => 'This product template does not contains any features', - 'Product Features' => 'Product Features', - 'Feature Name' => 'Feature Name', - 'Feature value for this product' => 'Feature value for this product', - 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Use Ctrl+click to select more than one value. You can also clear selected values.', - 'Enter here the feature value as free text' => 'Enter here the feature value as free text', - 'Feature value' => 'Feature value', - 'Related content' => 'Related content', - 'Select a folder...' => 'Select a folder...', - 'Select a folder to get its content' => 'Select a folder to get its content', - 'Select a folder content...' => 'Select a folder content...', - 'No available content in this folder' => 'No available content in this folder', - 'No folders found' => 'No folders found', - 'Content title' => 'Content title', - 'Position' => 'Position', - 'Delete this content' => 'Delete this content', - ' (default)' => ' (default)', - 'Category title' => 'Category title', - 'Remove the product from this category' => 'Remove the product from this category', - 'Remove related content' => 'Remove related content', - 'Enter new content position' => 'Enter new content position', - 'Select an attribute...' => 'Select an attribute...', - 'Attribute title' => 'Attribute title', - 'Enter new category position' => 'Enter new category position', - 'Select an feature...' => 'Select an feature...', - 'Select an feature and click (+) to add it to this template' => 'Select an feature and click (+) to add it to this template', - 'Feature title' => 'Feature title', - 'Delete this feature' => 'Delete this feature', - 'This template contains no features' => 'This template contains no features', - 'Remove feature' => 'Remove feature', - 'Do you really want to remove this feature from the template ?' => 'Do you really want to remove this feature from the template ?', - 'Lire la suite' => 'Lire la suite', - 'Edit an attribute' => 'Edit an attribute', - 'Attributes' => 'Attributes', - 'Editing attribute "%name"' => 'Editing attribute "%name"', - 'Attribute information' => 'Attribute information', - 'Attribute values' => 'Attribute values', - 'Enter here all possible attribute values.' => 'Enter here all possible attribute values.', - 'Value' => 'Value', - 'Delete this value' => 'Delete this value', - 'No value has been created yet. Click the + button to create one.' => 'No value has been created yet. Click the + button to create one.', - 'Title' => 'Title', - 'Create a new attribute value' => 'Create a new attribute value', - 'Create this value' => 'Create this value', - 'Delete attribute value' => 'Delete attribute value', - 'Do you really want to delete this attribute value ?' => 'Do you really want to delete this attribute value ?', - 'Enter new value position' => 'Enter new value position', - 'Thelia Product Attributes' => 'Thelia Product Attributes', - 'Product attributes' => 'Product attributes', - 'Thelia product attributes' => 'Thelia product attributes', - 'Add a new product attribute' => 'Add a new product attribute', - 'Change this attribute' => 'Change this attribute', - 'Remove this attribute from all product templates' => 'Remove this attribute from all product templates', - 'Add this attribute to all product templates' => 'Add this attribute to all product templates', - 'Change this product attribute' => 'Change this product attribute', - 'Delete this product attribute' => 'Delete this product attribute', - 'No product attribute has been created yet. Click the + button to create one.' => 'No product attribute has been created yet. Click the + button to create one.', - 'Check this box if you want to add this attributes to all product templates' => 'Check this box if you want to add this attributes to all product templates', - 'Create a new attribute' => 'Create a new attribute', - 'Create this attribute' => 'Create this attribute', - 'Delete attribute' => 'Delete attribute', - 'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Do you really want to delete this attribute ? It will be removed from all product templates.', - 'Add to all product templates' => 'Add 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 ?', - 'Remove from all product templates' => 'Remove from all product templates', - 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.' => 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.', - 'Enter new attribute position' => 'Enter new attribute position', - 'Categories' => 'Categories', - 'Categories in %cat' => 'Categories in %cat', - 'Top level categories' => 'Top level categories', - 'Add a new category' => 'Add a new category', - 'Online' => 'Online', - 'Browse this category' => 'Browse this category', - 'Edit this category' => 'Edit this category', - 'Delete this category and all its contents' => 'Delete this category and all its contents', - 'This category has no sub-categories. To create a new one, click the + button above.' => 'This category has no sub-categories. To create a new one, click the + button above.', - 'This category has no sub-categories.' => 'This category has no sub-categories.', - 'Products in %cat' => 'Products in %cat', - 'Top level Products' => 'Top level Products', - 'Add a new product' => 'Add a new product', - 'Reference' => 'Reference', - 'Product title' => 'Product title', - 'Edit this product' => 'Edit this product', - 'Delete this product' => 'Delete this product', - 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'This category doesn\'t contains any products. To add a new product, click the + button above.', - 'Name' => 'Name', - 'Enter here the category name in the default language (%title)' => 'Enter here the category name in the default language (%title)', - 'Create a new category' => 'Create a new category', - 'Create this category' => 'Create this category', - 'Enter here the product reference' => 'Enter here the product reference', - 'Enter here the product name in the default language (%title)' => 'Enter here the product name in the default language (%title)', - 'Product price' => 'Product price', - 'Enter here the product price in the default currency (%title)' => 'Enter here the product price in the default currency (%title)', - 'Select a tax tule' => 'Select a tax tule', - 'Select here the tax applicable to this product' => 'Select here the tax applicable to this product', - 'Product weight' => 'Product weight', - 'Kg' => 'Kg', - 'Enter here the product weight, in Kilogrammes' => 'Enter here the product weight, in Kilogrammes', - 'Create a new product' => 'Create a new product', - 'Create this product' => 'Create this product', - 'Delete category' => 'Delete category', - 'Do you really want to delete this category and all its content ?' => 'Do you really want to delete this category and all its content ?', - 'Delete product' => 'Delete product', - 'Do you really want to delete this product ?' => 'Do you really want to delete this product ?', - 'Enter new product position' => 'Enter new product position', - 'Edit category' => 'Edit category', - 'Edit category %title' => 'Edit category %title', - 'Preview category page' => 'Preview category page', - 'Edit next category' => 'Edit next category', - 'General description' => 'General description', - 'Associations' => 'Associations', - 'Images' => 'Images', - 'Documents' => 'Documents', - 'Rewritten URL' => 'Rewritten URL', - 'Top level' => 'Top level', - 'Visibility' => 'Visibility', - 'Category created on %date_create. Last modification: %date_change' => 'Category created on %date_create. Last modification: %date_change', - 'You can attach here some content to this category' => 'You can attach here some content to this category', - 'Select a content and click (+) to add it to this category' => 'Select a content and click (+) to add it to this category', - 'This category contains no contents' => 'This category contains no contents', - 'Do you really want to remove this related content ?' => 'Do you really want to remove this related content ?', - 'Files manager' => 'Files manager', - 'Thelia configuration' => 'Thelia configuration', - 'Product catalog configuration' => 'Product catalog configuration', - 'Product templates' => 'Product templates', - 'Product features' => 'Product features', - 'Mailing templates' => 'Mailing templates', - 'Currencies' => 'Currencies', - 'Shipping configuration' => 'Shipping configuration', - 'Countries' => 'Countries', - 'Shipping zones' => 'Shipping zones', - 'System parameters' => 'System parameters', - 'Modules activation' => 'Modules activation', - 'System variables' => 'System variables', - 'Administration profiles' => 'Administration profiles', - 'Languages & URLs' => 'Languages & URLs', - 'Mailing system' => 'Mailing system', - 'System logs' => 'System logs', - 'Edit content' => 'Edit content', - 'Edit content %title' => 'Edit content %title', - 'Preview folder page' => 'Preview folder page', - 'Folder created on %date_create. Last modification: %date_change' => 'Folder created on %date_create. Last modification: %date_change', - 'Remove associated folder' => 'Remove associated folder', - 'Do you really want to remove the content from this folder ?' => 'Do you really want to remove the content from this folder ?', - 'Add a new country' => 'Add a new country', - 'Default' => 'Default', - 'Shop' => 'Shop', - 'N° ISO' => 'N° ISO', - 'ISO Code' => 'ISO Code', - 'Change this country' => 'Change this country', - 'Delete this country' => 'Delete this country', - 'No country has been created yet. Click the + button to create one.' => 'No country has been created yet. Click the + button to create one.', - 'Country title' => 'Country title', - 'Alpha code 2' => 'Alpha code 2', - 'Alpha code 3' => 'Alpha code 3', - 'Create a new country' => 'Create a new country', - 'Create this country' => 'Create this country', - 'Delete country' => 'Delete country', - 'Do you really want to delete this country ?' => 'Do you really want to delete this country ?', - 'Error' => 'Error', - 'Impossible to change default country. Please contact your administrator or try later' => 'Impossible to change default country. Please contact your administrator or try later', - 'Edit a country' => 'Edit a country', - 'Editing country "%name"' => 'Editing country "%name"', - 'Country short description' => 'Country short description', - 'Country description' => 'Country description', - 'And' => 'And', - 'Edit' => 'Edit', - 'Delete' => 'Delete', - 'Code :' => 'Code :', - 'code' => 'code', - 'Title :' => 'Title :', - 'title' => 'title', - 'Is enabled' => 'Is enabled', - 'Is available on special offers' => 'Is available on special offers', - 'Is cumulative' => 'Is cumulative', - 'Is removing postage' => 'Is removing postage', - 'Expiration date :' => 'Expiration date :', - 'yyyy-mm-dd' => 'yyyy-mm-dd', - 'Is unlimited' => 'Is unlimited', - 'Max usage :' => 'Max usage :', - 'max usage' => 'max usage', - 'Type :' => 'Type :', - 'Please select a coupon type' => 'Please select a coupon type', - 'Amount :' => 'Amount :', - '14.50' => '14.50', - 'Short description :' => 'Short description :', - 'short description' => 'short description', - 'Long description :' => 'Long description :', - 'long description' => 'long description', - 'Save your modifications' => 'Save your modifications', - 'Please save your Coupon in oder to affect it some conditions' => 'Please save your Coupon in oder to affect it some conditions', - 'Conditions' => 'Conditions', - 'Save this condition' => 'Save this condition', - 'Please select a condition category' => 'Please select a condition category', - 'Create coupon' => 'Create coupon', - 'Coupon' => 'Coupon', - 'Coupons : ' => 'Coupons : ', - 'Create a new coupon' => 'Create a new coupon', - 'Browse' => 'Browse', - 'List' => 'List', - 'Enabled coupons' => 'Enabled coupons', - 'Code' => 'Code', - 'Days before expiration' => 'Days before expiration', - 'Usage left' => 'Usage left', - 'Unlimited' => 'Unlimited', - 'Disabled coupons' => 'Disabled coupons', - 'Expiration date' => 'Expiration date', - 'Coupon : ' => 'Coupon : ', - 'Amount' => 'Amount', - 'days left' => 'days left', - 'May be cumulative' => 'May be cumulative', - 'Won\'t remove postage' => 'Won\'t remove postage', - 'Will be available on special offers' => 'Will be available on special offers', - 'Application field' => 'Application field', - 'Do you really want to enable this element ?' => 'Do you really want to enable this element ?', - 'Update coupon' => 'Update coupon', - 'Please retry' => 'Please retry', - 'Please select another condition' => 'Please select another condition', - 'Update rates' => 'Update rates', - 'Add a new currency' => 'Add a new currency', - 'ISO 4217 Code' => 'ISO 4217 Code', - 'More information about ISO 4217' => 'More information about ISO 4217', - 'Symbol' => 'Symbol', - 'Rate in €' => 'Rate in €', - 'Change this currency' => 'Change this currency', - 'Delete this currency' => 'Delete this currency', - 'No currency has been created yet. Click the + button to create one.' => 'No currency has been created yet. Click the + button to create one.', - 'Currency name' => 'Currency name', - 'ISO 4217 code' => 'ISO 4217 code', - 'Currency symbol' => 'Currency symbol', - 'Currency rate' => 'Currency rate', - 'Rate' => 'Rate', - 'The rate from Euro (Price in Euro * rate = Price in this currency)' => 'The rate from Euro (Price in Euro * rate = Price in this currency)', - 'Create a new currency' => 'Create a new currency', - 'Create this currency' => 'Create this currency', - 'Delete currency' => 'Delete currency', - 'Do you really want to delete this currency ?' => 'Do you really want to delete this currency ?', - 'Enter new currency position' => 'Enter new currency position', - 'Edit a currency' => 'Edit a currency', - 'Editing currency "%name"' => 'Editing currency "%name"', - 'Currency ISO 4217 Code' => 'Currency ISO 4217 Code', - 'Rate from Euro' => 'Rate from Euro', - 'Edit a customer' => 'Edit a customer', - 'Editing customer "%name"' => 'Editing customer "%name"', - 'Save' => 'Save', - 'Save and close' => 'Save and close', - 'Customer informations' => 'Customer informations', - 'Default address' => 'Default address', - 'Other addresses' => 'Other addresses', - 'Add a new address' => 'Add a new address', - 'Phone' => 'Phone', - 'cell phone' => 'cell phone', - 'Use this address by default' => 'Use this address by default', - 'Delete this customer and all his orders' => 'Delete this customer and all his orders', - 'orders for this customer' => 'orders for this customer', - 'Order n°' => 'Order n°', - 'Date & Hour' => 'Date & Hour', - 'Status' => 'Status', - 'Create an address' => 'Create an address', - 'Create this address' => 'Create this address', - 'Use address by default' => 'Use address by default', - 'Do you really want to use this address by default ?' => 'Do you really want to use this address by default ?', - 'Delete address' => 'Delete address', - 'Do you really want to delete this address ?' => 'Do you really want to delete this address ?', - 'Customer' => 'Customer', - 'Customers list' => 'Customers list', - 'Add a new Customer' => 'Add a new Customer', - 'customer ref' => 'customer ref', - 'firstname & lastname' => 'firstname & lastname', - 'last order' => 'last order', - 'order amount' => 'order amount', - 'Edit this customer' => 'Edit this customer', - 'Send a mail to this customer' => 'Send a mail to this customer', - 'Email address' => 'Email address', - 'Create a new customer' => 'Create a new customer', - 'Create this customer' => 'Create this customer', - 'Delete customer' => 'Delete customer', - 'Do you really want to delete this customer ?' => 'Do you really want to delete this customer ?', - 'Back' => 'Back', - 'Description' => 'Description', - 'Edit a feature' => 'Edit a feature', - 'Features' => 'Features', - 'Editing feature "%name"' => 'Editing feature "%name"', - 'Feature information' => 'Feature information', - 'Feature values' => 'Feature values', - 'Enter here all possible feature values. To get a free text feature in product forms, don\'t add any value.' => 'Enter here all possible feature values. To get a free text feature in product forms, don\'t add any value.', - 'Create a new feature value' => 'Create a new feature value', - 'Delete feature value' => 'Delete feature value', - 'Do you really want to delete this feature value ?' => 'Do you really want to delete this feature value ?', - 'Thelia Product Features' => 'Thelia Product Features', - 'Thelia product features' => 'Thelia product features', - 'Add a new product feature' => 'Add a new product feature', - 'Change this feature' => 'Change this feature', - 'Remove this feature from all product templates' => 'Remove this feature from all product templates', - 'Add this feature to all product templates' => 'Add this feature to all product templates', - 'Change this product feature' => 'Change this product feature', - 'Delete this product feature' => 'Delete this product feature', - 'No product feature has been created yet. Click the + button to create one.' => 'No product feature has been created yet. Click the + button to create one.', - 'Check this box if you want to add this features to all product templates' => 'Check this box if you want to add this features to all product templates', - 'Create a new feature' => 'Create a new feature', - 'Create this feature' => 'Create this feature', - 'Delete feature' => 'Delete feature', - 'Do you really want to delete this feature ? It will be removed from all product templates.' => 'Do you really want to delete this feature ? It will be removed from 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 remove this feature from all product templates ? You\'ll loose all product related data for this feature.' => 'Do you really want to remove this feature from all product templates ? You\'ll loose all product related data for this feature.', - 'Enter new feature position' => 'Enter new feature position', - 'Details' => 'Details', - 'Folders in %fold' => 'Folders in %fold', - 'Top level folders' => 'Top level folders', - 'Add a new folder' => 'Add a new folder', - 'Folder title' => 'Folder title', - 'Browse this folder' => 'Browse this folder', - 'Edit this folder' => 'Edit this folder', - 'Delete this folder and all its contents' => 'Delete this folder and all its contents', - 'This folder has no sub-folders. To create a new one, click the + button above.' => 'This folder has no sub-folders. To create a new one, click the + button above.', - 'This folder has no sub-folders.' => 'This folder has no sub-folders.', - 'Contents in %fold' => 'Contents in %fold', - 'Top level Contents' => 'Top level Contents', - 'Add a new content' => 'Add a new content', - 'Edit this content' => 'Edit this content', - 'This folder doesn\'t contains any contents. To add a new content, click the + button above.' => 'This folder doesn\'t contains any contents. To add a new content, click the + button above.', - 'Enter here the folder name in the default language (%title)' => 'Enter here the folder name in the default language (%title)', - 'Create a new folder' => 'Create a new folder', - 'Create this folder' => 'Create this folder', - 'Enter here the content name in the default language (%title)' => 'Enter here the content name in the default language (%title)', - 'Create a new content' => 'Create a new content', - 'Create this content' => 'Create this content', - 'Delete folder' => 'Delete folder', - 'Do you really want to delete this folder and all its content ?' => 'Do you really want to delete this folder and all its content ?', - 'Delete content' => 'Delete content', - 'Do you really want to delete this content ?' => 'Do you really want to delete this content ?', - 'Enter new folder position' => 'Enter new folder position', - 'An error occured' => 'An error occured', - 'Oops! An Error Occurred' => 'Oops! An Error Occurred', - 'Go to administration home' => 'Go to administration home', - 'Back-office home' => 'Back-office home', - 'Dashboard' => 'Dashboard', - 'Sales' => 'Sales', - 'New customers' => 'New customers', - 'First orders' => 'First orders', - 'Aborted orders' => 'Aborted orders', - 'Shop Informations' => 'Shop Informations', - 'Products' => 'Products', - 'Online products' => 'Online products', - 'Offline products' => 'Offline products', - 'Sales statistics' => 'Sales statistics', - 'Today' => 'Today', - 'This month' => 'This month', - 'This year' => 'This year', - 'Overall sales' => 'Overall sales', - 'Sales excluding shipping' => 'Sales excluding shipping', - 'Yesterday sales' => 'Yesterday sales', - 'Average cart' => 'Average cart', - 'Previous month sales' => 'Previous month sales', - 'Previous year sales' => 'Previous year sales', - 'Thelia informations' => 'Thelia informations', - 'Current version' => 'Current version', - 'Latest version available' => 'Latest version available', - 'News' => 'News', - 'Click here' => 'Click here', - 'Editing %cat' => 'Editing %cat', - '(edit)' => '(edit)', - 'Editing %title' => 'Editing %title', - 'Confirmation' => 'Confirmation', - 'Do you really want to delete this element ?' => 'Do you really want to delete this element ?', - 'Confirm' => 'Confirm', - 'Additional Folders' => 'Additional Folders', - 'A content could be attached to more than one folder. Select here the additional fodlers for this content.' => 'A content could be attached to more than one folder. Select here the additional fodlers for this content.', - 'You can change the default folder (%title) in the "General" tab.' => 'You can change the default folder (%title) in the "General" tab.', - 'Select a folder and click (+) to add it to the additional folder list' => 'Select a folder and click (+) to add it to the additional folder list', - 'No Folders found' => 'No Folders found', - 'This product doesn\'t belong to any additional folder.' => 'This product doesn\'t belong to any additional folder.', - 'Send files' => 'Send files', - 'Drop files to upload' => 'Drop files to upload', - 'Browse files' => 'Browse files', - 'There is no documents attached to this %type.' => 'There is no documents attached to this %type.', - 'No' => 'No', - 'Yes' => 'Yes', - 'OK' => 'OK', - 'Update this image' => 'Update this image', - 'There is no images attached to this %type.' => 'There is no images attached to this %type.', - 'Edit information in %lng' => 'Edit information in %lng', - 'Edit prices in %curr' => 'Edit prices in %curr', - 'Close' => 'Close', - 'classic modules' => 'classic modules', - 'Enable/Disable' => 'Enable/Disable', - 'Deactivate %title module' => 'Deactivate %title module', - 'deactivation' => 'deactivation', - 'Edit this module' => 'Edit this module', - 'Delete this module' => 'Delete this module', - 'Price excl. taxes' => 'Price excl. taxes', - 'Current quantity' => 'Current quantity', - 'Attribute Combinations' => 'Attribute Combinations', - 'Quickly create combinations using the combination builder' => 'Quickly create combinations using the combination builder', - 'Combination builder' => 'Combination builder', - 'Add a new combination' => 'Add a new combination', - 'EAN Code' => 'EAN Code', - 'Quantity' => 'Quantity', - 'Price
w/o taxes (%currency)' => 'Price
w/o taxes (%currency)', - 'Price
w/ taxes (%currency)' => 'Price
w/ taxes (%currency)', - 'Weight
(Kg)' => 'Weight
(Kg)', - 'Sale' => 'Sale', - 'New' => 'New', - 'Sale price
w/o taxes (%currency)' => 'Sale price
w/o taxes (%currency)', - 'Sale price
w/ taxes (%currency)' => 'Sale price
w/ taxes (%currency)', - 'Delete this combination' => 'Delete this combination', - 'Attribute' => 'Attribute', - 'Select an attribute and click (+) to view available values' => 'Select an attribute and click (+) to view available values', - 'Select an attribute value...' => 'Select an attribute value...', - 'Select a value click (+) to add it to the combination' => 'Select a value click (+) to add it to the combination', - 'No available value for this attribute' => 'No available value for this attribute', - 'To remove a value from the combination, select it and click "remove"' => 'To remove a value from the combination, select it and click "remove"', - 'Remove selected values' => 'Remove selected values', - 'Create a new combination' => 'Create a new combination', - 'Create this combination' => 'Create this combination', - 'Delete a combination' => 'Delete a combination', - 'Do you really want to delete this combination ?' => 'Do you really want to delete this combination ?', - 'Select attribute values to combine. You may enter a default value for some of the fields of the generated combinations.' => 'Select attribute values to combine. You may enter a default value for some of the fields of the generated combinations.', - 'Combination reference' => 'Combination reference', - 'Combination EAN Code' => 'Combination EAN Code', - '0 combinations' => '0 combinations', - 'Create combinations' => 'Create combinations', - 'Product reference' => 'Product reference', - 'You can attach this product to more categories in the details tab.' => 'You can attach this product to more categories in the details tab.', - 'Product created on %date_create. Last modification: %date_change' => 'Product created on %date_create. Last modification: %date_change', - 'A short description, used when a summary or an introduction is required' => 'A short description, used when a summary or an introduction is required', - 'Short description' => 'Short description', - 'The detailed description.' => 'The detailed description.', - 'A short post-description information' => 'A short post-description information', - 'Short conclusion' => 'Short conclusion', - 'Thelia Languages' => 'Thelia Languages', - 'Languages' => 'Languages', - 'Languages management' => 'Languages management', - 'Add a new language' => 'Add a new language', - 'Language name' => 'Language name', - 'ISO 639 Code' => 'ISO 639 Code', - 'Locale' => 'Locale', - 'date form' => 'date form', - 'time form' => 'time form', - 'Change this language' => 'Change this language', - 'Delete this language' => 'Delete this language', - 'Parameters' => 'Parameters', - 'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :', - 'Using a domain or subdomain for each language' => 'Using a domain or subdomain for each language', - 'activate' => 'activate', - 'deactivate' => 'deactivate', - 'Language title' => 'Language title', - 'en_US' => 'en_US', - 'd-m-Y' => 'd-m-Y', - 'H:i:s' => 'H:i:s', - 'Create a new language' => 'Create a new language', - 'Create this language' => 'Create this language', - 'Delete language' => 'Delete language', - 'Do you really want to delete this language ?' => 'Do you really want to delete this language ?', - 'Impossible to change default languages. Please contact your administrator or try later' => 'Impossible to change default languages. Please contact your administrator or try later', - 'Username' => 'Username', - 'Configuration mailing system' => 'Configuration mailing system', - 'Enable remote SMTP use : ' => 'Enable remote SMTP use : ', - 'Host :' => 'Host :', - 'Host' => 'Host', - 'Port :' => 'Port :', - 'Port' => 'Port', - 'Encryption :' => 'Encryption :', - 'Encryption' => 'Encryption', - 'Username :' => 'Username :', - 'Password :' => 'Password :', - 'Auth Mode :' => 'Auth Mode :', - 'Auth Mode' => 'Auth Mode', - 'Timeout :' => 'Timeout :', - 'Timeout' => 'Timeout', - 'Source IP :' => 'Source IP :', - 'Source IP' => 'Source IP', - 'Edit a mailing template' => 'Edit a mailing template', - 'Editing mailing template "%name"' => 'Editing mailing template "%name"', - 'Variable name' => 'Variable name', - 'Subject' => 'Subject', - 'The mailing template in HTML format.' => 'The mailing template in HTML format.', - 'The mailing template in text-only format.' => 'The mailing template in text-only format.', - 'Message created on %date_create. Last modification: %date_change' => 'Message created on %date_create. Last modification: %date_change', - 'Thelia Mailing Templates' => 'Thelia Mailing Templates', - 'Thelia mailing templates' => 'Thelia mailing templates', - 'Add a new mailing template' => 'Add a new mailing template', - 'Purpose' => 'Purpose', - 'Change this mailing template' => 'Change this mailing template', - 'Delete this mailing template' => 'Delete this mailing template', - 'No mailing template has been created yet. Click the + button to create one.' => 'No mailing template has been created yet. Click the + button to create one.', - 'Mailing template name' => 'Mailing template name', - 'Mailing template purpose' => 'Mailing template purpose', - 'Create a new mailing template' => 'Create a new mailing template', - 'Create this mailing template' => 'Create this mailing template', - 'Delete mailing template' => 'Delete mailing template', - 'Do you really want to delete this mailing template ?' => 'Do you really want to delete this mailing template ?', - 'Classic modules' => 'Classic modules', - 'Delivery modules' => 'Delivery modules', - 'Payment modules' => 'Payment modules', - 'Delete a module' => 'Delete a module', - 'Do you really want to delete this module ?' => 'Do you really want to delete this module ?', - 'Edit an order' => 'Edit an order', - 'Ordered products' => 'Ordered products', - 'Invoice and Delivery' => 'Invoice and Delivery', - 'Cart' => 'Cart', - 'Product' => 'Product', - 'Unit. price' => 'Unit. price', - 'Tax' => 'Tax', - 'Unit taxed price' => 'Unit taxed price', - 'Taxed total' => 'Taxed total', - 'Total without discount' => 'Total without discount', - 'Discount' => 'Discount', - 'Coupon code' => 'Coupon code', - 'Total including discount' => 'Total including discount', - 'Postage' => 'Postage', - 'Total' => 'Total', - 'Payment information' => 'Payment information', - 'Payment module' => 'Payment module', - 'Transaction reference' => 'Transaction reference', - 'Delivery module' => 'Delivery module', - 'tracking reference' => 'tracking reference', - 'Invoice informations' => 'Invoice informations', - 'Download invoice as PDF' => 'Download invoice as PDF', - 'PDF | Invoice' => 'PDF | Invoice', - 'Edit invoice address' => 'Edit invoice address', - 'Invoice reference' => 'Invoice reference', - 'Invoice date' => 'Invoice date', - 'Street address' => 'Street address', - 'Country' => 'Country', - 'Delivery address' => 'Delivery address', - 'Download purchase order as PDF' => 'Download purchase order as PDF', - 'PDF | Purchase order' => 'PDF | Purchase order', - 'Edit delivery address' => 'Edit delivery address', - 'Edit order address' => 'Edit order address', - 'Confirm changes' => 'Confirm changes', - 'Edit this order' => 'Edit this order', - 'Cancel this order' => 'Cancel this order', - 'Delete an order' => 'Delete an order', - 'Do you really want to cancel this order ?' => 'Do you really want to cancel this order ?', - 'Edit product' => 'Edit product', - 'Edit product %title' => 'Edit product %title', - 'Preview product page' => 'Preview product page', - 'General' => 'General', - 'Attributes & Features' => 'Attributes & Features', - 'Please wait, loading' => 'Please wait, loading', - 'Failed to get converted prices. Please try again.' => 'Failed to get converted prices. Please try again.', - 'Failed to get prices. Please try again.' => 'Failed to get prices. Please try again.', - 'Existing combinations will be deleted. Do you want to continue ?' => 'Existing combinations will be deleted. Do you want to continue ?', - 'Profiles' => 'Profiles', - 'Postscriptum' => 'Postscriptum', - 'View' => 'View', - 'Create a new profile' => 'Create a new profile', - 'Profile code' => 'Profile code', - 'Delete profile' => 'Delete profile', - 'Do you really want to delete this profile ?' => 'Do you really want to delete this profile ?', - 'You can\'t delete this profile' => 'You can\'t delete this profile', - 'They are some administrator which are linked to this profile. Please edit/remove them before deleting this profile.' => 'They are some administrator which are linked to this profile. Please edit/remove them before deleting this profile.', - 'company' => 'company', - 'Edit a shipping configuration' => 'Edit a shipping configuration', - 'Editing shipping configuration "%name"' => 'Editing shipping configuration "%name"', - 'Edit shipping configuration %title' => 'Edit shipping configuration %title', - 'Add this country' => 'Add this country', - 'No area defined with this id' => 'No area defined with this id', - 'Remove country' => 'Remove country', - 'Do you really want to remove this country ?' => 'Do you really want to remove this country ?', - 'Thelia Shipping configuration' => 'Thelia Shipping configuration', - 'Add a new shipping configuration' => 'Add a new shipping configuration', - 'Change this shipping configuration' => 'Change this shipping configuration', - 'Delete this shipping configuration' => 'Delete this shipping configuration', - 'Shipping configuration name' => 'Shipping configuration name', - 'Create a new shipping configuration' => 'Create a new shipping configuration', - 'Create this shipping configuration' => 'Create this shipping configuration', - 'Delete shipping configuration' => 'Delete shipping configuration', - 'Do you really want to delete this shipping configuration ?' => 'Do you really want to delete this shipping configuration ?', - 'Edit a shipping zone' => 'Edit a shipping zone', - 'Editing shipping zone "%name"' => 'Editing shipping zone "%name"', - 'Edit shipping zone %title' => 'Edit shipping zone %title', - 'Add' => 'Add', - 'Zones' => 'Zones', - 'Delete this zone' => 'Delete this zone', - 'Remove zone' => 'Remove zone', - 'Do you really want to remove this zone ?' => 'Do you really want to remove this zone ?', - 'Thelia Shipping zones' => 'Thelia Shipping zones', - 'Change this shipping zone' => 'Change this shipping zone', - 'Edit a tax' => 'Edit a tax', - 'Editing tax' => 'Editing tax', - 'Tax created on %date_create. Last modification: %date_change' => 'Tax created on %date_create. Last modification: %date_change', - 'Edit a tax rule' => 'Edit a tax rule', - 'Editing tax rule' => 'Editing tax rule', - 'Tax rule created on %date_create. Last modification: %date_change' => 'Tax rule created on %date_create. Last modification: %date_change', - 'Manage taxes' => 'Manage taxes', - 'Choose a country' => 'Choose a country', - 'Countries that have the same tax rule' => 'Countries that have the same tax rule', - 'NONE' => 'NONE', - 'Manage the tax rule taxes appliance order' => 'Manage the tax rule taxes appliance order', - 'Add tax to this group' => 'Add tax to this group', - 'Drop tax here to create a tax group' => 'Drop tax here to create a tax group', - 'Drop tax here to delete from group' => 'Drop tax here to delete from group', - 'Tax rule taxes will be update for the following countries :' => 'Tax rule taxes will be update for the following countries :', - 'uncheck all' => 'uncheck all', - 'Update tax rule taxes' => 'Update tax rule taxes', - 'Edit tax rule taxes' => 'Edit tax rule taxes', - 'In order to manges your shop taxes you can manage' => 'In order to manges your shop taxes you can manage', - 'taxes' => 'taxes', - 'and' => 'and', - 'tax rules' => 'tax rules', - 'Taxes define the amount of money which is add to a bought product.' => 'Taxes define the amount of money which is add to a bought product.', - 'Example :' => 'Example :', - 'French 19.6% VAT is a tax which add a 19.6% tax to the product price.' => 'French 19.6% VAT is a tax which add a 19.6% tax to the product price.', - 'Ecotax is a tax wich add a defined amount (throug a product feature) to the product price.' => 'Ecotax is a tax wich add a defined amount (throug a product feature) to the product price.', - 'Tax rules are combination of different taxes.' => 'Tax rules are combination of different taxes.', - 'French 19.6% VAT with ecotax is the applicance of the ecotax (on the product price) then the applicance of the 19.6% tax (on the product price + the ecotax amount).' => 'French 19.6% VAT with ecotax is the applicance of the ecotax (on the product price) then the applicance of the 19.6% tax (on the product price + the ecotax amount).', - 'you can combine taxes in tax rules and chose if they are applied one after the other or at the same time : it allows to apply taxes on an already taxed price or not.' => 'you can combine taxes in tax rules and chose if they are applied one after the other or at the same time : it allows to apply taxes on an already taxed price or not.', - 'Create a new tax' => 'Create a new tax', - 'Change this tax' => 'Change this tax', - 'Delete this tax' => 'Delete this tax', - 'Create a new tax rule' => 'Create a new tax rule', - 'Change this tax rule' => 'Change this tax rule', - 'Set as default tax rule' => 'Set as default tax rule', - 'Delete this tax rule' => 'Delete this tax rule', - 'Delete tax' => 'Delete tax', - 'Do you really want to delete this tax ?' => 'Do you really want to delete this tax ?', - 'Delete tax rule' => 'Delete tax rule', - 'Do you really want to delete this tax rule ?' => 'Do you really want to delete this tax rule ?', - 'Thelia Product Templates' => 'Thelia Product Templates', - 'Thelia product templates' => 'Thelia product templates', - 'Add a new product template' => 'Add a new product template', - 'Change this template' => 'Change this template', - 'Change this product template' => 'Change this product template', - 'Delete this product template' => 'Delete this product template', - 'No product template has been created yet. Click the + button to create one.' => 'No product template has been created yet. Click the + button to create one.', - 'Template title' => 'Template title', - 'Create a new product template' => 'Create a new product template', - 'Create this product template' => 'Create this product template', - 'Delete template' => 'Delete template', - 'Do you really want to delete this template ? It will be removed from all products.' => 'Do you really want to delete this template ? It will be removed from all products.', - 'Warning' => 'Warning', - 'Edit a system variable' => 'Edit a system variable', - 'Editing variable "%name"' => 'Editing variable "%name"', - 'Variable value' => 'Variable value', - 'Variable created on %date_create. Last modification: %date_change' => 'Variable created on %date_create. Last modification: %date_change', - 'Thelia System Variables' => 'Thelia System Variables', - 'Thelia system variables' => 'Thelia system variables', - 'Add a new variable' => 'Add a new variable', - 'Save chages' => 'Save chages', - 'Save changes' => 'Save changes', - 'Action' => 'Action', - 'Change this variable' => 'Change this variable', - 'Cancel changes and revert to original value' => 'Cancel changes and revert to original value', - 'Delete this variable' => 'Delete this variable', - 'Variable purpose' => 'Variable purpose', - 'Create a new variable' => 'Create a new variable', - 'Create this variable' => 'Create this variable', - 'Delete a variable' => 'Delete a variable', - 'Do you really want to delete this variable ?' => 'Do you really want to delete this variable ?', + ' (default)' => ' (default)', + '© Thelia 2013' => '© Thelia 2013', + '(edit)' => '(edit)', + '14.50' => '14.50', + '0 combinations' => '0 combinations', + 'A short description, used when a summary or an introduction is required' => 'A short description, used when a summary or an introduction is required', + 'A short post-description information' => 'A short post-description information', + 'Aborted orders' => 'Aborted orders', + 'Action' => 'Action', + 'Actions' => 'Actions', + 'Add' => 'Add', + 'Add a new Customer' => 'Add a new Customer', + 'Add a new address' => 'Add a new address', + 'Add a new category' => 'Add a new category', + 'Add a new combination' => 'Add a new combination', + 'Add a new content' => 'Add a new content', + 'Add a new country' => 'Add a new country', + 'Add a new currency' => 'Add a new currency', + 'Add a new folder' => 'Add a new folder', + 'Add a new language' => 'Add a new language', + 'Add a new mailing template' => 'Add a new mailing template', + 'Add a new product' => 'Add a new product', + 'Add a new product attribute' => 'Add a new product attribute', + 'Add a new product feature' => 'Add a new product feature', + 'Add a new product template' => 'Add a new product template', + 'Add a new shipping configuration' => 'Add a new shipping configuration', + 'Add a new variable' => 'Add a new variable', + 'Add tax to this group' => 'Add tax to this group', + 'Add this attribute to all product templates' => 'Add this attribute to all product templates', + 'Add this country' => 'Add this country', + 'Add this feature to all product templates' => 'Add this feature to all product templates', + 'Add to all product templates' => 'Add to all product templates', + 'Additional Folders' => 'Additional Folders', + 'Additional address' => 'Additional address', + 'Address' => 'Address', + 'Administration logs' => 'Administration logs', + 'Administration profiles' => 'Administration profiles', + 'Administrators' => 'Administrators', + 'All orders' => 'All orders', + 'Alpha code 2' => 'Alpha code 2', + 'Alpha code 3' => 'Alpha code 3', + 'Amount' => 'Amount', + 'Amount :' => 'Amount :', + 'An error occured' => 'An error occured', + 'And' => 'And', + 'Application field' => 'Application field', + 'Apply' => 'Apply', + 'Associations' => 'Associations', + 'Attribute' => 'Attribute', + 'Attribute Combinations' => 'Attribute Combinations', + 'Attribute Name' => 'Attribute Name', + 'Attribute information' => 'Attribute information', + 'Attribute title' => 'Attribute title', + 'Attribute values' => 'Attribute values', + 'Attributes' => 'Attributes', + 'Attributes & Features' => 'Attributes & Features', + 'Auth Mode' => 'Auth Mode', + 'Auth Mode :' => 'Auth Mode :', + 'Average cart' => 'Average cart', + 'Back' => 'Back', + 'Back-office home' => 'Back-office home', + 'Browse' => 'Browse', + 'Browse files' => 'Browse files', + 'Browse this category' => 'Browse this category', + 'Browse this folder' => 'Browse this folder', + 'Cancel' => 'Cancel', + 'Cancel changes and revert to original value' => 'Cancel changes and revert to original value', + 'Cancel this order' => 'Cancel this order', + 'Cart' => 'Cart', + 'Catalog' => 'Catalog', + 'Categories' => 'Categories', + 'Categories in %cat' => 'Categories in %cat', + 'Category created on %date_create. Last modification: %date_change' => 'Category created on %date_create. Last modification: %date_change', + 'Category title' => 'Category title', + 'Change this administrator' => 'Change this administrator', + 'Change this attribute' => 'Change this attribute', + 'Change this country' => 'Change this country', + 'Change this currency' => 'Change this currency', + 'Change this feature' => 'Change this feature', + 'Change this language' => 'Change this language', + 'Change this mailing template' => 'Change this mailing template', + 'Change this product attribute' => 'Change this product attribute', + 'Change this product feature' => 'Change this product feature', + 'Change this product template' => 'Change this product template', + 'Change this shipping configuration' => 'Change this shipping configuration', + 'Change this shipping zone' => 'Change this shipping zone', + 'Change this tax' => 'Change this tax', + 'Change this tax rule' => 'Change this tax rule', + 'Change this template' => 'Change this template', + 'Change this variable' => 'Change this variable', + 'Check this box if you want to add this attributes to all product templates' => 'Check this box if you want to add this attributes to all product templates', + 'Check this box if you want to add this features to all product templates' => 'Check this box if you want to add this features to all product templates', + 'Choose a country' => 'Choose a country', + 'City' => 'City', + 'Classic modules' => 'Classic modules', + 'Click here' => 'Click here', + 'Close' => 'Close', + 'Close administation session' => 'Close administration session', + 'Code' => 'Code', + 'Code :' => 'Code :', + 'Combination EAN Code' => 'Combination EAN Code', + 'Combination builder' => 'Combination builder', + 'Combination reference' => 'Combination reference', + 'Company' => 'Company', + 'Conditions' => 'Conditions', + 'Configuration' => 'Configuration', + 'Configuration mailing system' => 'Configuration mailing system', + 'Confirm' => 'Confirm', + 'Confirm changes' => 'Confirm changes', + 'Confirmation' => 'Confirmation', + 'Content title' => 'Content title', + 'Contents in %fold' => 'Contents in %fold', + 'Countries' => 'Countries', + 'Countries that have the same tax rule' => 'Countries that have the same tax rule', + 'Country' => 'Country', + 'Country description' => 'Country description', + 'Country short description' => 'Country short description', + 'Country title' => 'Country title', + 'Coupon' => 'Coupon', + 'Coupon : ' => 'Coupon : ', + 'Coupon code' => 'Coupon code', + 'Coupons' => 'Coupons', + 'Coupons : ' => 'Coupons : ', + 'Create' => 'Create', + 'Create a new administrator' => 'Create a new administrator', + 'Create a new attribute' => 'Create a new attribute', + 'Create a new attribute value' => 'Create a new attribute value', + 'Create a new category' => 'Create a new category', + 'Create a new combination' => 'Create a new combination', + 'Create a new content' => 'Create a new content', + 'Create a new country' => 'Create a new country', + 'Create a new coupon' => 'Create a new coupon', + 'Create a new currency' => 'Create a new currency', + 'Create a new customer' => 'Create a new customer', + 'Create a new feature' => 'Create a new feature', + 'Create a new feature value' => 'Create a new feature value', + 'Create a new folder' => 'Create a new folder', + 'Create a new language' => 'Create a new language', + 'Create a new mailing template' => 'Create a new mailing template', + 'Create a new product' => 'Create a new product', + 'Create a new product template' => 'Create a new product template', + 'Create a new profile' => 'Create a new profile', + 'Create a new shipping configuration' => 'Create a new shipping configuration', + 'Create a new tax' => 'Create a new tax', + 'Create a new tax rule' => 'Create a new tax rule', + 'Create a new variable' => 'Create a new variable', + 'Create combinations' => 'Create combinations', + 'Create coupon' => 'Create coupon', + 'Create this address' => 'Create this address', + 'Create this attribute' => 'Create this attribute', + 'Create this category' => 'Create this category', + 'Create this combination' => 'Create this combination', + 'Create this content' => 'Create this content', + 'Create this country' => 'Create this country', + 'Create this currency' => 'Create this currency', + 'Create this customer' => 'Create this customer', + 'Create this feature' => 'Create this feature', + 'Create this folder' => 'Create this folder', + 'Create this language' => 'Create this language', + 'Create this mailing template' => 'Create this mailing template', + 'Create this product' => 'Create this product', + 'Create this product template' => 'Create this product template', + 'Create this shipping configuration' => 'Create this shipping configuration', + 'Create this value' => 'Create this value', + 'Create this variable' => 'Create this variable', + 'Currencies' => 'Currencies', + 'Currency ISO 4217 Code' => 'Currency ISO 4217 Code', + 'Currency name' => 'Currency name', + 'Currency rate' => 'Currency rate', + 'Currency symbol' => 'Currency symbol', + 'Current product template' => 'Current product template', + 'Current quantity' => 'Current quantity', + 'Current version' => 'Current version', + 'Customer' => 'Customer', + 'Customer informations' => 'Customer informations', + 'Customers' => 'Customers', + 'Customers list' => 'Customers list', + 'Dashboard' => 'Dashboard', + 'Date & Hour' => 'Date & Hour', + 'Days before expiration' => 'Days before expiration', + 'Deactivate %title module' => 'Deactivate %title module', + 'Default' => 'Default', + 'Default address' => 'Default address', + 'Delete' => 'Delete', + 'Delete a combination' => 'Delete a combination', + 'Delete a module' => 'Delete a module', + 'Delete a variable' => 'Delete a variable', + 'Delete address' => 'Delete address', + 'Delete administrator' => 'Delete administrator', + 'Delete an order' => 'Delete an order', + 'Delete attribute' => 'Delete attribute', + 'Delete attribute value' => 'Delete attribute value', + 'Delete category' => 'Delete category', + 'Delete content' => 'Delete content', + 'Delete country' => 'Delete country', + 'Delete currency' => 'Delete currency', + 'Delete customer' => 'Delete customer', + 'Delete feature' => 'Delete feature', + 'Delete feature value' => 'Delete feature value', + 'Delete folder' => 'Delete folder', + 'Delete language' => 'Delete language', + 'Delete mailing template' => 'Delete mailing template', + 'Delete product' => 'Delete product', + 'Delete profile' => 'Delete profile', + 'Delete shipping configuration' => 'Delete shipping configuration', + 'Delete tax' => 'Delete tax', + 'Delete tax rule' => 'Delete tax rule', + 'Delete template' => 'Delete template', + 'Delete this category and all its contents' => 'Delete this category and all its contents', + 'Delete this combination' => 'Delete this combination', + 'Delete this content' => 'Delete this content', + 'Delete this country' => 'Delete this country', + 'Delete this currency' => 'Delete this currency', + 'Delete this customer and all his orders' => 'Delete this customer and all his orders', + 'Delete this feature' => 'Delete this feature', + 'Delete this folder and all its contents' => 'Delete this folder and all its contents', + 'Delete this language' => 'Delete this language', + 'Delete this mailing template' => 'Delete this mailing template', + 'Delete this module' => 'Delete this module', + 'Delete this product' => 'Delete this product', + 'Delete this product attribute' => 'Delete this product attribute', + 'Delete this product feature' => 'Delete this product feature', + 'Delete this product template' => 'Delete this product template', + 'Delete this shipping configuration' => 'Delete this shipping configuration', + 'Delete this tax' => 'Delete this tax', + 'Delete this tax rule' => 'Delete this tax rule', + 'Delete this value' => 'Delete this value', + 'Delete this variable' => 'Delete this variable', + 'Delete this zone' => 'Delete this zone', + 'Delivery address' => 'Delivery address', + 'Delivery module' => 'Delivery module', + 'Delivery modules' => 'Delivery modules', + 'Description' => 'Description', + 'Details' => 'Details', + 'Disabled coupons' => 'Disabled coupons', + 'Discount' => 'Discount', + 'Do not use a product template' => 'Do not use a product template', + '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 cancel this order ?' => 'Do you really want to cancel this order ?', + 'Do you really want to delete this address ?' => 'Do you really want to delete this address ?', + 'Do you really want to delete this administrator ?' => 'Do you really want to delete this administrator ?', + 'Do you really want to delete this attribute ? It will be removed from all product templates.' => 'Do you really want to delete this attribute ? It will be removed from all product templates.', + 'Do you really want to delete this attribute value ?' => 'Do you really want to delete this attribute value ?', + 'Do you really want to delete this category and all its content ?' => 'Do you really want to delete this category and all its content ?', + 'Do you really want to delete this combination ?' => 'Do you really want to delete this combination ?', + 'Do you really want to delete this content ?' => 'Do you really want to delete this content ?', + 'Do you really want to delete this country ?' => 'Do you really want to delete this country ?', + 'Do you really want to delete this currency ?' => 'Do you really want to delete this currency ?', + 'Do you really want to delete this customer ?' => 'Do you really want to delete this customer ?', + 'Do you really want to delete this element ?' => 'Do you really want to delete this element ?', + 'Do you really want to delete this feature ? It will be removed from all product templates.' => 'Do you really want to delete this feature ? It will be removed from all product templates.', + 'Do you really want to delete this feature value ?' => 'Do you really want to delete this feature value ?', + 'Do you really want to delete this folder and all its content ?' => 'Do you really want to delete this folder and all its content ?', + 'Do you really want to delete this language ?' => 'Do you really want to delete this language ?', + 'Do you really want to delete this mailing template ?' => 'Do you really want to delete this mailing template ?', + 'Do you really want to delete this module ?' => 'Do you really want to delete this module ?', + 'Do you really want to delete this product ?' => 'Do you really want to delete this product ?', + 'Do you really want to delete this profile ?' => 'Do you really want to delete this profile ?', + 'Do you really want to delete this shipping configuration ?' => 'Do you really want to delete this shipping configuration ?', + 'Do you really want to delete this tax ?' => 'Do you really want to delete this tax ?', + 'Do you really want to delete this tax rule ?' => 'Do you really want to delete this tax rule ?', + 'Do you really want to delete this template ? It will be removed from all products.' => 'Do you really want to delete this template ? It will be removed from all products.', + 'Do you really want to delete this variable ?' => 'Do you really want to delete this variable ?', + 'Do you really want to enable this element ?' => 'Do you really want to enable this element ?', + 'Do you really want to remove the content from this folder ?' => 'Do you really want to remove the content from this folder ?', + 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.' => 'Do you really want to remove this attribute from all product templates ? You\'ll loose all product related data for this attribute.', + 'Do you really want to remove this country ?' => 'Do you really want to remove this country ?', + 'Do you really want to remove this feature from all product templates ? You\'ll loose all product related data for this feature.' => 'Do you really want to remove this feature from all product templates ? You\'ll loose all product related data for this feature.', + 'Do you really want to remove this feature from the template ?' => 'Do you really want to remove this feature from the template ?', + 'Do you really want to remove this related content ?' => 'Do you really want to remove this related content ?', + 'Do you really want to remove this zone ?' => 'Do you really want to remove this zone ?', + 'Do you really want to use this address by default ?' => 'Do you really want to use this address by default ?', + 'Documents' => 'Documents', + 'Download invoice as PDF' => 'Download invoice as PDF', + 'Download purchase order as PDF' => 'Download purchase order as PDF', + 'Drop files to upload' => 'Drop files to upload', + 'Drop tax here to create a tax group' => 'Drop tax here to create a tax group', + 'Drop tax here to delete from group' => 'Drop tax here to delete from group', + 'EAN Code' => 'EAN Code', + 'Ecotax is a tax wich add a defined amount (throug a product feature) to the product price.' => 'Ecotax is a tax wich add a defined amount (throug a product feature) to the product price.', + 'Edit' => 'Edit', + 'Edit a country' => 'Edit a country', + 'Edit a currency' => 'Edit a currency', + 'Edit a customer' => 'Edit a customer', + 'Edit a feature' => 'Edit a feature', + 'Edit a language' => 'Edit a language', + 'Edit a mailing template' => 'Edit a mailing template', + 'Edit a shipping configuration' => 'Edit a shipping configuration', + 'Edit a shipping zone' => 'Edit a shipping zone', + 'Edit a system variable' => 'Edit a system variable', + 'Edit a tax' => 'Edit a tax', + 'Edit a tax rule' => 'Edit a tax rule', + 'Edit an attribute' => 'Edit an attribute', + 'Edit an order' => 'Edit an order', + 'Edit category' => 'Edit category', + 'Edit category %title' => 'Edit category %title', + 'Edit content' => 'Edit content', + 'Edit content %title' => 'Edit content %title', + 'Edit delivery address' => 'Edit delivery address', + 'Edit information in %lng' => 'Edit information in %lng', + 'Edit invoice address' => 'Edit invoice address', + 'Edit next category' => 'Edit next category', + 'Edit order address' => 'Edit order address', + 'Edit prices in %curr' => 'Edit prices in %curr', + 'Edit product' => 'Edit product', + 'Edit product %title' => 'Edit product %title', + 'Edit shipping configuration %title' => 'Edit shipping configuration %title', + 'Edit shipping zone %title' => 'Edit shipping zone %title', + 'Edit tax rule taxes' => 'Edit tax rule taxes', + 'Edit this address' => 'Edit this address', + 'Edit this category' => 'Edit this category', + 'Edit this content' => 'Edit this content', + 'Edit this customer' => 'Edit this customer', + 'Edit this folder' => 'Edit this folder', + 'Edit this language' => 'Edit this language', + 'Edit this module' => 'Edit this module', + 'Edit this order' => 'Edit this order', + 'Edit this product' => 'Edit this product', + 'Editing %cat' => 'Editing %cat', + 'Editing %title' => 'Editing %title', + 'Editing attribute "%name"' => 'Editing attribute "%name"', + 'Editing country "%name"' => 'Editing country "%name"', + 'Editing currency "%name"' => 'Editing currency "%name"', + 'Editing customer "%name"' => 'Editing customer "%name"', + 'Editing feature "%name"' => 'Editing feature "%name"', + 'Editing mailing template "%name"' => 'Editing mailing template "%name"', + 'Editing shipping configuration "%name"' => 'Editing shipping configuration "%name"', + 'Editing shipping zone "%name"' => 'Editing shipping zone "%name"', + 'Editing tax' => 'Editing tax', + 'Editing tax rule' => 'Editing tax rule', + 'Editing variable "%name"' => 'Editing variable "%name"', + 'Email address' => 'Email address', + 'Enable remote SMTP use : ' => 'Enable remote SMTP use : ', + 'Enable/Disable' => 'Enable/Disable', + 'Enabled coupons' => 'Enabled coupons', + 'Encryption' => 'Encryption', + 'Encryption :' => 'Encryption :', + 'Enter here all possible attribute values.' => 'Enter here all possible attribute values.', + 'Enter here all possible feature values. To get a free text feature in product forms, don\'t add any value.' => 'Enter here all possible feature values. To get a free text feature in product forms, don\'t add any value.', + 'Enter here the category name in the default language (%title)' => 'Enter here the category name in the default language (%title)', + 'Enter here the content name in the default language (%title)' => 'Enter here the content name in the default language (%title)', + 'Enter here the feature value as free text' => 'Enter here the feature value as free text', + 'Enter here the folder name in the default language (%title)' => 'Enter here the folder name in the default language (%title)', + 'Enter here the product name in the default language (%title)' => 'Enter here the product name in the default language (%title)', + 'Enter here the product price in the default currency (%title)' => 'Enter here the product price in the default currency (%title)', + 'Enter here the product reference' => 'Enter here the product reference', + 'Enter here the product weight, in Kilogrammes' => 'Enter here the product weight, in Kilogrammes', + 'Enter new attribute position' => 'Enter new attribute position', + 'Enter new category position' => 'Enter new category position', + 'Enter new content position' => 'Enter new content position', + 'Enter new currency position' => 'Enter new currency position', + 'Enter new feature position' => 'Enter new feature position', + 'Enter new folder position' => 'Enter new folder position', + 'Enter new product position' => 'Enter new product position', + 'Enter new value position' => 'Enter new value position', + 'Error' => 'Error', + 'Example :' => 'Example :', + 'Existing combinations will be deleted. Do you want to continue ?' => 'Existing combinations will be deleted. Do you want to continue ?', + 'Expiration date' => 'Expiration date', + 'Expiration date :' => 'Expiration date :', + 'Failed to get converted prices. Please try again.' => 'Failed to get converted prices. Please try again.', + 'Failed to get prices. Please try again.' => 'Failed to get prices. Please try again.', + 'Feature Name' => 'Feature Name', + 'Feature information' => 'Feature information', + 'Feature title' => 'Feature title', + 'Feature value' => 'Feature value', + 'Feature value for this product' => 'Feature value for this product', + 'Feature values' => 'Feature values', + 'Features' => 'Features', + 'Files manager' => 'Files manager', + 'First orders' => 'First orders', + 'FirstName' => 'FirstName', + 'Firstname' => 'Firstname', + 'Folder created on %date_create. Last modification: %date_change' => 'Folder created on %date_create. Last modification: %date_change', + 'Folder title' => 'Folder title', + 'Folders' => 'Folders', + 'Folders in %fold' => 'Folders in %fold', + 'French 19.6% VAT is a tax which add a 19.6% tax to the product price.' => 'French 19.6% VAT is a tax which add a 19.6% tax to the product price.', + 'French 19.6% VAT with ecotax is the applicance of the ecotax (on the product price) then the applicance of the 19.6% tax (on the product price + the ecotax amount).' => 'French 19.6% VAT with ecotax is the applicance of the ecotax (on the product price) then the applicance of the 19.6% tax (on the product price + the ecotax amount).', + 'From' => 'From', + 'General' => 'General', + 'General description' => 'General description', + 'Go to administration home' => 'Go to administration home', + 'H:i:s' => 'H:i:s', + 'Home' => 'Home', + 'Host' => 'Host', + 'Host :' => 'Host :', + 'ID' => 'ID', + 'ISO 4217 Code' => 'ISO 4217 Code', + 'ISO 4217 code' => 'ISO 4217 code', + 'ISO 639 Code' => 'ISO 639 Code', + 'ISO Code' => 'ISO Code', + 'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :', + 'Images' => 'Images', + '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', + 'In order to manges your shop taxes you can manage' => 'In order to manges your shop taxes you can manage', + 'Invoice and Delivery' => 'Invoice and Delivery', + 'Invoice date' => 'Invoice date', + 'Invoice informations' => 'Invoice informations', + 'Invoice reference' => 'Invoice reference', + 'Is available on special offers' => 'Is available on special offers', + 'Is cumulative' => 'Is cumulative', + 'Is enabled' => 'Is enabled', + 'Is removing postage' => 'Is removing postage', + 'Is unlimited' => 'Is unlimited', + 'Kg' => 'Kg', + 'Label' => 'Label', + 'Language name' => 'Language name', + 'Language title' => 'Language title', + 'Languages' => 'Languages', + 'Languages & URLs' => 'Languages & URLs', + 'Languages management' => 'Languages management', + 'LastName' => 'LastName', + 'Lastname' => 'Lastname', + 'Latest version available' => 'Latest version available', + 'Leave empty to keep current password' => 'Leave empty to keep current password', + 'Lire la suite' => 'Lire la suite', + 'List' => 'List', + 'Locale' => 'Locale', + 'Login' => 'Login', + 'Logout' => 'Logout', + 'Long description :' => 'Long description :', + 'Mailing system' => 'Mailing system', + 'Mailing template name' => 'Mailing template name', + 'Mailing template purpose' => 'Mailing template purpose', + 'Mailing templates' => 'Mailing templates', + 'Manage taxes' => 'Manage taxes', + 'Manage the tax rule taxes appliance order' => 'Manage the tax rule taxes appliance order', + 'Max usage :' => 'Max usage :', + 'May be cumulative' => 'May be cumulative', + 'Message created on %date_create. Last modification: %date_change' => 'Message created on %date_create. Last modification: %date_change', + 'Modules' => 'Modules', + 'More information about ISO 4217' => 'More information about ISO 4217', + 'NONE' => 'NONE', + 'Name' => 'Name', + 'New' => 'New', + 'New customers' => 'New customers', + 'News' => 'News', + 'No' => 'No', + 'No Folders found' => 'No Folders found', + 'No area defined with this id' => 'No area defined with this id', + 'No available content in this folder' => 'No available content in this folder', + 'No available value for this attribute' => 'No available value for this attribute', + 'No country has been created yet. Click the + button to create one.' => 'No country has been created yet. Click the + button to create one.', + 'No currency has been created yet. Click the + button to create one.' => 'No currency has been created yet. Click the + button to create one.', + 'No folders found' => 'No folders found', + 'No mailing template has been created yet. Click the + button to create one.' => 'No mailing template has been created yet. Click the + button to create one.', + 'No product attribute has been created yet. Click the + button to create one.' => 'No product attribute has been created yet. Click the + button to create one.', + 'No product feature has been created yet. Click the + button to create one.' => 'No product feature has been created yet. Click the + button to create one.', + 'No product template has been created yet. Click the + button to create one.' => 'No product template has been created yet. Click the + button to create one.', + 'No value has been created yet. Click the + button to create one.' => 'No value has been created yet. Click the + button to create one.', + 'N° ISO' => 'N° ISO', + 'OK' => 'OK', + 'Offline products' => 'Offline products', + 'Online' => 'Online', + 'Online products' => 'Online products', + 'Oops! An Error Occurred' => 'Oops! An Error Occurred', + 'Order n°' => 'Order n°', + 'Ordered products' => 'Ordered products', + 'Orders' => 'Orders', + 'Other addresses' => 'Other addresses', + 'Overall sales' => 'Overall sales', + 'PDF | Invoice' => 'PDF | Invoice', + 'PDF | Purchase order' => 'PDF | Purchase order', + 'Parameters' => 'Parameters', + 'Password' => 'Password', + 'Password :' => 'Password :', + 'Payment information' => 'Payment information', + 'Payment module' => 'Payment module', + 'Payment modules' => 'Payment modules', + 'Period' => 'Period', + 'Phone' => 'Phone', + 'Please retry' => 'Please retry', + 'Please save your Coupon in oder to affect it some conditions' => 'Please save your Coupon in oder to affect it some conditions', + 'Please select a condition category' => 'Please select a condition category', + 'Please select a coupon type' => 'Please select a coupon type', + 'Please select another condition' => 'Please select another condition', + 'Please wait, loading' => 'Please wait, loading', + 'Port' => 'Port', + 'Port :' => 'Port :', + 'Position' => 'Position', + 'Postage' => 'Postage', + 'Postscriptum' => 'Postscriptum', + 'Preview category page' => 'Preview category page', + 'Preview folder page' => 'Preview folder page', + 'Preview product page' => 'Preview product page', + 'Previous month sales' => 'Previous month sales', + 'Previous year sales' => 'Previous year sales', + 'Price excl. taxes' => 'Price excl. taxes', + 'Price
w/ taxes (%currency)' => 'Price
w/ taxes (%currency)', + 'Price
w/o taxes (%currency)' => 'Price
w/o taxes (%currency)', + 'Product' => 'Product', + 'Product Attributes' => 'Product Attributes', + 'Product Features' => 'Product Features', + 'Product attributes' => 'Product attributes', + 'Product catalog configuration' => 'Product catalog configuration', + 'Product created on %date_create. Last modification: %date_change' => 'Product created on %date_create. Last modification: %date_change', + 'Product features' => 'Product features', + 'Product price' => 'Product price', + 'Product templates' => 'Product templates', + 'Product title' => 'Product title', + 'Product weight' => 'Product weight', + 'Products' => 'Products', + 'Products in %cat' => 'Products in %cat', + 'Profil' => 'Profile', + 'Profile' => 'Profile', + 'Profile code' => 'Profile code', + 'Profiles' => 'Profiles', + 'Purpose' => 'Purpose', + 'Quantity' => 'Quantity', + 'Quickly create combinations using the combination builder' => 'Quickly create combinations using the combination builder', + 'Rate' => 'Rate', + 'Rate from Euro' => 'Rate from Euro', + 'Rate in €' => 'Rate in €', + 'Reference' => 'Reference', + 'Related content' => 'Related content', + 'Remove associated folder' => 'Remove associated folder', + 'Remove country' => 'Remove country', + 'Remove feature' => 'Remove feature', + 'Remove from all product templates' => 'Remove from all product templates', + 'Remove related content' => 'Remove related content', + 'Remove selected values' => 'Remove selected values', + 'Remove the product from this category' => 'Remove the product from this category', + 'Remove this attribute from all product templates' => 'Remove this attribute from all product templates', + 'Remove this feature from all product templates' => 'Remove this feature from all product templates', + 'Remove zone' => 'Remove zone', + 'Resources' => 'Resources', + 'Rewritten URL' => 'Rewritten URL', + 'Sale' => 'Sale', + 'Sale price
w/ taxes (%currency)' => 'Sale price
w/ taxes (%currency)', + 'Sale price
w/o taxes (%currency)' => 'Sale price
w/o taxes (%currency)', + 'Sales' => 'Sales', + 'Sales excluding shipping' => 'Sales excluding shipping', + 'Sales statistics' => 'Sales statistics', + 'Save' => 'Save', + 'Save and close' => 'Save and close', + 'Save chages' => 'Save chages', + 'Save changes' => 'Save changes', + 'Save this condition' => 'Save this condition', + 'Save your modifications' => 'Save your modifications', + 'Search' => 'Search', + 'Select a content and click (+) to add it to this category' => 'Select a content and click (+) to add it to this category', + 'Select a folder and click (+) to add it to the additional folder list' => 'Select a folder and click (+) to add it to the additional folder list', + 'Select a folder content...' => 'Select a folder content...', + 'Select a folder to get its content' => 'Select a folder to get its content', + 'Select a folder...' => 'Select a folder...', + 'Select a tax tule' => 'Select a tax tule', + 'Select a value click (+) to add it to the combination' => 'Select a value click (+) to add it to the combination', + 'Select an attribute and click (+) to view available values' => 'Select an attribute and click (+) to view available values', + 'Select an attribute value...' => 'Select an attribute value...', + 'Select an attribute...' => 'Select an attribute...', + 'Select an feature and click (+) to add it to this template' => 'Select an feature and click (+) to add it to this template', + 'Select an feature...' => 'Select an feature...', + 'Select attribute values to combine. You may enter a default value for some of the fields of the generated combinations.' => 'Select attribute values to combine. You may enter a default value for some of the fields of the generated combinations.', + 'Select here the tax applicable to this product' => 'Select here the tax applicable to this product', + 'Send a mail to this customer' => 'Send a mail to this customer', + 'Send files' => 'Send files', + 'Set as default tax rule' => 'Set as default tax rule', + 'Shipping configuration' => 'Shipping configuration', + 'Shipping configuration name' => 'Shipping configuration name', + 'Shipping zones' => 'Shipping zones', + 'Shop' => 'Shop', + 'Shop Informations' => 'Shop Informations', + 'Short conclusion' => 'Short conclusion', + 'Short description' => 'Short description', + 'Short description :' => 'Short description :', + 'Show logs' => 'Show logs', + 'Source IP' => 'Source IP', + 'Source IP :' => 'Source IP :', + 'Status' => 'Status', + 'Street address' => 'Street address', + 'Subject' => 'Subject', + 'Superadministrator' => 'Superadministrator', + 'Symbol' => 'Symbol', + 'System logs' => 'System logs', + 'System parameters' => 'System parameters', + 'System variables' => 'System variables', + 'Tax' => 'Tax', + 'Tax created on %date_create. Last modification: %date_change' => 'Tax created on %date_create. Last modification: %date_change', + 'Tax rule created on %date_create. Last modification: %date_change' => 'Tax rule created on %date_create. Last modification: %date_change', + 'Tax rule taxes will be update for the following countries :' => 'Tax rule taxes will be update for the following countries :', + 'Tax rules are combination of different taxes.' => 'Tax rules are combination of different taxes.', + 'Taxed total' => 'Taxed total', + 'Taxes' => 'Taxes', + 'Taxes rules' => 'Taxes rules', + 'Template title' => 'Template title', + 'The detailed description.' => 'The detailed description.', + 'The mailing template in HTML format.' => 'The mailing template in HTML format.', + 'The mailing template in text-only format.' => 'The mailing template in text-only format.', + 'The rate from Euro (Price in Euro * rate = Price in this currency)' => 'The rate from Euro (Price in Euro * rate = Price in this currency)', + 'Thelia Back Office' => 'Thelia Back Office', + 'Thelia Languages' => 'Thelia Languages', + 'Thelia Mailing System' => 'Thelia Mailing System', + 'Thelia Mailing Templates' => 'Thelia Mailing Templates', + 'Thelia Product Attributes' => 'Thelia Product Attributes', + 'Thelia Product Features' => 'Thelia Product Features', + 'Thelia Product Templates' => 'Thelia Product Templates', + 'Thelia Shipping configuration' => 'Thelia Shipping configuration', + 'Thelia Shipping zones' => 'Thelia Shipping zones', + 'Thelia System Variables' => 'Thelia System Variables', + 'Thelia configuration' => 'Thelia configuration', + 'Thelia informations' => 'Thelia informations', + 'Thelia mailing templates' => 'Thelia mailing templates', + 'Thelia product attributes' => 'Thelia product attributes', + 'Thelia product features' => 'Thelia product features', + 'Thelia product templates' => 'Thelia product templates', + 'Thelia system variables' => 'Thelia system variables', + 'There is no documents attached to this %type.' => 'There is no documents attached to this %type.', + 'There is no images attached to this %type.' => 'There is no images attached to this %type.', + 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.' => 'They are some administrator which are linked to this administrator. Please edit/remove them before deleting this administrator.', + 'They are some administrator which are linked to this profile. Please edit/remove them before deleting this profile.' => 'They are some administrator which are linked to this profile. Please edit/remove them before deleting this profile.', + 'This category contains no contents' => 'This category contains no contents', + 'This category doesn\'t contains any products. To add a new product, click the + button above.' => 'This category doesn\'t contains any products. To add a new product, click the + button above.', + 'This category has no sub-categories.' => 'This category has no sub-categories.', + 'This category has no sub-categories. To create a new one, click the + button above.' => 'This category has no sub-categories. To create a new one, click the + button above.', + 'This folder doesn\'t contains any contents. To add a new content, click the + button above.' => 'This folder doesn\'t contains any contents. To add a new content, click the + button above.', + 'This folder has no sub-folders.' => 'This folder has no sub-folders.', + 'This folder has no sub-folders. To create a new one, click the + button above.' => 'This folder has no sub-folders. To create a new one, click the + button above.', + 'This month' => 'This month', + 'This product doesn\'t belong to any additional folder.' => 'This product doesn\'t belong to any additional folder.', + 'This product template does not contains any features' => 'This product template does not contains any features', + 'This template contains no features' => 'This template contains no features', + 'This year' => 'This year', + 'Timeout' => 'Timeout', + 'Timeout :' => 'Timeout :', + 'Title' => 'Title', + 'Title :' => 'Title :', + 'To' => 'To', + 'To remove a value from the combination, select it and click "remove"' => 'To remove a value from the combination, select it and click "remove"', + 'Today' => 'Today', + 'Top level' => 'Top level', + 'Top level Contents' => 'Top level Contents', + 'Top level Products' => 'Top level Products', + 'Top level categories' => 'Top level categories', + 'Top level folders' => 'Top level folders', + 'Total' => 'Total', + 'Total including discount' => 'Total including discount', + 'Total without discount' => 'Total without discount', + 'Transaction reference' => 'Transaction reference', + 'Type :' => 'Type :', + 'Unit taxed price' => 'Unit taxed price', + 'Unit. price' => 'Unit. price', + 'Unlimited' => 'Unlimited', + 'Update' => 'Update', + 'Update a new administrator' => 'Update a new administrator', + 'Update coupon' => 'Update coupon', + 'Update rates' => 'Update rates', + 'Update tax rule taxes' => 'Update tax rule taxes', + 'Update this image' => 'Update this image', + 'Usage left' => 'Usage left', + 'Use Ctrl+click to select more than one value. You can also clear selected values.' => 'Use Ctrl+click to select more than one value. You can also clear selected values.', + 'Use address by default' => 'Use address by default', + 'Use this address by default' => 'Use this address by default', + 'Username' => 'Username', + 'Username :' => 'Username :', + 'Using a domain or subdomain for each language' => 'Using a domain or subdomain for each language', + 'Value' => 'Value', + 'Variable created on %date_create. Last modification: %date_change' => 'Variable created on %date_create. Last modification: %date_change', + 'Variable name' => 'Variable name', + 'Variable purpose' => 'Variable purpose', + 'Variable value' => 'Variable value', + 'Version %ver' => 'Version %ver', + 'View' => 'View', + 'View shop' => 'View shop', + 'View site' => 'View site', + 'Visibility' => 'Visibility', + 'Warning' => 'Warning', + 'Weight
(Kg)' => 'Weight
(Kg)', + 'Will be available on special offers' => 'Will be available on special offers', + 'Won\'t remove postage' => 'Won\'t remove postage', + 'Yes' => 'Yes', + 'Yesterday sales' => 'Yesterday sales', + 'You can attach here some content to this category' => 'You can attach here some content to this category', + 'You can attach this product to more categories in the details tab.' => 'You can attach this product to more categories in the details 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 profile' => 'You can\'t delete this profile', + 'Zip code' => 'Zip code', + 'Zones' => 'Zones', + 'activate' => 'activate', + 'and' => 'and', + 'classic modules' => 'classic modules', + 'code' => 'code', + 'company' => 'company', + 'customer ref' => 'customer ref', + 'd-m-Y' => 'd-m-Y', + 'date form' => 'date form', + 'days left' => 'days left', + 'deactivate' => 'deactivate', + 'deactivation' => 'deactivation', + 'en_US' => 'en_US', + 'firstname & lastname' => 'firstname & lastname', + 'last order' => 'last order', + 'long description' => 'long description', + 'max usage' => 'max usage', + 'order amount' => 'order amount', + 'orders for this customer' => 'orders for this customer', + 'short description' => 'short description', + 'tax rules' => 'tax rules', + 'taxes' => 'taxes', + 'time form' => 'time form', + 'title' => 'title', + 'tracking reference' => 'tracking reference', + 'uncheck all' => 'uncheck all', + 'you can combine taxes in tax rules and chose if they are applied one after the other or at the same time : it allows to apply taxes on an already taxed price or not.' => 'you can combine taxes in tax rules and chose if they are applied one after the other or at the same time : it allows to apply taxes on an already taxed price or not.', + 'yyyy-mm-dd' => 'yyyy-mm-dd', );