###############################################################################
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
###############################################################################
### This file contains labels directly translated by XUI framework
Add=Ajouter
AmountInOut=Montant
CASH=Esp\u00e8ces
CASH_DRAWER_COMMUNICATION_ERROR=Erreur lors de la communication avec le tiroir caisse
CASH_DRAWER_IS_OPEN=Le tiroir caisse est ouvert
CHANGE_PRICE=Changer le prix
CHECK=Ch\u00e8que
CLEAR_ALL=Tout annuler
CLEAR_CACHE=Vider les caches
CLEAR_ONE=Annuler le paiement
CLIENT_PROFILE=Donn\u00e9es client
CLOSE=Fermer
CLR=Effacer
CLR_DISC=Annuler la remise
CONFIG_ITEM=Configurer l'article
CREDIT=Carte de cr\u00e9dit
Cancel=Annuler
Create=Cr\u00e9er
DEL=Suppr.
Delete=Supprimer
ENT=Valider
EXCEPTION=Exception rencontr\u00e9e
EXIT=Quitter
Edit=Modifier
FINISH=Fin
FUNCTION_NOT_YET_SUPPORTED=Fonction non encore support\u00e9e
GIFT_CERT=Bon d'achat
INVALID_CARD_NUMBER=N\u00b0 de carte non valide
INVALID_EXPIRATION_DATE=La date d'expiration doit comporter 4 chiffres
INVALID_SECURITY_CODE=Le code doit comporter 3 ou 4 chiffres.
ITEM_DISC=Remise sur l'article
ITEM_MODIFICATION_ERROR=Erreur lors de la modification de l'article
LANG=Langage
LOAD=Charger
LOCK=Bloquer
MAIN=Vente
MANAGER_NOT_LOGGED_IN=Identifiant non g\u00e9rant
MGR=Gestion
MOD=Changer la quantit\u00e9
NOT_ENOUGH_FUNDS=Le client n'a pas fournit assez d'argent pour cl\u00f4turer la vente
NO_ITEMS_SOLD=Aucun article vendu
OK=OK
OPEN=Ouvrir
OPEN_DRAWER=Ouvrir le tiroir
PAID_IN=Retour en caisse
PAID_OUT=Sortie de caisse
PAY=Paiement
PRINTER_NOT_READY=Imprimante de caisse non pr\u00eate
PROMO=Promos
PROMO_CODE=Code de promotion
QTY=Quantit\u00e9
RECEIPT_PRINTER_COMMUNICATION_ERROR=Erreur lors de la communication avec l'imprimante de caisse
RECEIPT_SERIALISE_ERROR=Erreur lors de la tentative de s\u00e9rialisation du ticket
REPRINT=R\u00e9imprimer
RESET_XUI=R\u00e9initialiser XUI
ReasonInOut=Motif
Replace=Remplacer
ReplaceAndDelete=<html><center>Remplacer et<br>supprimer
SALE_DISC=Remise sur la vente
SALE_VOIDED=Vente annul\u00e9e
SET_REF\#=Ref. de transaction
SIGN_OUT=Sortir
SKU=Code
SWAP_KEYBOARD=Clavier virtuel
Save=Sauver
SaveAndClear=<html><center>Sauver et<br>r\u00e9intialiser la vente
Search=Rechercher
Select=S\u00e9lectionner
TERMINAL_IS_CLOSED=Le terminal est ferm\u00e9
TEST_ALERT=Alerte (test)
TEST_ALERT_BOX=Test de l'impl\u00e9mentation des alertes
TEST_MSR=Test lect. de carte
TOTALS=Total
TRANS_RET=Recharger une vente
TRANS_SAVE=Sauver la vente
UNKNOWN_CARD_TYPE=Type de carte inconnu
VOID_A_SALE=Annuler une vente
VOID_ITEM=Annuler l'article
VOID_SALE=Annuler la vente
cardClient=N\u00b0 de carte
emailClient=Courriel
item_not_configurable=Article non configurable
listClient=Liste des clients
nameClient=Nom
nameContains=Contient
nameEquals=Egal
no_sales=Aucune vente sauv\u00e9e
order_not_found=N\u00b0 de transaction inconnu !
phoneClient=N\u00b0 de t\u00e9l\u00e9phone
problems_reading_card=Probl\u00e8me lors de la lecture de la carte
product_not_found=Produit inconnu !
promo_page=Ce sera la page des promotions...
reasonCommentInOut=Commentaire
tipLoginPwd=* Le courriel et le n\u00b0 de t\u00e9l. sont aussi utilis\u00e9s respectivement comme identifiant de connexion et mot de passe.
