diff --git a/htdocs/core/db/mssql.class.php b/htdocs/core/db/mssql.class.php
index d8261b8034e..d5752c49126 100644
--- a/htdocs/core/db/mssql.class.php
+++ b/htdocs/core/db/mssql.class.php
@@ -419,7 +419,11 @@ class DoliDBMssql extends DoliDB
}
//print "";
- if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK'))) dol_syslog('sql='.$query, LOG_DEBUG);
+ if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK')))
+ {
+ $SYSLOG_SQL_LIMIT = 10000; // limit log to 10kb per line to limit DOS attacks
+ dol_syslog('sql='.substr($query, 0, $SYSLOG_SQL_LIMIT), LOG_DEBUG);
+ }
if (! $this->database_name)
{
diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php
index 250429ce422..a52e052b531 100644
--- a/htdocs/core/db/pgsql.class.php
+++ b/htdocs/core/db/pgsql.class.php
@@ -522,7 +522,11 @@ class DoliDBPgsql extends DoliDB
@pg_query($this->db, 'SAVEPOINT mysavepoint');
}
- if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK'))) dol_syslog('sql='.$query, LOG_DEBUG);
+ if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK')))
+ {
+ $SYSLOG_SQL_LIMIT = 10000; // limit log to 10kb per line to limit DOS attacks
+ dol_syslog('sql='.substr($query, 0, $SYSLOG_SQL_LIMIT), LOG_DEBUG);
+ }
$ret = @pg_query($this->db, $query);
diff --git a/htdocs/core/db/sqlite3.class.php b/htdocs/core/db/sqlite3.class.php
index 360b72f80d9..24bb679f17b 100644
--- a/htdocs/core/db/sqlite3.class.php
+++ b/htdocs/core/db/sqlite3.class.php
@@ -453,7 +453,11 @@ class DoliDBSqlite3 extends DoliDB
}
//print "After convertSQLFromMysql:\n".$query."
\n";
- if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK'))) dol_syslog('sql='.$query, LOG_DEBUG);
+ if (! in_array($query, array('BEGIN','COMMIT','ROLLBACK')))
+ {
+ $SYSLOG_SQL_LIMIT = 10000; // limit log to 10kb per line to limit DOS attacks
+ dol_syslog('sql='.substr($query, 0, $SYSLOG_SQL_LIMIT), LOG_DEBUG);
+ }
if (empty($query)) return false; // Return false = error if empty request
// Ordre SQL ne necessitant pas de connexion a une base (exemple: CREATE DATABASE)
diff --git a/htdocs/core/modules/modExpenseReport.class.php b/htdocs/core/modules/modExpenseReport.class.php
index 0d8fa008c6b..ea1ffb7f6a3 100644
--- a/htdocs/core/modules/modExpenseReport.class.php
+++ b/htdocs/core/modules/modExpenseReport.class.php
@@ -186,7 +186,13 @@ class modExpenseReport extends DolibarrModules
'u.lastname'=>'Lastname','u.firstname'=>'Firstname','u.login'=>"Login",'ed.rowid'=>'LineId','tf.code'=>'Type','ed.date'=>'Date','ed.tva_tx'=>'VATRate',
'ed.total_ht'=>'TotalHT','ed.total_tva'=>'TotalVAT','ed.total_ttc'=>'TotalTTC','ed.comments'=>'Comment','p.rowid'=>'ProjectId','p.ref'=>'Ref'
);
- $this->export_entities_array[$r]=array(
+ $this->export_TypeFields_array[$r]=array(
+ 'd.rowid'=>"Numeric",'d.ref'=>'Text','d.date_debut'=>'Date','d.date_fin'=>'Date','d.date_create'=>'Date','d.date_approve'=>'Date',
+ 'd.total_ht'=>"Numeric",'d.total_tva'=>'Numeric','d.total_ttc'=>'Numeric','d.note_private'=>'Text','d.note_public'=>'Text',
+ 'u.lastname'=>'Text','u.firstname'=>'Text','u.login'=>"Text",'ed.rowid'=>'Numeric','tf.code'=>'Code','ed.date'=>'Date','ed.tva_tx'=>'Numeric',
+ 'ed.total_ht'=>'Numeric','ed.total_tva'=>'Numeric','ed.total_ttc'=>'Numeric','ed.comments'=>'Text','p.rowid'=>'Numeric','p.ref'=>'Text'
+ );
+ $this->export_entities_array[$r]=array(
'u.lastname'=>'user','u.firstname'=>'user','u.login'=>'user','ed.rowid'=>'expensereport_line','ed.date'=>'expensereport_line',
'ed.tva_tx'=>'expensereport_line','ed.total_ht'=>'expensereport_line','ed.total_tva'=>'expensereport_line','ed.total_ttc'=>'expensereport_line',
'ed.comments'=>'expensereport_line','tf.code'=>'expensereport_line','p.project_ref'=>'expensereport_line','p.rowid'=>'project','p.ref'=>'project'
diff --git a/htdocs/core/modules/modHoliday.class.php b/htdocs/core/modules/modHoliday.class.php
index 8bb34a338e5..ba792ad28ad 100644
--- a/htdocs/core/modules/modHoliday.class.php
+++ b/htdocs/core/modules/modHoliday.class.php
@@ -206,6 +206,12 @@ class modHoliday extends DolibarrModules
'd.date_valid'=>'DateApprove','d.fk_validator'=>"UserForApprovalID",'ua.lastname'=>"UserForApprovalLastname",'ua.firstname'=>"UserForApprovalFirstname",
'ua.login'=>"UserForApprovalLogin",'d.description'=>'Description','d.statut'=>'Status'
);
+ $this->export_TypeFields_array[$r]=array(
+ 'd.rowid'=>"Numeric",'t.code'=>'Text', 't.label'=>'Text','d.fk_user'=>'Numeric',
+ 'u.lastname'=>'Text','u.firstname'=>'Text','u.login'=>"Text",'d.date_debut'=>'Date','d.date_fin'=>'Date',
+ 'd.date_valid'=>'Date','d.fk_validator'=>"Numeric",'ua.lastname'=>"Text",'ua.firstname'=>"Text",
+ 'ua.login'=>"Text",'d.description'=>'Text','d.statut'=>'Numeric'
+ );
$this->export_entities_array[$r]=array(
'u.lastname'=>'user','u.firstname'=>'user','u.login'=>'user','ua.lastname'=>'user','ua.firstname'=>'user','ua.login'=>'user'
);
diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang
index 1367e721ce8..145f996c4f2 100644
--- a/htdocs/langs/en_US/holiday.lang
+++ b/htdocs/langs/en_US/holiday.lang
@@ -18,6 +18,7 @@ ValidatorCP=Approbator
ListeCP=List of leave
LeaveId=Leave ID
ReviewedByCP=Will be approved by
+UserID=User ID
UserForApprovalID=User for approval ID
UserForApprovalFirstname=First name of approval user
UserForApprovalLastname=Last name of approval user
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index ea029762214..7407396835b 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -400,6 +400,7 @@ OldVATRates=Ancien taux de TVA
NewVATRates=Nouveau taux de TVA
PriceBaseTypeToChange=Modifier sur les prix dont la référence de base est le
MassConvert=Convertir en masse
+PriceFormatInCurrentLanguage=Format de prix dans la langue actuelle
String=Chaîne
TextLong=Texte long
HtmlText=Texte HTML
@@ -431,7 +432,7 @@ ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur (où la cl
ExtrafieldParamHelpsellist=Les paramètres de la liste viennent d'une table
Syntax : table_name:label_field:id_field::filter
Exemple : c_typent:libelle:id::filter
-idfilter est nécessairement une clé primaire int
- filter peut être un simple test (e.g. active=1) pour seulement montrer les valeurs actives
Vous pouvez aussi utiliser $ID$ dans le filtre qui est le ID actuel de l'objet
Pour faire un SELECT dans le filtre, utilisez $SEL$
Si vous voulez filtrer sur un extrafield, utilisez la syntaxe extra.fieldcode=... (ou fieldcode est le code de l'extrafield)
Pour avoir une liste qui dépend d'un autre attribut complémentaire:
c_typent:libelle:id:options_parent_list_code|parent_column:filter
Pour avoir une liste qui dépend d'une autre liste:
c_typent:libelle:id:parent_list_code|parent_column:filter
ExtrafieldParamHelpchkbxlst=Les paramètres de la liste proviennent d'une table
:Syntaxe : nom_de_la_table:libelle_champ:id_champ::filtre
Exemple : c_typent:libelle:id::filter
le filtre peut n'est qu'un test (ex : active=1) pour n'afficher que les valeurs actives.
Vous pouvez aussi utiliser $ID$ dans les filtres pour indiquer l'ID de l'élément courant.
Pour utiliser un SELECT dans un filtre, utilisez $SEL$
Pour filtrer sur un attribut supplémentaire, utilisez la syntaxeextra.fieldcode=... (ou fieldcode est le code de l'attribut supplémentaire)
Pour afficher une liste dépendant d'un autre attribut supplémentaire :
c_typent:libelle:id:options_code_liste_parente|colonne_parente:filtre
Pour afficher une liste dépendant d'une autre liste :
c_typent:libelle:id:code_liste_parente|colonne_parente:filter
ExtrafieldParamHelplink=Les paramètres doivent être ObjectName:Classpath
Syntaxe: ObjectName:Classpath
Exemples:
Société:societe/class/societe.class.php
Contact:contact/class/contact.class.php
-ExtrafieldParamHelpSeparator=Garder vide pour un simple séparateur
Définissez-le sur 1 pour un séparateur accordéon (ouvert par défaut)
Définissez-le sur 2 pour un séparateur accordéon (réduit par défaut)
+ExtrafieldParamHelpSeparator=Garder vide pour un simple séparateur
Définissez-le sur 1 pour un séparateur auto-déroulant (ouvert par défaut pour une nouvelle session, puis le statut est conservé pour la session de l'utilisateur)
Définissez ceci sur 2 pour un séparateur auto-déroulant (réduit par défaut pour une nouvelle session, puis l'état est conservé pour chaque session d'utilisateur).
LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF
LocalTaxDesc=Certains pays appliquent 2 voire 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:
1 : taxe locale sur les produits et services hors tva (la taxe locale est calculée sur le montant hors taxe)
2 : taxe locale sur les produits et services avant tva (la taxe locale est calculée sur le montant + tva)
3 : taxe locale uniquement sur les produits hors tva (la taxe locale est calculée sur le montant hors taxe)
4 : taxe locale uniquement sur les produits avant tva (la taxe locale est calculée sur le montant + tva)
5 : taxe locale uniquement sur les services hors tva (la taxe locale est calculée sur le montant hors taxe)
6 : taxe locale uniquement sur les service avant tva (la taxe locale est calculée sur le montant + tva)
SMS=SMS
@@ -1695,7 +1696,7 @@ SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseu
IfSetToYesDontForgetPermission=Si positionné sur Oui, n'oubliez pas de donner les permissions aux groupes ou utilisateurs qui auront le droit de cette action.
##### GeoIPMaxmind #####
GeoIPMaxmindSetup=Configuration du module GeoIP Maxmind
-PathToGeoIPMaxmindCountryDataFile=Chemin du fichier Maxmind contenant les conversions IP->Pays.
Exemples
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
+PathToGeoIPMaxmindCountryDataFile=Chemin du fichier Maxmind contenant les conversions IP->Pays.
Exemples
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb
NoteOnPathLocation=Notez que ce fichier doit être dans un répertoire accessible à votre PHP (Vérifiez le paramètre open_basedir de votre PHP et les permissions du fichier/répertoires).
YouCanDownloadFreeDatFileTo=Vous pouvez télécharger une version démo gratuite de la base Maxmind à l'adresse %s.
YouCanDownloadAdvancedDatFileTo=Vous pouvez aussi télécharger une version plus complète avec mise à jours de la base Maxmind à l'adresse %s.
@@ -1926,14 +1927,13 @@ SmallerThan=Plus petit que
LargerThan=Plus grand que
IfTrackingIDFoundEventWillBeLinked=Notez que si un ID de suivi est trouvé dans le courrier électronique entrant, l'événement sera automatiquement lié aux bons objets.
WithGMailYouCanCreateADedicatedPassword=Avec un compte GMail, si vous avez activé la validation en 2 étapes, il est recommandé de créer un deuxième mot de passe dédié à l'application, au lieu d'utiliser votre propre mot de passe de compte, à partir de https://myaccount.google.com/.
-IFTTTSetup=Configuration du module IFTTT
-IFTTT_SERVICE_KEY=Clé de service IFTTT
-IFTTT_DOLIBARR_ENDPOINT_SECUREKEY=Clé de sécurité pour sécuriser l'URL du point de terminaison utilisé par IFTTT pour envoyer des messages à votre Dolibarr.
-IFTTTDesc=Ce module est conçu pour déclencher des événements sur IFTTT et/ou pour exécuter une action sur des déclencheurs IFTTT externes.
-UrlForIFTTT=URL endpoint pour IFTTT
-YouWillFindItOnYourIFTTTAccount=Vous le trouverez sur votre compte IFTTT
EndPointFor=Endpoint pour %s: %s
DeleteEmailCollector=Supprimer le collecteur d'email
ConfirmDeleteEmailCollector=Êtes-vous sûr de vouloir supprimer ce collecteur d'email ?
RecipientEmailsWillBeReplacedWithThisValue=Les emails des destinataires seront toujours remplacés par cette valeur
AtLeastOneDefaultBankAccountMandatory=Au moins 1 compte bancaire par défaut doit être défini
+RESTRICT_API_ON_IP=Autoriser les API disponibles sur certaines adresses IP uniquement (les caractères génériques ne sont pas autorisés, utilisez un espace entre les valeurs). Vide signifie que tous les hôtes peuvent utiliser les API disponibles.
+RESTRICT_ON_IP=Autoriser l'accès à certaines adresses IP d'hôte uniquement (les caractères génériques ne sont pas autorisés, utilisez un espace entre les valeurs). Vide signifie que tous les hôtes peuvent accéder.
+BaseOnSabeDavVersion=Basé sur la version de bibliothèque SabreDAV
+NotAPublicIp=Pas une IP publique
+MakeAnonymousPing=Effectuez un ping «+1» anonyme sur le serveur de la fondation Dolibarr (une seule fois après l’installation) pour permettre à la fondation de compter le nombre d’installations de Dolibarr.
diff --git a/htdocs/langs/fr_FR/banks.lang b/htdocs/langs/fr_FR/banks.lang
index c87bf67ad9d..a2fb4b58aa7 100644
--- a/htdocs/langs/fr_FR/banks.lang
+++ b/htdocs/langs/fr_FR/banks.lang
@@ -73,6 +73,7 @@ BankTransaction=Écriture bancaire
ListTransactions=Liste écritures
ListTransactionsByCategory=Liste écritures/catégories
TransactionsToConciliate=Écritures à rapprocher
+TransactionsToConciliateShort=A rapprocher
Conciliable=Rapprochable
Conciliate=Rapprocher
Conciliation=Rapprochement
@@ -116,6 +117,7 @@ DeleteCheckReceipt=Supprimer ce bordereau de remise ?
ConfirmDeleteCheckReceipt=Êtes-vous sûr de vouloir supprimer ce bordereau ?
BankChecks=Chèques
BankChecksToReceipt=Chèques à déposer
+BankChecksToReceiptShort=Chèques à déposer
ShowCheckReceipt=Afficher bordereau remise chèque
NumberOfCheques=Nombre de chèques
DeleteTransaction=Supprimer l'écriture
diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang
index fefc478c146..bdf515ca297 100644
--- a/htdocs/langs/fr_FR/bills.lang
+++ b/htdocs/langs/fr_FR/bills.lang
@@ -142,7 +142,7 @@ BillShortStatusStarted=Commencée
BillShortStatusNotPaid=Impayée
BillShortStatusNotRefunded=Non remboursé
BillShortStatusClosedUnpaid=Fermée
-BillShortStatusClosedPaidPartially=Payée
+BillShortStatusClosedPaidPartially=Payée (partiellement)
PaymentStatusToValidShort=A valider
ErrorVATIntraNotConfigured=Numéro de TVA intracommunautaire non encore défini
ErrorNoPaiementModeConfigured=Aucun mode de règlement défini par défaut. Allez corriger dans la configuration du module facture.
diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang
index 25465ebc4b2..1b4aeaa817b 100644
--- a/htdocs/langs/fr_FR/cashdesk.lang
+++ b/htdocs/langs/fr_FR/cashdesk.lang
@@ -38,7 +38,7 @@ CloseBill=Fermer la facture
Floors=Etages
Floor=Etage
AddTable=Ajouter une table
-Place=Marché
+Place=Emplacement
TakeposConnectorNecesary='Connecteur TakePOS' requis
OrderPrinters=Commande imprimantes
SearchProduct=Rechercher un produit
@@ -62,6 +62,7 @@ TicketVatGrouped=Grouper la TVA par taux sur les tickets
AutoPrintTickets=Imprimer automatiquement les tickets
EnableBarOrRestaurantFeatures=Activer les fonctionnalités pour bar ou restaurant
ConfirmDeletionOfThisPOSSale=Confirmez-vous la suppression de cette vente en cours?
+ConfirmDiscardOfThisPOSSale=Voulez-vous vous écarter cette vente en cours?
History=Historique
ValidateAndClose=Valider et fermer
Terminal=Terminal
@@ -69,3 +70,8 @@ NumberOfTerminals=Nombre de terminaux
TerminalSelect=Sélectionnez le terminal que vous souhaitez utiliser:
POSTicket=Ticket POS
BasicPhoneLayout=Utiliser une interface basique pour les smartphones
+SetupOfTerminalNotComplete=La configuration du terminal %s n'est pas terminée
+DirectPayment=Paiement direct
+DirectPaymentButton=Bouton de paiement direct en espèces
+InvoiceIsAlreadyValidated=La facture est déjà validée
+NoLinesToBill=Aucune ligne à facturer
diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang
index 8f39b8ce7a9..48a489c7c80 100644
--- a/htdocs/langs/fr_FR/companies.lang
+++ b/htdocs/langs/fr_FR/companies.lang
@@ -54,6 +54,7 @@ Firstname=Prénom
PostOrFunction=Poste/fonction
UserTitle=Titre civilité
NatureOfThirdParty=Nature de tiers
+NatureOfContact=Nature du contact
Address=Adresse
State=Département / Canton
StateShort=Département
diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang
index 0381183468c..d557f85e726 100644
--- a/htdocs/langs/fr_FR/compta.lang
+++ b/htdocs/langs/fr_FR/compta.lang
@@ -206,7 +206,7 @@ DescSellsJournal=Journal des ventes
DescPurchasesJournal=Journal des achats
CodeNotDef=Non défini
WarningDepositsNotIncluded=Les factures d'acomptes ne sont pas encore prises en compte dans cette version avec ce module de comptabilité.
-DatePaymentTermCantBeLowerThanObjectDate=La date limite de règlement ne peut être inférieure à la date de l'object
+DatePaymentTermCantBeLowerThanObjectDate=La date limite de règlement ne peut être inférieure à la date de l'objet
Pcg_version=Modèle de plan de compte
Pcg_type=Classe de compte
Pcg_subtype=Sous classe de compte
diff --git a/htdocs/langs/fr_FR/contracts.lang b/htdocs/langs/fr_FR/contracts.lang
index 491ab0e384e..2372c9bec3f 100644
--- a/htdocs/langs/fr_FR/contracts.lang
+++ b/htdocs/langs/fr_FR/contracts.lang
@@ -51,6 +51,7 @@ ListOfClosedServices=Liste des services fermés
ListOfRunningServices=Liste des services actifs
NotActivatedServices=Services non activés (parmi les contrats validés)
BoardNotActivatedServices=Services à activer en contrat validé
+BoardNotActivatedServicesShort=Services à activer
LastContracts=Les %s derniers contrats
LastModifiedServices=Les %s derniers produits/services modifiés
ContractStartDate=Date début
@@ -65,7 +66,9 @@ DateEndReal=Date effective fin de service
DateEndRealShort=Date effective fin
CloseService=Fermer service
BoardRunningServices=Services actifs
+BoardRunningServicesShort=Services actifs
BoardExpiredServices=Services expirés
+BoardExpiredServicesShort=Services expirés
ServiceStatus=Statut du service
DraftContracts=Contrats brouillons
CloseRefusedBecauseOneServiceActive=Le contrat ne peut pas être fermé car il y a au moins un service ouvert dessus
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index b1180581b42..0060e85f2e4 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -218,6 +218,7 @@ ErrorVariableKeyForContentMustBeSet=Erreur, la constante nommée %s (avec le con
ErrorURLMustStartWithHttp=L'URL %s doit commencer par http:// ou https://
ErrorNewRefIsAlreadyUsed=Erreur, la nouvelle référence est déjà utilisée
ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Erreur, supprimer le paiement lié à une facture clôturée n'est pas possible.
+ErrorSearchCriteriaTooSmall=Critère de recherche trop petit.
# Warnings
WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente.
WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur.
diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang
index 5c3a3c51d4f..ec5d8a471df 100644
--- a/htdocs/langs/fr_FR/main.lang
+++ b/htdocs/langs/fr_FR/main.lang
@@ -28,6 +28,7 @@ NoTemplateDefined=Pas de modèle défini pour ce type d'email
AvailableVariables=Variables de substitution disponibles
NoTranslation=Pas de traduction
Translation=Traduction
+EmptySearchString=Entrez une chaîne de recherche non vide
NoRecordFound=Aucun enregistrement trouvé
NoRecordDeleted=Aucun enregistrement supprimé
NotEnoughDataYet=Pas assez de données
@@ -706,6 +707,7 @@ DateOfSignature=Date de signature
HidePassword=Afficher commande avec mot de passe masqué
UnHidePassword=Afficher commande réelle avec mot de passe en clair
Root=Racine
+RootOfMedias=Racine des médias publics (/medias)
Informations=Information
Page=Page
Notes=Notes
@@ -983,3 +985,10 @@ PaymentInformation=Information de paiement
ValidFrom=Valide à partir de
ValidUntil=Valide jusqu'au
NoRecordedUsers=Aucun utilisateur
+ToClose=A fermer
+ToProcess=À traiter
+ToApprove=A approuver
+GlobalOpenedElemView=Vue globale
+NoArticlesFoundForTheKeyword=Aucun article trouvé pour le mot clé '%s'
+NoArticlesFoundForTheCategory=Aucun article trouvé pour la catégorie
+ToAcceptRefuse=Accepter | Refuser
diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang
index dfc874bab79..d70bb3139f0 100644
--- a/htdocs/langs/fr_FR/members.lang
+++ b/htdocs/langs/fr_FR/members.lang
@@ -29,6 +29,7 @@ MenuMembersUpToDate=Adhérents à jour
MenuMembersNotUpToDate=Adhérents non à jour
MenuMembersResiliated=Adhérents résiliés
MembersWithSubscriptionToReceive=Adhérents avec cotisation à recevoir
+MembersWithSubscriptionToReceiveShort=Cotisations à recevoir
DateSubscription=Date adhésion
DateEndSubscription=Date fin adhésion
EndSubscription=Fin adhésion
diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang
index 6ad580cfcd9..a1dc8e412a6 100644
--- a/htdocs/langs/fr_FR/products.lang
+++ b/htdocs/langs/fr_FR/products.lang
@@ -29,12 +29,12 @@ ProductOrService=Produit ou Service
ProductsAndServices=Produits et Services
ProductsOrServices=Produits ou Services
ProductsPipeServices=Produits | Services
-ProductsOnSaleOnly=Uniquement produits en vente
+ProductsOnSaleOnly=Produits en vente uniquement
ProductsOnPurchaseOnly=Produits seulement en achat
ProductsNotOnSell=Produits hors vente et hors achat
ProductsOnSellAndOnBuy=Produits en vente et en achat
-ServicesOnSaleOnly=Uniquement services en vente
-ServicesOnPurchaseOnly=Uniquement services à acheter
+ServicesOnSaleOnly=Services en vente uniquement
+ServicesOnPurchaseOnly=Services en achat uniquement
ServicesNotOnSell=Services hors vente et hors achat
ServicesOnSellAndOnBuy=Services en vente et en achat
LastModifiedProductsAndServices=Les %s derniers produits/services modifiés
diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang
index 5c50b1e2c40..00c66c59002 100644
--- a/htdocs/langs/fr_FR/projects.lang
+++ b/htdocs/langs/fr_FR/projects.lang
@@ -76,7 +76,13 @@ MyProjects=Mes projets
MyProjectsArea=Espace Mes projets
DurationEffective=Durée effective
ProgressDeclared=Progression déclarée
+TaskProgressSummary=Progression de tâche
+CurentlyOpenedTasks=Tâches actuellement ouvertes
+TheReportedProgressIsLessThanTheCalculatedProgressionByX=La progression déclarée est inférieure à %s à la progression calculée.
+TheReportedProgressIsMoreThanTheCalculatedProgressionByX=La progression déclarée est plus %s que la progression calculée
ProgressCalculated=Progression calculée
+WhichIamLinkedTo=dont je suis contact
+WhichIamLinkedToProject=dont je suis contact de projet
Time=Temps
ListOfTasks=Liste de tâches
GoToListOfTimeConsumed=Aller à la liste des temps consommés
diff --git a/htdocs/langs/fr_FR/website.lang b/htdocs/langs/fr_FR/website.lang
index 0bf16fbb663..0858738f1fb 100644
--- a/htdocs/langs/fr_FR/website.lang
+++ b/htdocs/langs/fr_FR/website.lang
@@ -2,7 +2,7 @@
Shortname=Code
WebsiteSetupDesc=Créez ici les sites Web que vous souhaitez utiliser. Ensuite, allez dans le menu Sites Web pour les éditer.
DeleteWebsite=Effacer site web
-ConfirmDeleteWebsite=Êtes-vous sûr de vouloir supprimer ce site web. Toutes les pages et le contenu seront également supprimés.
+ConfirmDeleteWebsite=Êtes-vous sûr de vouloir supprimer ce site web. Toutes les pages et le contenu seront également supprimés. Les fichiers téléversés (comme ceux dans le répertoire medias, dans le module GED, ...) seront conservés.
WEBSITE_TYPE_CONTAINER=Type de page / container
WEBSITE_PAGE_EXAMPLE=Page Web à utiliser comme exemple
WEBSITE_PAGENAME=Nom/alias de la page
@@ -14,6 +14,9 @@ WEBSITE_JS_INLINE=Contenu du fichier Javascript (commun à toutes les pages)
WEBSITE_HTML_HEADER=Ajout en bas de l'en-tête HTML (commun à toutes les pages)
WEBSITE_ROBOT=Fichier robot (robots.txt)
WEBSITE_HTACCESS=Fichier .htaccess du site web
+WEBSITE_MANIFEST_JSON=Fichier manifest.json de site Web
+WEBSITE_README=Fichier README.md
+EnterHereLicenseInformation=Entrez ici les métadonnées ou les informations de licence pour créer un fichier README.md. Si vous distribuez votre site Web en tant que modèle, le fichier sera inclus dans le package.
HtmlHeaderPage=En-tête HTML (spécifique pour la page uniquement)
PageNameAliasHelp=Nom ou alias de la page.
Cet alias est également utilisé pour forger une URL SEO lorsque le site Web est exécuté à partir d'un hôte virtuel d'un serveur Web (comme Apache, Nginx, ...). Utilisez le bouton "%s" pour modifier cet alias.
EditTheWebSiteForACommonHeader=Remarque: Si vous souhaitez définir un en-tête personnalisé pour toutes les pages, modifiez l'en-tête au niveau du site plutôt qu'au niveau page/container.
@@ -41,6 +44,7 @@ RealURL=URL réelle
ViewWebsiteInProduction=Pré-visualiser le site web en utilisant l'URL de la page d'accueil
SetHereVirtualHost= Utilisation avec Apache/NGinx/...
Si vous pouvez créer sur votre serveur Web (Apache, Nginx, ...) un hôte virtuel dédié avec PHP activé et un répertoire racine sur
%s
alors entrez le nom de l'hôte virtuel que vous avez créé dans les propriétés du site, ainsi l'aperçu pourra être fait en utilisant cette URL pour un accès via le serveur Web dédié plutôt que via le serveur interne Dolibarr.
YouCanAlsoTestWithPHPS= Utilisation avec un serveur PHP incorporé
Sous environnement de développement, vous pouvez préférer tester le site avec le serveur Web PHP intégré (PHP 5.5 requis) en exécutant
php -S 0.0.0.0:8080 -t %s
+YouCanAlsoDeployToAnotherWHP=Exécutez votre site Web avec un autre fournisseur d'hébergement Dolibarr
Si vous ne disposez pas d'un serveur Web tel qu'Apache ou NGinx sur Internet, vous pouvez exporter et importer votre site Web vers une autre instance de Dolibarr fournie par un autre fournisseur d'hébergement Dolibarr offrant une intégration complète avec le module de site Web. Vous pouvez trouver une liste de certains hébergeurs Dolibarr sur https://saas.dolibarr.org
CheckVirtualHostPerms=Vérifiez également que le virtual host a la permission %s sur les fichiers dans %s
ReadPerm=Lire
WritePerm=Écrire
@@ -75,7 +79,8 @@ AddWebsiteAccount=Créer un compte de site web
BackToListOfThirdParty=Retour à la liste pour le Tiers
DisableSiteFirst=Désactiver le site Web d'abord
MyContainerTitle=Titre de mon site web
-AnotherContainer=Un autre container
+AnotherContainer=Voici comment inclure le contenu d'une autre page/conteneur (vous pouvez avoir une erreur ici si vous activez le code dynamique car le sous-conteneur incorporé peut ne pas exister)
+SorryWebsiteIsCurrentlyOffLine=Désolé, ce site est actuellement hors ligne. Merci de revenir plus tard ...
WEBSITE_USE_WEBSITE_ACCOUNTS=Activer la table des comptes du site Web
WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Activer la table pour stocker les comptes de site Web (login / pass) pour chaque site web / tiers
YouMustDefineTheHomePage=Vous devez d'abord définir la page d'accueil par défaut
@@ -89,7 +94,8 @@ AliasPageAlreadyExists=L'alias de page %s existe déjà
CorporateHomePage=Page d'accueil Entreprise
EmptyPage=Page vide
ExternalURLMustStartWithHttp=l'URL externe doit commencer par http:// ou https://
-ZipOfWebsitePackageToImport=Fichier zip du package site Web
+ZipOfWebsitePackageToImport=Téléverser le fichier Zip du package de modèles de site Web
+ZipOfWebsitePackageToLoad=ou Choisissez un modèle de site Web fourni disponible
ShowSubcontainers=Inclure contenu dynamique
InternalURLOfPage=URL interne de la page
ThisPageIsTranslationOf=Cette page/container est la traduction de
@@ -101,5 +107,10 @@ NotAllowedToAddDynamicContent=Vous n'êtes pas autorisé à ajouter ou modifier
ReplaceWebsiteContent=Rechercher ou remplacer un contenu du site
DeleteAlsoJs=Supprimer également tous les fichiers javascript spécifiques à ce site?
DeleteAlsoMedias=Supprimer également tous les fichiers médias spécifiques à ce site?
-# Export
MyWebsitePages=Mes pages de site web
+SearchReplaceInto=Rechercher | Remplacer dans
+ReplaceString=Nouvelle chaîne
+CSSContentTooltipHelp=Entrez ici le contenu CSS. Pour éviter tout conflit avec le CSS de l'application, veillez à ajouter toutes les déclarations avec la classe .bodywebsite. Par exemple:
#mycssselector, input.myclass: survol {...}
doit être
.bodywebsite #mycssselector, .bodywebsite input.myclass: hover {...}
Remarque: Si vous avez un fichier volumineux sans ce préfixe, vous pouvez utiliser 'lessc' pour le convertir afin d'ajouter le préfixe .bodywebsite partout.
+LinkAndScriptsHereAreNotLoadedInEditor=Avertissement: Ce contenu est affiché uniquement lorsque le site est accessible depuis un serveur. Il n'est pas utilisé en mode édition. Par conséquent, si vous devez charger des fichiers javascript également en mode édition, ajoutez simplement la balise 'script src=...' dans la page.
+Dynamiccontent=Exemple de page à contenu dynamique
+ImportSite=Importer modèle de site web
diff --git a/htdocs/projet/ganttview.php b/htdocs/projet/ganttview.php
index ba1e2f2994e..86e8d2dbde8 100644
--- a/htdocs/projet/ganttview.php
+++ b/htdocs/projet/ganttview.php
@@ -132,7 +132,7 @@ if (($id > 0 && is_numeric($id)) || ! empty($ref))
print '
| '.$langs->trans("Visibility").' | ';
@@ -166,7 +166,7 @@ if (($id > 0 && is_numeric($id)) || ! empty($ref))
print ' ';
print '';
- print '
|