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 '
'; print '
'; - print ''; + print '
'; // Visibility print '
'.$langs->trans("Visibility").''; @@ -166,7 +166,7 @@ if (($id > 0 && is_numeric($id)) || ! empty($ref)) print '
'; print '
'; - print ''; + print '
'; // Description print '
'.$langs->trans("Description").''; diff --git a/htdocs/theme/eldy/global.inc.php b/htdocs/theme/eldy/global.inc.php index 5de768af2fd..7a5b187a41c 100644 --- a/htdocs/theme/eldy/global.inc.php +++ b/htdocs/theme/eldy/global.inc.php @@ -3463,6 +3463,9 @@ div.dolgraph div.legend, div.dolgraph div.legend div { background-color: rgba(25 div.dolgraph div.legend table tbody tr { height: auto; } td.legendColorBox { padding: 2px 2px 2px 0 !important; } td.legendLabel { padding: 2px 2px 2px 0 !important; } +td.legendLabel { + text-align: ; +} label.radioprivate { white-space: nowrap; diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 5a715bbd45c..45e08219d1a 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3494,6 +3494,9 @@ div.dolgraph div.legend, div.dolgraph div.legend div { background-color: rgba(25 div.dolgraph div.legend table tbody tr { height: auto; } td.legendColorBox { padding: 2px 2px 2px 0 !important; } td.legendLabel { padding: 2px 2px 2px 0 !important; } +td.legendLabel { + text-align: ; +} label.radioprivate { white-space: nowrap;