Merge branch 'master' of github.com:thelia/thelia
This commit is contained in:
@@ -2,7 +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
|
- 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
|
- 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
|
- 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
|
#2.0.0-beta2
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,8 @@ class Coupon extends BaseAction implements EventSubscriberInterface
|
|||||||
->getSession()
|
->getSession()
|
||||||
->getOrder()
|
->getOrder()
|
||||||
->setDiscount($totalDiscount)
|
->setDiscount($totalDiscount)
|
||||||
->save();
|
// ->save()
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,6 +263,8 @@ class Coupon extends BaseAction implements EventSubscriberInterface
|
|||||||
$orderCoupon->save();
|
$orderCoupon->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$request->getSession()->setConsumedCoupons(array());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ use Thelia\Core\Event\Cart\CartEvent;
|
|||||||
use Thelia\Core\Event\Order\OrderAddressEvent;
|
use Thelia\Core\Event\Order\OrderAddressEvent;
|
||||||
use Thelia\Core\Event\Order\OrderEvent;
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Coupon\CouponManager;
|
|
||||||
use Thelia\Exception\TheliaProcessException;
|
use Thelia\Exception\TheliaProcessException;
|
||||||
use Thelia\Model\AddressQuery;
|
use Thelia\Model\AddressQuery;
|
||||||
use Thelia\Model\ConfigQuery;
|
use Thelia\Model\ConfigQuery;
|
||||||
@@ -288,7 +287,8 @@ class Order extends BaseAction implements EventSubscriberInterface
|
|||||||
$sessionOrder = new \Thelia\Model\Order();
|
$sessionOrder = new \Thelia\Model\Order();
|
||||||
$event->setOrder($sessionOrder);
|
$event->setOrder($sessionOrder);
|
||||||
$event->setPlacedOrder($placedOrder);
|
$event->setPlacedOrder($placedOrder);
|
||||||
$this->getSession()->setOrder($placedOrder);
|
$this->getSession()->setProcessedOrder($placedOrder);
|
||||||
|
$this->getSession()->setOrder(new \Thelia\Model\Order());
|
||||||
|
|
||||||
/* empty cart */
|
/* empty cart */
|
||||||
$this->getDispatcher()->dispatch(TheliaEvents::CART_CLEAR, new CartEvent($this->getCart($this->getRequest())));
|
$this->getDispatcher()->dispatch(TheliaEvents::CART_CLEAR, new CartEvent($this->getCart($this->getRequest())));
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ use Symfony\Component\Console\Input\InputInterface;
|
|||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Thelia\Install\Exception\UpToDateException;
|
use Thelia\Install\Exception\UpToDateException;
|
||||||
use Thelia\Install\Update;
|
use Thelia\Install\Update;
|
||||||
use Thelia\Model\ConfigQuery;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateCommand
|
* Class UpdateCommand
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ namespace Thelia\Condition;
|
|||||||
use ArrayAccess;
|
use ArrayAccess;
|
||||||
use Countable;
|
use Countable;
|
||||||
use Iterator;
|
use Iterator;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
use Thelia\Condition\Implementation\ConditionInterface;
|
use Thelia\Condition\Implementation\ConditionInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,12 +23,10 @@
|
|||||||
|
|
||||||
namespace Thelia\Condition;
|
namespace Thelia\Condition;
|
||||||
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
use Thelia\Condition\Implementation\ConditionInterface;
|
use Thelia\Condition\Implementation\ConditionInterface;
|
||||||
use Thelia\Condition\Operators;
|
use Thelia\Condition\Operators;
|
||||||
use Thelia\Condition\ConditionCollection;
|
use Thelia\Condition\ConditionCollection;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate Conditions
|
* Validate Conditions
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ use Thelia\Condition\Implementation\ConditionInterface;
|
|||||||
use Thelia\Coupon\FacadeInterface;
|
use Thelia\Coupon\FacadeInterface;
|
||||||
use Thelia\Condition\ConditionCollection;
|
use Thelia\Condition\ConditionCollection;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage how Condition could interact with the current application state (Thelia)
|
* Manage how Condition could interact with the current application state (Thelia)
|
||||||
*
|
*
|
||||||
@@ -114,7 +113,6 @@ class ConditionFactory
|
|||||||
return $collection;
|
return $collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build a Condition from form
|
* Build a Condition from form
|
||||||
*
|
*
|
||||||
@@ -166,7 +164,6 @@ class ConditionFactory
|
|||||||
*/
|
*/
|
||||||
public function getInputsFromConditionInterface(ConditionInterface $condition)
|
public function getInputsFromConditionInterface(ConditionInterface $condition)
|
||||||
{
|
{
|
||||||
|
|
||||||
return $condition->getValidators();
|
return $condition->getValidators();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,7 +171,6 @@ abstract class ConditionAbstract implements ConditionInterface
|
|||||||
return $serializableCondition;
|
return $serializableCondition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if currency if valid or not
|
* Check if currency if valid or not
|
||||||
*
|
*
|
||||||
@@ -282,6 +281,7 @@ abstract class ConditionAbstract implements ConditionInterface
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
';
|
';
|
||||||
|
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
namespace Thelia\Condition\Implementation;
|
namespace Thelia\Condition\Implementation;
|
||||||
|
|
||||||
use Thelia\Condition\SerializableCondition;
|
use Thelia\Condition\SerializableCondition;
|
||||||
use Thelia\Core\Translation\Translator;
|
|
||||||
use Thelia\Coupon\FacadeInterface;
|
use Thelia\Coupon\FacadeInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,7 +40,7 @@ interface ConditionInterface
|
|||||||
*
|
*
|
||||||
* @param FacadeInterface $adapter Service adapter
|
* @param FacadeInterface $adapter Service adapter
|
||||||
*/
|
*/
|
||||||
function __construct(FacadeInterface $adapter);
|
public function __construct(FacadeInterface $adapter);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Condition Service id
|
* Get Condition Service id
|
||||||
@@ -75,7 +74,6 @@ interface ConditionInterface
|
|||||||
*/
|
*/
|
||||||
public function getAvailableOperators();
|
public function getAvailableOperators();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get I18n name
|
* Get I18n name
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -148,7 +148,6 @@ class MatchForEveryone extends ConditionAbstract
|
|||||||
public function drawBackOfficeInputs()
|
public function drawBackOfficeInputs()
|
||||||
{
|
{
|
||||||
// No input
|
// No input
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Condition\Implementation;
|
namespace Thelia\Condition\Implementation;
|
||||||
|
|
||||||
use Symfony\Component\Intl\Exception\NotImplementedException;
|
|
||||||
use Thelia\Condition\Implementation\ConditionAbstract;
|
use Thelia\Condition\Implementation\ConditionAbstract;
|
||||||
use Thelia\Condition\Operators;
|
use Thelia\Condition\Operators;
|
||||||
use Thelia\Exception\InvalidConditionOperatorException;
|
use Thelia\Exception\InvalidConditionOperatorException;
|
||||||
@@ -119,10 +118,8 @@ class MatchForTotalAmount extends ConditionAbstract
|
|||||||
|
|
||||||
$this->isPriceValid($priceValue);
|
$this->isPriceValid($priceValue);
|
||||||
|
|
||||||
|
|
||||||
$this->isCurrencyValid($currencyValue);
|
$this->isCurrencyValid($currencyValue);
|
||||||
|
|
||||||
|
|
||||||
$this->operators = array(
|
$this->operators = array(
|
||||||
self::INPUT1 => $priceOperator,
|
self::INPUT1 => $priceOperator,
|
||||||
self::INPUT2 => $currencyOperator,
|
self::INPUT2 => $currencyOperator,
|
||||||
|
|||||||
@@ -247,6 +247,7 @@ class MatchForXArticles extends ConditionAbstract
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
';
|
';
|
||||||
|
|
||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -314,7 +314,6 @@ class CouponController extends BaseAdminController
|
|||||||
/** @var ConditionInterface $condition */
|
/** @var ConditionInterface $condition */
|
||||||
$condition = $this->container->get($conditionId);
|
$condition = $this->container->get($conditionId);
|
||||||
|
|
||||||
|
|
||||||
if ($inputs === null) {
|
if ($inputs === null) {
|
||||||
return $this->pageNotFound();
|
return $this->pageNotFound();
|
||||||
}
|
}
|
||||||
@@ -723,6 +722,7 @@ class CouponController extends BaseAdminController
|
|||||||
|
|
||||||
$args = array();
|
$args = array();
|
||||||
$args['conditions'] = $this->cleanConditionForTemplate($couponManager->getConditions());
|
$args['conditions'] = $this->cleanConditionForTemplate($couponManager->getConditions());
|
||||||
|
|
||||||
return $this->render('coupon/conditions', $args);
|
return $this->render('coupon/conditions', $args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -253,6 +253,26 @@ class Session extends BaseSession
|
|||||||
return $this->get("thelia.order");
|
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
|
* Set consumed coupons by the Customer
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,7 +23,8 @@
|
|||||||
|
|
||||||
namespace Thelia\Core\Template\Assets;
|
namespace Thelia\Core\Template\Assets;
|
||||||
|
|
||||||
interface AssetManagerInterface {
|
interface AssetManagerInterface
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* Prepare an asset directory by checking that no changes occured in
|
* Prepare an asset directory by checking that no changes occured in
|
||||||
* the source directory. If any change is detected, the whole asset directory
|
* the source directory. If any change is detected, the whole asset directory
|
||||||
|
|||||||
@@ -76,7 +76,8 @@ class AsseticAssetManager implements AssetManagerInterface
|
|||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function isSourceFile(\SplFileInfo $fileInfo) {
|
protected function isSourceFile(\SplFileInfo $fileInfo)
|
||||||
|
{
|
||||||
return in_array($fileInfo->getExtension(), $this->source_file_extensions);
|
return in_array($fileInfo->getExtension(), $this->source_file_extensions);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,8 +206,7 @@ class AsseticAssetManager implements AssetManagerInterface
|
|||||||
throw new \RuntimeException(
|
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.");
|
"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);
|
@fclose($fp);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@@ -221,8 +221,8 @@ class AsseticAssetManager implements AssetManagerInterface
|
|||||||
* @throws \InvalidArgumentException if a wrong filter is passed
|
* @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)) {
|
if (!empty($filters)) {
|
||||||
|
|
||||||
$filter_list = explode(',', $filters);
|
$filter_list = explode(',', $filters);
|
||||||
@@ -261,8 +261,7 @@ class AsseticAssetManager implements AssetManagerInterface
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$filter_list = array();
|
$filter_list = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ use Thelia\Core\Template\Element\LoopResult;
|
|||||||
use Thelia\Core\Template\Element\LoopResultRow;
|
use Thelia\Core\Template\Element\LoopResultRow;
|
||||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||||
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||||
use Thelia\Model\CountryQuery;
|
|
||||||
use Thelia\TaxEngine\TaxEngine;
|
use Thelia\TaxEngine\TaxEngine;
|
||||||
use Thelia\Type;
|
use Thelia\Type;
|
||||||
|
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ namespace Thelia\Core\Template\Loop;
|
|||||||
|
|
||||||
use Propel\Runtime\ActiveQuery\Criteria;
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
use Thelia\Condition\ConditionFactory;
|
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\BaseLoop;
|
||||||
use Thelia\Core\Template\Element\LoopResult;
|
use Thelia\Core\Template\Element\LoopResult;
|
||||||
use Thelia\Core\Template\Element\LoopResultRow;
|
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\Core\Template\Loop\Argument\ArgumentCollection;
|
||||||
use Thelia\Model\OrderCouponQuery;
|
use Thelia\Model\OrderCouponQuery;
|
||||||
use Thelia\Model\OrderQuery;
|
use Thelia\Model\OrderQuery;
|
||||||
use Thelia\Type;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ use Thelia\Core\Template\Loop\Argument\Argument;
|
|||||||
|
|
||||||
use Thelia\Exception\TaxEngineException;
|
use Thelia\Exception\TaxEngineException;
|
||||||
use Thelia\Model\CategoryQuery;
|
use Thelia\Model\CategoryQuery;
|
||||||
use Thelia\Model\CountryQuery;
|
|
||||||
use Thelia\Model\CurrencyQuery;
|
use Thelia\Model\CurrencyQuery;
|
||||||
use Thelia\Model\Map\ProductPriceTableMap;
|
use Thelia\Model\Map\ProductPriceTableMap;
|
||||||
use Thelia\Model\Map\ProductSaleElementsTableMap;
|
use Thelia\Model\Map\ProductSaleElementsTableMap;
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ use Thelia\Core\Template\Loop\Argument\Argument;
|
|||||||
|
|
||||||
use Thelia\Exception\TaxEngineException;
|
use Thelia\Exception\TaxEngineException;
|
||||||
use Thelia\Model\Base\ProductSaleElementsQuery;
|
use Thelia\Model\Base\ProductSaleElementsQuery;
|
||||||
use Thelia\Model\CountryQuery;
|
|
||||||
use Thelia\Model\CurrencyQuery;
|
use Thelia\Model\CurrencyQuery;
|
||||||
use Thelia\Model\Map\ProductSaleElementsTableMap;
|
use Thelia\Model\Map\ProductSaleElementsTableMap;
|
||||||
use Thelia\TaxEngine\TaxEngine;
|
use Thelia\TaxEngine\TaxEngine;
|
||||||
|
|||||||
@@ -23,19 +23,12 @@
|
|||||||
|
|
||||||
namespace Thelia\Core\Template\Loop;
|
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\LoopResult;
|
||||||
use Thelia\Core\Template\Element\LoopResultRow;
|
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\ArgumentCollection;
|
||||||
use Thelia\Core\Template\Loop\Argument\Argument;
|
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||||
|
|
||||||
use Thelia\Model\ModuleQuery;
|
|
||||||
|
|
||||||
use Thelia\Module\BaseModule;
|
|
||||||
use Thelia\Type;
|
use Thelia\Type;
|
||||||
use Thelia\Core\Template\TemplateHelper;
|
use Thelia\Core\Template\TemplateHelper;
|
||||||
use Thelia\Core\Template\TemplateDefinition;
|
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();
|
$type = $this->getArg('template-type')->getValue();
|
||||||
|
|
||||||
if ($type == 'front-office')
|
if ($type == 'front-office')
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ interface ParserInterface
|
|||||||
*/
|
*/
|
||||||
public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false);
|
public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the registeted template directories for a givent template type
|
* Return the registeted template directories for a givent template type
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Core\Template\Smarty\Assets;
|
namespace Thelia\Core\Template\Smarty\Assets;
|
||||||
|
|
||||||
use Thelia\Core\Template\Assets\AsseticHelper;
|
|
||||||
use Thelia\Core\Template\TemplateDefinition;
|
use Thelia\Core\Template\TemplateDefinition;
|
||||||
use Thelia\Tools\URL;
|
use Thelia\Tools\URL;
|
||||||
use Thelia\Core\Template\Assets\AssetManagerInterface;
|
use Thelia\Core\Template\Assets\AssetManagerInterface;
|
||||||
@@ -37,7 +36,7 @@ class SmartyAssetsManager
|
|||||||
private $web_root;
|
private $web_root;
|
||||||
private $path_relative_to_web_root;
|
private $path_relative_to_web_root;
|
||||||
|
|
||||||
static private $assetsDirectory = null;
|
private static $assetsDirectory = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new SmartyAssetsManager instance
|
* Creates a new SmartyAssetsManager instance
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ use Thelia\Core\Template\Smarty\AbstractSmartyPlugin;
|
|||||||
use Thelia\Core\Template\Exception\ResourceNotFoundException;
|
use Thelia\Core\Template\Exception\ResourceNotFoundException;
|
||||||
use Thelia\Core\Template\ParserContext;
|
use Thelia\Core\Template\ParserContext;
|
||||||
use Thelia\Core\Template\TemplateDefinition;
|
use Thelia\Core\Template\TemplateDefinition;
|
||||||
use Thelia\Model\ConfigQuery;
|
|
||||||
use Thelia\Core\Template\TemplateHelper;
|
|
||||||
use Imagine\Exception\InvalidArgumentException;
|
use Imagine\Exception\InvalidArgumentException;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
|
|
||||||
@@ -72,7 +70,6 @@ class SmartyParser extends Smarty implements ParserInterface
|
|||||||
$this->setCompileDir($compile_dir);
|
$this->setCompileDir($compile_dir);
|
||||||
$this->setCacheDir($cache_dir);
|
$this->setCacheDir($cache_dir);
|
||||||
|
|
||||||
|
|
||||||
$this->debugging = $debug;
|
$this->debugging = $debug;
|
||||||
|
|
||||||
// Prevent smarty ErrorException: Notice: Undefined index bla bla bla...
|
// Prevent smarty ErrorException: Notice: Undefined index bla bla bla...
|
||||||
@@ -89,7 +86,6 @@ class SmartyParser extends Smarty implements ParserInterface
|
|||||||
|
|
||||||
//$this->enableSecurity();
|
//$this->enableSecurity();
|
||||||
|
|
||||||
|
|
||||||
// The default HTTP status
|
// The default HTTP status
|
||||||
$this->status = 200;
|
$this->status = 200;
|
||||||
|
|
||||||
@@ -106,8 +102,8 @@ class SmartyParser extends Smarty implements ParserInterface
|
|||||||
* @param unknown $key ???
|
* @param unknown $key ???
|
||||||
* @param string $unshift ??? Etienne ?
|
* @param string $unshift ??? Etienne ?
|
||||||
*/
|
*/
|
||||||
public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false) {
|
public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false)
|
||||||
|
{
|
||||||
if (true === $unshift && isset($this->templateDirectories[$templateType][$templateName])) {
|
if (true === $unshift && isset($this->templateDirectories[$templateType][$templateName])) {
|
||||||
|
|
||||||
$this->templateDirectories[$templateType][$templateName] = array_merge(
|
$this->templateDirectories[$templateType][$templateName] = array_merge(
|
||||||
|
|||||||
@@ -57,7 +57,6 @@ class TemplateDefinition
|
|||||||
*/
|
*/
|
||||||
protected $type;
|
protected $type;
|
||||||
|
|
||||||
|
|
||||||
public function __construct($name, $type)
|
public function __construct($name, $type)
|
||||||
{
|
{
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
@@ -90,14 +89,17 @@ class TemplateDefinition
|
|||||||
public function setName($name)
|
public function setName($name)
|
||||||
{
|
{
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getI18nPath() {
|
public function getI18nPath()
|
||||||
|
{
|
||||||
return $this->getPath() . DS . 'I18n';
|
return $this->getPath() . DS . 'I18n';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAbsoluteI18nPath() {
|
public function getAbsoluteI18nPath()
|
||||||
|
{
|
||||||
return THELIA_TEMPLATE_DIR . $this->getI18nPath();
|
return THELIA_TEMPLATE_DIR . $this->getI18nPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,7 +108,8 @@ class TemplateDefinition
|
|||||||
return $this->path;
|
return $this->path;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAbsolutePath() {
|
public function getAbsolutePath()
|
||||||
|
{
|
||||||
return THELIA_TEMPLATE_DIR . $this->getPath();
|
return THELIA_TEMPLATE_DIR . $this->getPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,13 +118,15 @@ class TemplateDefinition
|
|||||||
return $this->getPath() . DS . 'configs';
|
return $this->getPath() . DS . 'configs';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAbsoluteConfigPath() {
|
public function getAbsoluteConfigPath()
|
||||||
|
{
|
||||||
return THELIA_TEMPLATE_DIR . $this->getConfigPath();
|
return THELIA_TEMPLATE_DIR . $this->getConfigPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setPath($path)
|
public function setPath($path)
|
||||||
{
|
{
|
||||||
$this->path = $path;
|
$this->path = $path;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,13 +138,15 @@ class TemplateDefinition
|
|||||||
public function setType($type)
|
public function setType($type)
|
||||||
{
|
{
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an iterator on the standard templates subdir names
|
* Returns an iterator on the standard templates subdir names
|
||||||
*/
|
*/
|
||||||
public static function getStandardTemplatesSubdirsIterator() {
|
public static function getStandardTemplatesSubdirsIterator()
|
||||||
|
{
|
||||||
return new \ArrayIterator(self::$standardTemplatesSubdirs);
|
return new \ArrayIterator(self::$standardTemplatesSubdirs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -93,7 +93,8 @@ class TemplateHelper
|
|||||||
/**
|
/**
|
||||||
* Returns an array which contains all standard template definitions
|
* Returns an array which contains all standard template definitions
|
||||||
*/
|
*/
|
||||||
public function getStandardTemplateDefinitions() {
|
public function getStandardTemplateDefinitions()
|
||||||
|
{
|
||||||
return array(
|
return array(
|
||||||
$this->getActiveFrontTemplate(),
|
$this->getActiveFrontTemplate(),
|
||||||
$this->getActiveAdminTemplate(),
|
$this->getActiveAdminTemplate(),
|
||||||
@@ -108,8 +109,8 @@ class TemplateHelper
|
|||||||
* @param int $templateType the template type
|
* @param int $templateType the template type
|
||||||
* @return An array of \Thelia\Core\Template\TemplateDefinition
|
* @return An array of \Thelia\Core\Template\TemplateDefinition
|
||||||
*/
|
*/
|
||||||
public function getList($templateType) {
|
public function getList($templateType)
|
||||||
|
{
|
||||||
$list = $exclude = array();
|
$list = $exclude = array();
|
||||||
|
|
||||||
$tplIterator = TemplateDefinition::getStandardTemplatesSubdirsIterator();
|
$tplIterator = TemplateDefinition::getStandardTemplatesSubdirsIterator();
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ use Thelia\Config\DefinePropel;
|
|||||||
use Thelia\Core\Template\TemplateDefinition;
|
use Thelia\Core\Template\TemplateDefinition;
|
||||||
use Thelia\Core\TheliaContainerBuilder;
|
use Thelia\Core\TheliaContainerBuilder;
|
||||||
use Thelia\Core\DependencyInjection\Loader\XmlFileLoader;
|
use Thelia\Core\DependencyInjection\Loader\XmlFileLoader;
|
||||||
use Thelia\Model\ConfigQuery;
|
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
|
|
||||||
use Propel\Runtime\Propel;
|
use Propel\Runtime\Propel;
|
||||||
@@ -112,7 +111,8 @@ class Thelia extends Kernel
|
|||||||
* @param TheliaParser $parser the parser
|
* @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();
|
$stdTpls = TemplateDefinition::getStandardTemplatesSubdirsIterator();
|
||||||
|
|
||||||
foreach ($stdTpls as $templateType => $templateSubdirName) {
|
foreach ($stdTpls as $templateType => $templateSubdirName) {
|
||||||
@@ -128,8 +128,8 @@ class Thelia extends Kernel
|
|||||||
* @param string $templateType the template type (one of the TemplateDefinition type constants)
|
* @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 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
|
// Get template path
|
||||||
$templateDirectory = $module->getAbsoluteTemplateDirectoryPath($templateSubdirName);
|
$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.
|
// The directory does not exists, ignore it.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ class BaseFacade implements FacadeInterface
|
|||||||
*
|
*
|
||||||
* @param ContainerInterface $container Service container
|
* @param ContainerInterface $container Service container
|
||||||
*/
|
*/
|
||||||
function __construct(ContainerInterface $container)
|
public function __construct(ContainerInterface $container)
|
||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
}
|
}
|
||||||
@@ -135,7 +135,6 @@ class BaseFacade implements FacadeInterface
|
|||||||
return $this->getRequest()->getSession()->getCurrency()->getCode();
|
return $this->getRequest()->getSession()->getCurrency()->getCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the number of Products in the Cart
|
* Return the number of Products in the Cart
|
||||||
*
|
*
|
||||||
@@ -202,7 +201,6 @@ class BaseFacade implements FacadeInterface
|
|||||||
return $this->container->get('thelia.translator');
|
return $this->container->get('thelia.translator');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the main currency
|
* Return the main currency
|
||||||
* THe one used to set prices in BackOffice
|
* THe one used to set prices in BackOffice
|
||||||
@@ -234,7 +232,6 @@ class BaseFacade implements FacadeInterface
|
|||||||
return $this->container->get('thelia.condition.validator');
|
return $this->container->get('thelia.condition.validator');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all available currencies
|
* Return all available currencies
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -132,6 +132,4 @@ class CouponFactory
|
|||||||
return clone $couponManager;
|
return clone $couponManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,9 +43,6 @@ class CouponManager
|
|||||||
/** @var ContainerInterface Service Container */
|
/** @var ContainerInterface Service Container */
|
||||||
protected $container = null;
|
protected $container = null;
|
||||||
|
|
||||||
/** @var array CouponInterface to process*/
|
|
||||||
protected $coupons = array();
|
|
||||||
|
|
||||||
/** @var array Available Coupons (Services) */
|
/** @var array Available Coupons (Services) */
|
||||||
protected $availableCoupons = array();
|
protected $availableCoupons = array();
|
||||||
|
|
||||||
@@ -61,10 +58,8 @@ class CouponManager
|
|||||||
{
|
{
|
||||||
$this->container = $container;
|
$this->container = $container;
|
||||||
$this->facade = $container->get('thelia.facade');
|
$this->facade = $container->get('thelia.facade');
|
||||||
$this->coupons = $this->facade->getCurrentCoupons();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Discount for the given Coupons
|
* Get Discount for the given Coupons
|
||||||
*
|
*
|
||||||
@@ -74,9 +69,9 @@ class CouponManager
|
|||||||
public function getDiscount()
|
public function getDiscount()
|
||||||
{
|
{
|
||||||
$discount = 0.00;
|
$discount = 0.00;
|
||||||
|
$coupons = $this->facade->getCurrentCoupons();
|
||||||
if (count($this->coupons) > 0) {
|
if (count($coupons) > 0) {
|
||||||
$couponsKept = $this->sortCoupons($this->coupons);
|
$couponsKept = $this->sortCoupons($coupons);
|
||||||
|
|
||||||
$discount = $this->getEffect($couponsKept);
|
$discount = $this->getEffect($couponsKept);
|
||||||
|
|
||||||
@@ -96,11 +91,12 @@ class CouponManager
|
|||||||
*/
|
*/
|
||||||
public function isCouponRemovingPostage()
|
public function isCouponRemovingPostage()
|
||||||
{
|
{
|
||||||
if (count($this->coupons) == 0) {
|
$coupons = $this->facade->getCurrentCoupons();
|
||||||
|
if (count($coupons) == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$couponsKept = $this->sortCoupons($this->coupons);
|
$couponsKept = $this->sortCoupons($coupons);
|
||||||
|
|
||||||
/** @var CouponInterface $coupon */
|
/** @var CouponInterface $coupon */
|
||||||
foreach ($couponsKept as $coupon) {
|
foreach ($couponsKept as $coupon) {
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ interface FacadeInterface
|
|||||||
*
|
*
|
||||||
* @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
|
* Return a Cart a CouponManager can process
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Coupon\Type;
|
namespace Thelia\Coupon\Type;
|
||||||
|
|
||||||
use Symfony\Component\Intl\Exception\NotImplementedException;
|
|
||||||
use Thelia\Condition\ConditionEvaluator;
|
use Thelia\Condition\ConditionEvaluator;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
use Thelia\Coupon\FacadeInterface;
|
use Thelia\Coupon\FacadeInterface;
|
||||||
@@ -62,7 +61,6 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
/** @var ConditionEvaluator Condition validator */
|
/** @var ConditionEvaluator Condition validator */
|
||||||
protected $conditionEvaluator = null;
|
protected $conditionEvaluator = null;
|
||||||
|
|
||||||
|
|
||||||
/** @var string Service Id */
|
/** @var string Service Id */
|
||||||
protected $serviceId = null;
|
protected $serviceId = null;
|
||||||
|
|
||||||
@@ -75,8 +73,6 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
/** @var string Coupon code (ex: XMAS) */
|
/** @var string Coupon code (ex: XMAS) */
|
||||||
protected $code = null;
|
protected $code = null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @var string Coupon title (ex: Coupon for XMAS) */
|
/** @var string Coupon title (ex: Coupon for XMAS) */
|
||||||
protected $title = null;
|
protected $title = null;
|
||||||
|
|
||||||
@@ -86,8 +82,6 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
/** @var string Coupon description */
|
/** @var string Coupon description */
|
||||||
protected $description = null;
|
protected $description = null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @var bool if Coupon is enabled */
|
/** @var bool if Coupon is enabled */
|
||||||
protected $isEnabled = false;
|
protected $isEnabled = false;
|
||||||
|
|
||||||
@@ -106,7 +100,6 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
/** @var bool if Coupon is available for Products already on special offers */
|
/** @var bool if Coupon is available for Products already on special offers */
|
||||||
protected $isAvailableOnSpecialOffers = false;
|
protected $isAvailableOnSpecialOffers = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@@ -355,7 +348,6 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
return $this->serviceId;
|
return $this->serviceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if the current state of the application is matching this Coupon conditions
|
* Check if the current state of the application is matching this Coupon conditions
|
||||||
* Thelia variables are given by the FacadeInterface
|
* Thelia variables are given by the FacadeInterface
|
||||||
@@ -398,5 +390,4 @@ abstract class CouponAbstract implements CouponInterface
|
|||||||
return $this->extendedInputs;
|
return $this->extendedInputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,8 +138,6 @@ interface CouponInterface
|
|||||||
*/
|
*/
|
||||||
public function isRemovingPostage();
|
public function isRemovingPostage();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return condition to validate the Coupon or not
|
* Return condition to validate the Coupon or not
|
||||||
*
|
*
|
||||||
@@ -173,7 +171,6 @@ interface CouponInterface
|
|||||||
*/
|
*/
|
||||||
public function isAvailableOnSpecialOffers();
|
public function isAvailableOnSpecialOffers();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if Coupon has been disabled by admin
|
* Check if Coupon has been disabled by admin
|
||||||
*
|
*
|
||||||
@@ -196,7 +193,6 @@ interface CouponInterface
|
|||||||
*/
|
*/
|
||||||
public function isExpired();
|
public function isExpired();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return effects generated by the coupon
|
* Return effects generated by the coupon
|
||||||
* A positive value
|
* A positive value
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ class RemoveXPercent extends CouponAbstract
|
|||||||
return $basePrice * (( $this->percentage ) / 100);
|
return $basePrice * (( $this->percentage ) / 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get I18n name
|
* Get I18n name
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
namespace Thelia\Form;
|
namespace Thelia\Form;
|
||||||
|
|
||||||
use Symfony\Component\Validator\Constraints;
|
|
||||||
use Symfony\Component\Validator\ExecutionContextInterface;
|
use Symfony\Component\Validator\ExecutionContextInterface;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
use Thelia\Model\ProfileQuery;
|
use Thelia\Model\ProfileQuery;
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ abstract class BaseInstall
|
|||||||
throw new AlreadyInstallException("Thelia is already installed");
|
throw new AlreadyInstallException("Thelia is already installed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$this->exec();
|
$this->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,8 @@
|
|||||||
namespace Thelia\Install;
|
namespace Thelia\Install;
|
||||||
|
|
||||||
use PDO;
|
use PDO;
|
||||||
use RecursiveDirectoryIterator;
|
|
||||||
use RecursiveIteratorIterator;
|
|
||||||
use Symfony\Component\Translation\TranslatorInterface;
|
use Symfony\Component\Translation\TranslatorInterface;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
use Thelia\Install\Exception\InstallException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CheckDatabaseConnection
|
* Class CheckDatabaseConnection
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ use RecursiveIteratorIterator;
|
|||||||
use Symfony\Component\Translation\TranslatorInterface;
|
use Symfony\Component\Translation\TranslatorInterface;
|
||||||
use Thelia\Core\Translation\Translator;
|
use Thelia\Core\Translation\Translator;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CheckPermission
|
* Class CheckPermission
|
||||||
*
|
*
|
||||||
@@ -164,9 +163,6 @@ class CheckPermission extends BaseInstall
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $this->isValid;
|
return $this->isValid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +196,6 @@ class CheckPermission extends BaseInstall
|
|||||||
return (is_writable(THELIA_ROOT . $directory) === true);
|
return (is_writable(THELIA_ROOT . $directory) === true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Translated text about the directory state
|
* Get Translated text about the directory state
|
||||||
*
|
*
|
||||||
@@ -269,7 +264,6 @@ class CheckPermission extends BaseInstall
|
|||||||
return $translatedText;
|
return $translatedText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Translated text about the directory state
|
* Get Translated text about the directory state
|
||||||
* Not usable with CLI
|
* Not usable with CLI
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Install;
|
namespace Thelia\Install;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Database
|
* Class Database
|
||||||
* @package Thelia\Install
|
* @package Thelia\Install
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Install\Exception;
|
namespace Thelia\Install\Exception;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class AlreadyInstallException
|
* Class AlreadyInstallException
|
||||||
* @package Thelia\Install\Exception
|
* @package Thelia\Install\Exception
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
namespace Thelia\Install\Exception;
|
namespace Thelia\Install\Exception;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpToDateException
|
* Class UpToDateException
|
||||||
* @package Thelia\Install\Exception
|
* @package Thelia\Install\Exception
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ use Thelia\Log\Tlog;
|
|||||||
use Thelia\Model\ConfigQuery;
|
use Thelia\Model\ConfigQuery;
|
||||||
use Thelia\Model\Map\ProductTableMap;
|
use Thelia\Model\Map\ProductTableMap;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Update
|
* Class Update
|
||||||
* @package Thelia\Install
|
* @package Thelia\Install
|
||||||
|
|||||||
@@ -27,13 +27,13 @@ use Thelia\Core\Event\MailTransporterEvent;
|
|||||||
use Thelia\Core\Event\TheliaEvents;
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
use Thelia\Model\ConfigQuery;
|
use Thelia\Model\ConfigQuery;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MailerFactory
|
* Class MailerFactory
|
||||||
* @package Thelia\Mailer
|
* @package Thelia\Mailer
|
||||||
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
* @author Manuel Raynaud <mraynaud@openstudio.fr>
|
||||||
*/
|
*/
|
||||||
class MailerFactory {
|
class MailerFactory
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* @var \Swift_Mailer
|
* @var \Swift_Mailer
|
||||||
*/
|
*/
|
||||||
@@ -74,6 +74,7 @@ class MailerFactory {
|
|||||||
->setTimeout(ConfigQuery::getSmtpTimeout())
|
->setTimeout(ConfigQuery::getSmtpTimeout())
|
||||||
->setSourceIp(ConfigQuery::getSmtpSourceIp())
|
->setSourceIp(ConfigQuery::getSmtpSourceIp())
|
||||||
;
|
;
|
||||||
|
|
||||||
return $smtpTransporter;
|
return $smtpTransporter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,5 +88,4 @@ class MailerFactory {
|
|||||||
return $this->swiftMailer;
|
return $this->swiftMailer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,12 +22,8 @@
|
|||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
namespace Thelia\Rewriting;
|
namespace Thelia\Rewriting;
|
||||||
|
|
||||||
use Propel\Runtime\ActiveQuery\Criteria;
|
|
||||||
use Propel\Runtime\ActiveQuery\Join;
|
|
||||||
use Thelia\Exception\RewritingUrlException;
|
|
||||||
use Thelia\Exception\UrlRewritingException;
|
use Thelia\Exception\UrlRewritingException;
|
||||||
use Thelia\Model\RewritingUrlQuery;
|
use Thelia\Model\RewritingUrlQuery;
|
||||||
use Thelia\Model\Map\RewritingUrlTableMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class RewritingResolver
|
* Class RewritingResolver
|
||||||
@@ -93,5 +89,4 @@ class RewritingResolver
|
|||||||
return $otherParameters;
|
return $otherParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,7 @@
|
|||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
namespace Thelia\Rewriting;
|
namespace Thelia\Rewriting;
|
||||||
|
|
||||||
use Propel\Runtime\ActiveQuery\Criteria;
|
|
||||||
use Thelia\Model\RewritingUrlQuery;
|
use Thelia\Model\RewritingUrlQuery;
|
||||||
use Thelia\Model\Map\RewritingUrlTableMap;
|
|
||||||
use Thelia\Tools\URL;
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,6 +85,7 @@ class RewritingRetriever
|
|||||||
{
|
{
|
||||||
if (empty($viewOtherParameters)) {
|
if (empty($viewOtherParameters)) {
|
||||||
$this->loadViewUrl($view, $viewLocale, $viewId);
|
$this->loadViewUrl($view, $viewLocale, $viewId);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -211,7 +211,6 @@ class Calculator
|
|||||||
$currentFixTax += $taxType->fixAmountRetriever($this->product);
|
$currentFixTax += $taxType->fixAmountRetriever($this->product);
|
||||||
$currentTaxFactor += $taxType->pricePercentRetriever();
|
$currentTaxFactor += $taxType->pricePercentRetriever();
|
||||||
|
|
||||||
|
|
||||||
} while ($taxRule = $this->taxRulesCollection->getPrevious());
|
} while ($taxRule = $this->taxRulesCollection->getPrevious());
|
||||||
|
|
||||||
$untaxedPrice -= $currentFixTax;
|
$untaxedPrice -= $currentFixTax;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class TaxEngine
|
|||||||
*/
|
*/
|
||||||
protected $session = null;
|
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();
|
self::$instance = new TaxEngine();
|
||||||
|
|||||||
@@ -35,13 +35,13 @@ abstract class BaseTaxType
|
|||||||
{
|
{
|
||||||
protected $requirements = null;
|
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)
|
public function calculate(Product $product, $untaxedPrice)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -406,7 +406,6 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua
|
|||||||
|
|
||||||
$couponManager = new RemoveXAmount($stubFacade);
|
$couponManager = new RemoveXAmount($stubFacade);
|
||||||
|
|
||||||
|
|
||||||
$condition1 = new MatchForTotalAmount($stubFacade);
|
$condition1 = new MatchForTotalAmount($stubFacade);
|
||||||
$operators = array(
|
$operators = array(
|
||||||
MatchForTotalAmount::INPUT1 => Operators::SUPERIOR,
|
MatchForTotalAmount::INPUT1 => Operators::SUPERIOR,
|
||||||
@@ -439,7 +438,6 @@ Sed facilisis pellentesque nisl, eu tincidunt erat scelerisque a. Nullam malesua
|
|||||||
->method('unserializeConditionCollection')
|
->method('unserializeConditionCollection')
|
||||||
->will($this->returnValue($conditions));
|
->will($this->returnValue($conditions));
|
||||||
|
|
||||||
|
|
||||||
$stubContainer->expects($this->any())
|
$stubContainer->expects($this->any())
|
||||||
->method('get')
|
->method('get')
|
||||||
->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory));
|
->will($this->onConsecutiveCalls($stubFacade, $couponManager, $stubConditionFactory));
|
||||||
|
|||||||
@@ -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`)
|
INSERT INTO `tax` (`id`, `type`, `serialized_requirements`, `created_at`, `updated_at`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'PricePercentTaxType', 'eyJwZXJjZW50IjoxOS42fQ==', NOW(), NOW()),
|
(1, 'PricePercentTaxType', 'eyJwZXJjZW50IjoiMjAifQ==', NOW(), NOW()),
|
||||||
(2, 'PricePercentTaxType', 'eyJwZXJjZW50Ijo1LjV9', NOW(), NOW());
|
(2, 'PricePercentTaxType', 'eyJwZXJjZW50IjoiMTAifQ==', NOW(), NOW());
|
||||||
|
|
||||||
INSERT INTO `tax_i18n` (`id`, `locale`, `title`)
|
INSERT INTO `tax_i18n` (`id`, `locale`, `title`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'fr_FR', 'TVA française à 19.6%'),
|
(1, 'fr_FR', 'TVA française à 20%'),
|
||||||
(1, 'en_US', 'French 19.6% VAT'),
|
(1, 'en_US', 'French 20% VAT'),
|
||||||
(2, 'fr_FR', 'TVA française à 5.5%'),
|
(2, 'fr_FR', 'TVA française à 10%'),
|
||||||
(2, 'en_US', 'French 5.5% VAT');
|
(2, 'en_US', 'French 10% VAT');
|
||||||
INSERT INTO `tax_rule` (`id`, `is_default`, `created_at`, `updated_at`)
|
INSERT INTO `tax_rule` (`id`, `is_default`, `created_at`, `updated_at`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 1, NOW(), NOW()),
|
(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`)
|
INSERT INTO `tax_rule_i18n` (`id`, `locale`, `title`)
|
||||||
VALUES
|
VALUES
|
||||||
(1, 'fr_FR', 'TVA française à 19.6%'),
|
(1, 'fr_FR', 'TVA française à 20%'),
|
||||||
(1, 'en_US', 'French 19.6% VAT'),
|
(1, 'en_US', 'French 20% VAT'),
|
||||||
(2, 'fr_FR', 'TVA française à 5.5%'),
|
(2, 'fr_FR', 'TVA française à 10%'),
|
||||||
(2, 'en_US', 'French 5.5% VAT');
|
(2, 'en_US', 'French 10% VAT');
|
||||||
|
|
||||||
INSERT INTO `tax_rule_country` (`tax_rule_id`, `country_id`, `tax_id`, `position`, `created_at`, `updated_at`)
|
INSERT INTO `tax_rule_country` (`tax_rule_id`, `country_id`, `tax_id`, `position`, `created_at`, `updated_at`)
|
||||||
VALUES
|
VALUES
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,9 @@ return array(
|
|||||||
'(edit)' => '(modification)',
|
'(edit)' => '(modification)',
|
||||||
'14.50' => '14.50',
|
'14.50' => '14.50',
|
||||||
'<span id="number_of_generated_combinations">0</span> combinations' => '<span id="number_of_generated_combinations">0</span> combinaisons',
|
'<span id="number_of_generated_combinations">0</span> combinations' => '<span id="number_of_generated_combinations">0</span> combinaisons',
|
||||||
|
'<strong>Cannot translate all fields.</strong> 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.' => '<strong>Impossible de traduire tout les champs.</strong> 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.',
|
||||||
'<strong>Congratulations</strong>, all text is now translated !' => '<strong>Félicitation</strong>, tout est traduit !',
|
'<strong>Congratulations</strong>, all text is now translated !' => '<strong>Félicitation</strong>, tout est traduit !',
|
||||||
'<strong>Did not found any text to translate</strong>. 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.' => '<strong>Aucun texte à traduire trouvé</strong>. 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.',
|
'<strong>Did not found any text to translate</strong>. 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.' => '<strong>Aucun texte à traduire trouvé</strong>. 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.',
|
'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 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 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 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' => 'Annuler',
|
||||||
'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure',
|
'Cancel changes and revert to original value' => 'Annuler les modifications et revenir à la version antérieure',
|
||||||
'Cancel this order' => 'Annuler cette commande',
|
'Cancel this order' => 'Annuler cette commande',
|
||||||
@@ -106,6 +111,7 @@ return array(
|
|||||||
'Change this tax rule' => 'Modifier cette règle de taxe',
|
'Change this tax rule' => 'Modifier cette règle de taxe',
|
||||||
'Change this template' => 'Modifier ce template',
|
'Change this template' => 'Modifier ce template',
|
||||||
'Change this variable' => 'Modifier cette variable',
|
'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 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.',
|
'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',
|
'Choose a country' => 'Choisissez un pays',
|
||||||
@@ -309,6 +315,7 @@ return array(
|
|||||||
'Document' => 'Document',
|
'Document' => 'Document',
|
||||||
'Document informations' => 'Informations sur le document',
|
'Document informations' => 'Informations sur le document',
|
||||||
'Documents' => 'Documents',
|
'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 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',
|
'Download purchase order as PDF' => 'Télécharger le bon de commande au format PDF',
|
||||||
'Drop files to upload' => 'Déposez des fichiers à envoyer',
|
'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 currency position' => 'Modifier la position de la devise',
|
||||||
'Enter new feature position' => 'Modifier la position de la caractéristique',
|
'Enter new feature position' => 'Modifier la position de la caractéristique',
|
||||||
'Enter new folder position' => 'Modifier la position du dossier',
|
'Enter new folder position' => 'Modifier la position du dossier',
|
||||||
|
'Enter new module position' => 'Entrez l\'emplacement du nouveau module',
|
||||||
'Enter new product position' => 'Classement du produit',
|
'Enter new product position' => 'Classement du produit',
|
||||||
'Enter new value position' => 'Entrez une nouvelle position',
|
'Enter new value position' => 'Entrez une nouvelle position',
|
||||||
'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',
|
'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é',
|
'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 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.',
|
'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 Name' => 'Nom de la caractéristique',
|
||||||
'Feature information' => 'Informations sur la caractéristique',
|
'Feature information' => 'Informations sur la caractéristique',
|
||||||
'Feature title' => 'Titre de la caractéristique',
|
'Feature title' => 'Titre de la caractéristique',
|
||||||
@@ -501,6 +510,7 @@ return array(
|
|||||||
'Is enabled' => 'Est valide',
|
'Is enabled' => 'Est valide',
|
||||||
'Is removing postage' => 'Offre les frais de port',
|
'Is removing postage' => 'Offre les frais de port',
|
||||||
'Is unlimited' => 'Est illimité',
|
'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',
|
'Kg' => 'Kg',
|
||||||
'Label' => 'Libellé',
|
'Label' => 'Libellé',
|
||||||
'Language name' => 'Nom de la langue',
|
'Language name' => 'Nom de la langue',
|
||||||
@@ -528,6 +538,8 @@ return array(
|
|||||||
'Mailing template name' => 'Nom du template de mailing',
|
'Mailing template name' => 'Nom du template de mailing',
|
||||||
'Mailing template purpose' => 'Objectif du template de mailing',
|
'Mailing template purpose' => 'Objectif du template de mailing',
|
||||||
'Mailing templates' => 'Template e-mail',
|
'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 module rights' => 'Gestion des accès aux modules',
|
||||||
'Manage resource rights' => 'Gérer les droits d\'accès aux ressources',
|
'Manage resource rights' => 'Gérer les droits d\'accès aux ressources',
|
||||||
'Manage taxes' => 'Gérer les taxes',
|
'Manage taxes' => 'Gérer les taxes',
|
||||||
@@ -573,6 +585,9 @@ return array(
|
|||||||
'Order n°' => 'Commande n°',
|
'Order n°' => 'Commande n°',
|
||||||
'Ordered products' => 'Produits commandés',
|
'Ordered products' => 'Produits commandés',
|
||||||
'Orders' => 'Commandes',
|
'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',
|
'Other addresses' => 'Autres adresses',
|
||||||
'Overall sales' => 'Total des ventes',
|
'Overall sales' => 'Total des ventes',
|
||||||
'PDF templates' => 'Template PDF',
|
'PDF templates' => 'Template PDF',
|
||||||
@@ -669,7 +684,7 @@ return array(
|
|||||||
'Rewritten URL' => 'URL réécrites',
|
'Rewritten URL' => 'URL réécrites',
|
||||||
'Rights' => 'Droits',
|
'Rights' => 'Droits',
|
||||||
'SEO' => 'SEO',
|
'SEO' => 'SEO',
|
||||||
'Sale' => 'Vente',
|
'Sale' => 'En promo',
|
||||||
'Sale price incl. taxes' => 'Prix de vente taxes incluses',
|
'Sale price incl. taxes' => 'Prix de vente taxes incluses',
|
||||||
'Sale price<br />w/ taxes (%currency)' => 'Prix de vente<br />sans taxes (%currency)',
|
'Sale price<br />w/ taxes (%currency)' => 'Prix de vente<br />sans taxes (%currency)',
|
||||||
'Sale price<br />w/o taxes (%currency)' => 'Prix de vente<br />avec taxes (%currency)',
|
'Sale price<br />w/o taxes (%currency)' => 'Prix de vente<br />avec taxes (%currency)',
|
||||||
@@ -714,6 +729,7 @@ return array(
|
|||||||
'Select which items you want to translate' => 'Sélectionnez quels éléments vous voulez traduire',
|
'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 a mail to this customer' => 'Contacter ce client par mail',
|
||||||
'Send files' => 'Envoyer des fichiers',
|
'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',
|
'Set as default tax rule' => 'Configurer en tant que règle par défaut',
|
||||||
'Shipping configuration' => 'Configuration du transport',
|
'Shipping configuration' => 'Configuration du transport',
|
||||||
'Shipping configuration name' => 'Nom de la configuration de livraison',
|
'Shipping configuration name' => 'Nom de la configuration de livraison',
|
||||||
@@ -740,6 +756,7 @@ return array(
|
|||||||
'Status' => 'Etat',
|
'Status' => 'Etat',
|
||||||
'Store' => 'Magasin',
|
'Store' => 'Magasin',
|
||||||
'Store Business Identification Number (SIRET, etc).' => 'Numéro d\'identification de votre magasin (SIRET, etc).',
|
'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',
|
'Store configuration' => 'Configuration du magasin',
|
||||||
'Street address' => 'Adresse',
|
'Street address' => 'Adresse',
|
||||||
'Subject' => 'Sujet',
|
'Subject' => 'Sujet',
|
||||||
@@ -763,7 +780,9 @@ return array(
|
|||||||
'Template title' => 'Titre du template',
|
'Template title' => 'Titre du template',
|
||||||
'Templates' => 'Templates',
|
'Templates' => 'Templates',
|
||||||
'Text version of this message' => 'Version texte de ce message',
|
'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 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 detailed description.' => 'La description détaillée.',
|
||||||
'The mailing template in HTML format.' => 'Le template de mailing au format HTML',
|
'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.',
|
'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',
|
'This year' => 'Cette année',
|
||||||
'Timeout' => 'Timeout',
|
'Timeout' => 'Timeout',
|
||||||
'Timeout :' => 'Timeout:',
|
'Timeout :' => 'Timeout:',
|
||||||
'Title' => 'Civilité',
|
'Title' => 'Titre',
|
||||||
'Title :' => 'Titre',
|
'Title :' => 'Titre',
|
||||||
'To' => 'A',
|
'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.',
|
'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 Text message defined below' => 'Utiliser le message Text défini ci-dessous',
|
||||||
'Use address by default' => 'Utiliser comme adresse par défaut',
|
'Use address by default' => 'Utiliser comme adresse par défaut',
|
||||||
'Use default layout' => 'Utiliser le layout 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',
|
'Use this address by default' => 'Utiliser comme adresse par défaut',
|
||||||
'Used in your store front' => 'Utilisé dans votre vitrine',
|
'Used in your store front' => 'Utilisé dans votre vitrine',
|
||||||
'Username' => 'Nom d\'utilisateur',
|
'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 change the default folder (%title) in the "General" tab.' => 'Vous pouvez modifier le dossier par défaut (%title) dans l\'onglet "Général".',
|
||||||
'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur',
|
'You can\'t delete this administrator' => 'Vous ne pouvez pas supprimer cet administrateur',
|
||||||
'You can\'t delete this profile' => 'Vous ne pouvez pas supprimer ce profil',
|
'You can\'t delete this profile' => 'Vous ne pouvez pas supprimer ce profil',
|
||||||
|
'You 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',
|
'Your current IP address is %ip' => 'Votre adresse IP courante est %ip',
|
||||||
'Zip code' => 'Code postal',
|
'Zip code' => 'Code postal',
|
||||||
'Zones' => 'Zones',
|
'Zones' => 'Zones',
|
||||||
|
|||||||
@@ -3,17 +3,19 @@
|
|||||||
return array(
|
return array(
|
||||||
'%nb Item' => '%nb produit',
|
'%nb Item' => '%nb produit',
|
||||||
'%nb Items' => '%nb produits',
|
'%nb Items' => '%nb produits',
|
||||||
|
'+' => '+',
|
||||||
'+ View All' => '+ Voir tout',
|
'+ View All' => '+ Voir tout',
|
||||||
'404' => '404',
|
'404' => '404',
|
||||||
|
'<strong>Sorry!</strong> We are not able to give you a delivery method for your order.' => '<strong>Désolé !</strong> 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 : ',
|
'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',
|
'Account' => 'Mon compte',
|
||||||
'Add a new address' => 'Ajouter une nouvelle adresse',
|
'Add a new address' => 'Ajouter une nouvelle adresse',
|
||||||
'Add to cart' => 'Ajouter au panier',
|
'Add to cart' => 'Ajouter au panier',
|
||||||
'Additional Info' => 'Informations complémentaires',
|
'Additional Info' => 'Informations complémentaires',
|
||||||
|
'Address' => 'Adresse',
|
||||||
'Address %nb' => 'Adresse n°',
|
'Address %nb' => 'Adresse n°',
|
||||||
'Address Update' => 'Mise à jour de l\'adresse',
|
'Address Update' => 'Mise à jour de l\'adresse',
|
||||||
'Address' => 'Adresse',
|
'All rights reserved.' => 'Tout droits réservés.',
|
||||||
'Address Line 2'=>'Complément d\'adresse',
|
|
||||||
'Amount' => 'Montant',
|
'Amount' => 'Montant',
|
||||||
'Availability' => 'Disponibilité',
|
'Availability' => 'Disponibilité',
|
||||||
'Available' => 'Disponible',
|
'Available' => 'Disponible',
|
||||||
@@ -23,102 +25,95 @@ return array(
|
|||||||
'Cancel' => 'Annuler',
|
'Cancel' => 'Annuler',
|
||||||
'Cart' => 'Panier',
|
'Cart' => 'Panier',
|
||||||
'Categories' => 'Catégories',
|
'Categories' => 'Catégories',
|
||||||
'Cellphone'=> 'Portable',
|
'Change Password' => 'Modifier mon mot de passe',
|
||||||
'Change address' => 'Changer d\'adresse',
|
'Change address' => 'Changer d\'adresse',
|
||||||
'Change my account information' => 'Modifier mes informations personnelles',
|
'Change my account information' => 'Modifier mes informations personnelles',
|
||||||
'Change my password' => 'Changer mon mot de passe',
|
'Change my password' => 'Changer mon mot de passe',
|
||||||
'Change Password' => 'Modifier mon mot de passe',
|
|
||||||
'Check my order' => 'Vérifier ma commmande',
|
'Check my order' => 'Vérifier ma commmande',
|
||||||
'Checkout' => 'Payer',
|
'Checkout' => 'Payer',
|
||||||
'Choose your delivery address' => 'Choisissez une adresse de livraison',
|
'Choose your delivery address' => 'Choisissez une adresse de livraison',
|
||||||
'Choose your delivery method' => 'Choisissez votre moyen de livraison',
|
'Choose your delivery method' => 'Choisissez votre moyen de livraison',
|
||||||
'Choose your payment method' => 'Choisissez voter moyen de paiement',
|
'Choose your payment method' => 'Choisissez voter moyen de paiement',
|
||||||
'Code :' => 'Code',
|
'Code :' => 'Code',
|
||||||
'Company Name'=>'Entreprise',
|
|
||||||
'Complementary address' => 'Résidence secondaire',
|
|
||||||
'Contact Us' => 'Contactez-nous',
|
'Contact Us' => 'Contactez-nous',
|
||||||
'Continue Shopping' => 'Continuer mes achats',
|
'Continue Shopping' => 'Continuer mes achats',
|
||||||
'Copyright' => 'Copyright',
|
'Copyright' => 'Copyright',
|
||||||
'Coupon code' => 'Code promo',
|
'Coupon code' => 'Code promo',
|
||||||
|
'Create' => 'Créer',
|
||||||
'Create New Account' => 'Créer un nouveau compte',
|
'Create New Account' => 'Créer un nouveau compte',
|
||||||
'Create New Address' => 'Créer une nouvelle adresse',
|
'Create New Address' => 'Créer une nouvelle adresse',
|
||||||
'Create' => 'Créer',
|
'Currency' => 'Devise',
|
||||||
'Currency:' => 'Monnaie',
|
'Currency:' => 'Devise',
|
||||||
'Date' => 'Date',
|
'Date' => 'Date',
|
||||||
'Delete address' => 'Supprimer cette adresse',
|
|
||||||
'Delivery address' => 'Adresse de livraison',
|
|
||||||
'Delivery Information' => 'Informations de livraison',
|
'Delivery Information' => 'Informations de livraison',
|
||||||
|
'Delivery address' => 'Adresse de livraison',
|
||||||
'Demo product description' => 'Exemple de description de produit',
|
'Demo product description' => 'Exemple de description de produit',
|
||||||
'Demo product title' => 'Exemple de titre',
|
'Demo product title' => 'Exemple de titre',
|
||||||
'Description' => 'Description',
|
'Description' => 'Description',
|
||||||
'Do you have an account?' => 'Avez-vous déjà un compte ?',
|
'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 ?',
|
'Do you really want to delete this address ?' => 'Voulez-vous vraiment supprimer cette adresse ?',
|
||||||
'Edit this address' => 'Editer cette adresse',
|
|
||||||
'Edit' => 'Editer',
|
'Edit' => 'Editer',
|
||||||
|
'Edit this address' => 'Editer cette adresse',
|
||||||
'Email address' => 'Adresse e-mail',
|
'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' => 'Suivez-nous',
|
||||||
'Follow us introduction' => 'Sur les réseaux :',
|
'Follow us introduction' => 'Sur les réseaux :',
|
||||||
'Forgot your Password?' => 'Mot de passe oublié ?',
|
'Forgot your Password?' => 'Mot de passe oublié ?',
|
||||||
'Free shipping' => 'Livraison gratuite',
|
'Free shipping' => 'Livraison gratuite',
|
||||||
'Go home' => 'Retour à l\'accueil',
|
'Go home' => 'Retour à l\'accueil',
|
||||||
|
'Google+' => 'Google+',
|
||||||
'Grid' => 'Grille',
|
'Grid' => 'Grille',
|
||||||
'Home address' => 'Résidence principale',
|
|
||||||
'Home' => 'Accueil',
|
'Home' => 'Accueil',
|
||||||
'In Stock' => 'Disponible',
|
'In Stock' => 'Disponible',
|
||||||
'instead of' => 'au lieu de',
|
'Instagram' => 'Instagram',
|
||||||
'Item(s)' => 'Produit(s)',
|
'Language' => 'Langue',
|
||||||
'I would like to receive the newsletter or the latest news.' => 'Je veux m\'inscrire à la newsletter pour rester informé.',
|
|
||||||
'Language:' => 'Langue',
|
'Language:' => 'Langue',
|
||||||
|
'Latest' => 'Nouveautés',
|
||||||
'Latest articles' => 'Nouveaux articles',
|
'Latest articles' => 'Nouveaux articles',
|
||||||
'Latest products' => 'Derniers produits',
|
'Latest products' => 'Derniers produits',
|
||||||
'Latest' => 'Nouveautés',
|
|
||||||
'List of orders' => 'Liste de mes commandes',
|
|
||||||
'List' => 'Liste',
|
'List' => 'Liste',
|
||||||
|
'List of orders' => 'Liste de mes commandes',
|
||||||
'Log In!' => 'Se connecter',
|
'Log In!' => 'Se connecter',
|
||||||
'Log out!' => 'Se déconnecter',
|
'Log out!' => 'Se déconnecter',
|
||||||
'Login Information' => 'Informations de connexion',
|
|
||||||
'Login' => 'Connexion',
|
'Login' => 'Connexion',
|
||||||
|
'Login Information' => 'Informations de connexion',
|
||||||
'Main Navigation' => 'Navigation principale',
|
'Main Navigation' => 'Navigation principale',
|
||||||
'Minimum 2 characters.' => '2 caractères minimum.',
|
'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',
|
||||||
'Multi-payment platform' => 'Plateforme de paiement en ligne',// bizarre ?
|
|
||||||
'My Account' => 'Mon compte',
|
'My Account' => 'Mon compte',
|
||||||
'My Address book' => 'Mon carnet d\'adresses',
|
|
||||||
'My Address Books' => 'Mes carnets 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 Orders' => 'Mes commandes',
|
||||||
|
'My order' => 'Ma commande',
|
||||||
|
'Name' => 'Nom',
|
||||||
'Name ascending' => 'Nom croissant',
|
'Name ascending' => 'Nom croissant',
|
||||||
'Name descending' => 'Nom décroissant',
|
'Name descending' => 'Nom décroissant',
|
||||||
'Name' => 'Nom',
|
|
||||||
'Need help ?' => 'Besoin d\'aide? ',
|
'Need help ?' => 'Besoin d\'aide? ',
|
||||||
'Newsletter Subscription' => 'Inscription à la newsletter',
|
|
||||||
'Newsletter' => 'Newsletter',
|
'Newsletter' => 'Newsletter',
|
||||||
'Next product' => 'Produits suivants',
|
'Newsletter Subscription' => 'Inscription à la newsletter',
|
||||||
|
'Next' => 'Suivant',
|
||||||
'Next Step' => 'Etape suivante',
|
'Next Step' => 'Etape suivante',
|
||||||
'Next' => 'Suivant',
|
'Next product' => 'Produits suivants',
|
||||||
'Next' => 'Suivant',
|
'No Content in this folder.' => 'Aucun contenu dans ce dossier.',
|
||||||
'No articles currently' => 'Actuellement aucun article',
|
'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 products available in this category' => 'Aucun produit dans cette catégorie.',
|
||||||
'No results found' => 'Aucun résultat',
|
'No results found' => 'Aucun résultat',
|
||||||
'No' => 'Non',
|
|
||||||
'No.' => 'N°',
|
'No.' => 'N°',
|
||||||
'Offers' => 'Promotions',
|
'Offers' => 'Promotions',
|
||||||
'Ok' => 'Ok',
|
'Ok' => 'Ok',
|
||||||
'Order details' => 'Détail de commande',
|
'Order details' => 'Détail de commande',
|
||||||
'Order number' => 'Commande numéro',
|
'Order number' => 'Commande numéro',
|
||||||
'Orders over $50' => 'Commandes supérieures à 50€',//ne devrait-on pas mettre une variable ici?
|
'Orders over $50' => 'Commandes supérieures à 50€',
|
||||||
'Out of stock' => 'Indisponible',
|
'Our mailing address is:' => 'Notre adresse mail est :',
|
||||||
|
'Out of Stock' => 'Hors stock',
|
||||||
'Pagination' => 'Pagination',
|
'Pagination' => 'Pagination',
|
||||||
'Password Forgotten' => 'Mot de passe oublié',
|
|
||||||
'Password' => 'Mot de passe',
|
'Password' => 'Mot de passe',
|
||||||
'Password confirmation'=>"Confirmer le mot de passe",
|
'Password Forgotten' => 'Mot de passe oublié',
|
||||||
'per page' => 'par page',
|
|
||||||
'Personal Information' => 'Informations personnelles',
|
'Personal Information' => 'Informations personnelles',
|
||||||
'Placeholder address label' => 'Maison, Domicile, Travail...',
|
'Placeholder address label' => 'Maison, Domicile, Travail...',
|
||||||
'Placeholder address1' => 'Adresse',
|
'Placeholder address1' => 'Adresse',
|
||||||
'Placeholder address2' => '',
|
'Placeholder address2' => 'Adresse suite',
|
||||||
'Placeholder cellphone' => 'Portable',
|
'Placeholder cellphone' => 'Portable',
|
||||||
'Placeholder city' => 'Ville',
|
'Placeholder city' => 'Ville',
|
||||||
'Placeholder company' => 'Compagnie',
|
'Placeholder company' => 'Compagnie',
|
||||||
@@ -131,46 +126,43 @@ return array(
|
|||||||
'Placeholder lastname' => 'Nom de famille',
|
'Placeholder lastname' => 'Nom de famille',
|
||||||
'Placeholder phone' => 'Téléphone',
|
'Placeholder phone' => 'Téléphone',
|
||||||
'Placeholder zipcode' => 'Code postal',
|
'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.',
|
'Please enter your email address below.' => 'Veuillez saisir votre adresse e-mail ci-dessous.',
|
||||||
'Position' => 'Position',
|
'Position' => 'Position',
|
||||||
'Previous product' => 'Produits précédents',
|
|
||||||
'Previous' => 'Précédent',
|
'Previous' => 'Précédent',
|
||||||
|
'Previous product' => 'Produits précédents',
|
||||||
|
'Price' => 'Prix',
|
||||||
'Price ascending' => 'Prix croissant',
|
'Price ascending' => 'Prix croissant',
|
||||||
'Price descending' => 'Prix décroissant',
|
'Price descending' => 'Prix décroissant',
|
||||||
'Price' => 'Prix',
|
|
||||||
'Proceed checkout' => 'Payer',
|
'Proceed checkout' => 'Payer',
|
||||||
'Product Empty Button' => 'Ajouter mon premier produit',
|
'Product Empty Button' => 'Ajouter mon premier produit',
|
||||||
'Product Empty Message' => 'C\'est très simple d\'ajouter un produit dans l\'adminsitration.
|
'Product Empty Message' => 'C\'est très simple d\'ajouter un produit dans l\'administration. <ol> <li>N\'oubliez pas de sélectionner <strong>NEW</strong> dans l\'onglet Details afin de voir votre produit dans la section des nouveautés.</li> <li>N\'oubliez pas de sélectionner <strong>SALE</strong> dans l\'onglet Details afin de voir votre produit dans la section des promotions.</li> </ol>',
|
||||||
<ol>
|
|
||||||
<li>N\'oubliez pas de sélectionner <strong>NEW</strong> dans l\'onglet Details afin de voir votre produit dans la section des nouveautés.</li>
|
|
||||||
<li>N\'oubliez pas de sélectionner <strong>SALE</strong> dans l\'onglet Details afin de voir votre produit dans la section des promotions.</li>
|
|
||||||
</ol>',
|
|
||||||
'Product Empty Title' => 'Bonjour',
|
'Product Empty Title' => 'Bonjour',
|
||||||
'Product Name' => 'Nom du produit',
|
'Product Name' => 'Nom du produit',
|
||||||
'Product Offers' => 'Produits en promotion',
|
'Product Offers' => 'Produits en promotion',
|
||||||
'products' => 'produits',
|
|
||||||
'Qty' => 'Qté',
|
'Qty' => 'Qté',
|
||||||
'Quantity' => 'Quantité',
|
'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',
|
'Rating' => 'Avis',
|
||||||
'Ref.' => '',
|
'Ref.' => 'Ref.',
|
||||||
'Register!' => 'S\'inscrire !',
|
|
||||||
'Register' => 'S\'inscrire',
|
'Register' => 'S\'inscrire',
|
||||||
|
'Register!' => 'S\'inscrire !',
|
||||||
'Regular Price:' => 'Prix :',
|
'Regular Price:' => 'Prix :',
|
||||||
'Related' => 'Liés', // voir le contexte pour l'accord
|
'Related' => 'Liés',
|
||||||
'Remove this address' => 'Supprimer cette adresse',
|
|
||||||
'Remove' => 'Supprimer',
|
'Remove' => 'Supprimer',
|
||||||
'Search a product' => 'Chercher un produit',
|
'Remove this address' => 'Supprimer cette adresse',
|
||||||
'Search Result for' => 'Résultat de recherche pour',
|
'SELECT YOUR CURRENCY' => 'Sélectionnez votre devise',
|
||||||
|
'SELECT YOUR LANGUAGE' => 'Sélectionnez votre langue',
|
||||||
'Search' => 'Recherche',
|
'Search' => 'Recherche',
|
||||||
|
'Search Result for' => 'Résultat de recherche pour',
|
||||||
|
'Search a product' => 'Chercher un produit',
|
||||||
'Search...' => 'Recherche…',
|
'Search...' => 'Recherche…',
|
||||||
'Secure payment' => 'Paiement sécurisé',
|
|
||||||
'Secure Payment' => 'Paiement sécurisé',
|
'Secure Payment' => 'Paiement sécurisé',
|
||||||
|
'Secure payment' => 'Paiement sécurisé',
|
||||||
'Select Country' => 'Choisissez un pays',
|
'Select Country' => 'Choisissez un pays',
|
||||||
'Select Title' => 'Civilité',
|
'Select Title' => 'Civilité',
|
||||||
'Send us a message' => 'Envoyer nous un message',
|
|
||||||
'Send' => 'Envoyer',
|
'Send' => 'Envoyer',
|
||||||
|
'Send us a message' => 'Envoyer nous un message',
|
||||||
'Shipping Tax' => 'Frais de livraison',
|
'Shipping Tax' => 'Frais de livraison',
|
||||||
'Show' => 'Voir',
|
'Show' => 'Voir',
|
||||||
'Sign In' => 'Se connecter',
|
'Sign In' => 'Se connecter',
|
||||||
@@ -179,32 +171,31 @@ return array(
|
|||||||
'Sort By' => 'Trier par',
|
'Sort By' => 'Trier par',
|
||||||
'Special Price:' => 'Prix en promotion :',
|
'Special Price:' => 'Prix en promotion :',
|
||||||
'Status' => 'Etat',
|
'Status' => 'Etat',
|
||||||
'Street Address'=>"Adresse",
|
|
||||||
'Subscribe' => 'Inscription',
|
'Subscribe' => 'Inscription',
|
||||||
'Tax Inclusive' => 'TVA incluse',
|
|
||||||
'Thank you for the trust you place in us.' => 'Merci pour votre confiance. ',
|
'Thank you for the trust you place in us.' => 'Merci pour votre confiance. ',
|
||||||
'Thanks !' => 'Merci !',
|
'Thanks !' => 'Merci !',
|
||||||
'Thanks for signing up! We\'ll keep you posted whenever we have any new updates.' => '',
|
'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.' => '',
|
'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' => '',
|
'The page cannot be found' => 'La page ne peut pas être trouvée',
|
||||||
'Thelia V2' => 'Thelia v2',
|
'Thelia V2' => 'Thelia v2',
|
||||||
'Toggle navigation' => 'Navigation alternative',
|
'Toggle navigation' => 'Navigation alternative',
|
||||||
'Total' => 'Total',
|
'Total' => 'Total',
|
||||||
'TTC' => 'TTC',
|
'Twitter' => 'Twitter',
|
||||||
'Unit Price' => 'Prix unitaire',
|
'Unit Price' => 'Prix unitaire',
|
||||||
'Update Profile' => 'Mettre à jour votre profil',
|
|
||||||
'Update' => 'Mettre à jour',
|
'Update' => 'Mettre à jour',
|
||||||
|
'Update Profile' => 'Mettre à jour votre profil',
|
||||||
|
'Update Quantity' => 'Mettre à jour la quantité',
|
||||||
'Upsell Products' => 'Nous vous proposons également',
|
'Upsell Products' => 'Nous vous proposons également',
|
||||||
'Useful links' => 'Liens utiles',
|
'Useful links' => 'Liens utiles',
|
||||||
|
'View' => 'Voir',
|
||||||
|
'View Cart' => 'Voir mon panier',
|
||||||
'View all' => ' Voir tout',
|
'View all' => ' Voir tout',
|
||||||
'View as' => 'Voir en tant que ',
|
'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 order %ref as pdf document' => 'Ouvrir la commande %ref dans un pdf',
|
||||||
'View product' => 'Voir le produit',
|
'View product' => 'Voir le produit',
|
||||||
'View' => 'Voir',
|
|
||||||
'Warning' => 'Attention',
|
'Warning' => 'Attention',
|
||||||
'Yes' => 'Oui',
|
'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.',
|
||||||
'Yes, I have a password :' => 'Oui, j\'ai déjà un mot de passe',
|
|
||||||
'You are here:' => 'Vous êtes ici :',
|
'You are here:' => 'Vous êtes ici :',
|
||||||
'You choose to pay by' => 'Vous avez choisi de payer par',
|
'You choose to pay by' => 'Vous avez choisi de payer par',
|
||||||
'You don\'t have orders yet.' => 'Vous n\'avez pas encore de commande.',
|
'You don\'t have orders yet.' => 'Vous n\'avez pas encore de commande.',
|
||||||
@@ -215,4 +206,8 @@ return array(
|
|||||||
'Your Cart' => 'Votre panier',
|
'Your Cart' => 'Votre panier',
|
||||||
'Your email address' => 'Votre adresse e-mail',
|
'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.',
|
'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',
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user