From 1ee85e5483c70209960d7d03fcd53fe64466db0f Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Sat, 28 Sep 2024 12:11:29 +0200 Subject: [PATCH 01/75] Improve new hook afterPDFTotalTable to have posy parameter (#31168) * Improve new hook afterPDFTotalTable to have posy parameter * Also for other model --- htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php | 2 +- htdocs/core/modules/facture/doc/pdf_octopus.modules.php | 2 +- htdocs/core/modules/facture/doc/pdf_sponge.modules.php | 2 +- htdocs/core/modules/propale/doc/pdf_cyan.modules.php | 2 +- .../core/modules/supplier_invoice/doc/pdf_canelle.modules.php | 2 +- htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php index e676722961a..de6d3b05f39 100644 --- a/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_eratosthene.modules.php @@ -1355,7 +1355,7 @@ class pdf_eratosthene extends ModelePDFCommandes $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/facture/doc/pdf_octopus.modules.php b/htdocs/core/modules/facture/doc/pdf_octopus.modules.php index ff76527981e..c958a8549c9 100644 --- a/htdocs/core/modules/facture/doc/pdf_octopus.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_octopus.modules.php @@ -1908,7 +1908,7 @@ class pdf_octopus extends ModelePDFFactures $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index c89ea0ef4d9..6466aaa298e 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -1999,7 +1999,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php index a0cf113f85e..6b75bc4663a 100644 --- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php @@ -1432,7 +1432,7 @@ class pdf_cyan extends ModelePDFPropales $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php index 526490336d9..6eaafca28db 100644 --- a/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php +++ b/htdocs/core/modules/supplier_invoice/doc/pdf_canelle.modules.php @@ -817,7 +817,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { diff --git a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php index 570c8c11f54..a32a6325def 100644 --- a/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php +++ b/htdocs/core/modules/supplier_order/doc/pdf_cornas.modules.php @@ -1106,7 +1106,7 @@ class pdf_cornas extends ModelePDFSuppliersOrders $pdf->SetTextColor(0, 0, 0); } - $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index); + $parameters = array('pdf' => &$pdf, 'object' => &$object, 'outputlangs' => $outputlangs, 'index' => &$index, 'posy' => $posy); $reshook = $hookmanager->executeHooks('afterPDFTotalTable', $parameters, $this); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { From dfd18ef9f74cda6d5079d2a2b573c1a480bdb279 Mon Sep 17 00:00:00 2001 From: atm-adrien <67913809+atm-adrien@users.noreply.github.com> Date: Sat, 28 Sep 2024 12:22:30 +0200 Subject: [PATCH 02/75] FIX : Wrong price for BOM with warkstation (#31142) * FIX : Wrong price for BOM with warkstation * FIX : PR returns --- htdocs/bom/tpl/objectline_view.tpl.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/htdocs/bom/tpl/objectline_view.tpl.php b/htdocs/bom/tpl/objectline_view.tpl.php index b03d488e1b0..1bf02f13cad 100644 --- a/htdocs/bom/tpl/objectline_view.tpl.php +++ b/htdocs/bom/tpl/objectline_view.tpl.php @@ -184,6 +184,12 @@ if ($filtertype != 1) { print ''; $coldisplay++; if ($res > 0) { + $unit = new CUnits($object->db); + $fk_defaultUnit = $unit->getUnitFromCode('h', 'short_label', 'time'); + $nbPlannedHour = $unit->unitConverter($line->qty, $line->fk_unit, $fk_defaultUnit); + $line->total_cost = 0; + if ($workstation->thm_machine_estimated) $line->total_cost += $nbPlannedHour * $workstation->thm_machine_estimated; + if ($workstation->thm_operator_estimated) $line->total_cost += $nbPlannedHour * $workstation->thm_operator_estimated; echo $workstation->getNomUrl(1); } print ''; @@ -192,6 +198,7 @@ if ($filtertype != 1) { // Cost $total_cost = 0; + $tmpbom->calculateCosts(); print ''; $coldisplay++; From a69022a3bb711321fb990c38c420e48a71bf64c6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 29 Sep 2024 05:32:27 +0200 Subject: [PATCH 03/75] FIX Debug calculation of the delay of purchase order --- .../class/fournisseur.commande.class.php | 15 ++++++++------- .../fourn/class/fournisseur.product.class.php | 19 ++++++++++--------- htdocs/langs/en_US/suppliers.lang | 2 +- htdocs/langs/fr_FR/suppliers.lang | 2 +- htdocs/product/price_suppliers.php | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index eef701fb00d..17d6dbeb749 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -3375,16 +3375,17 @@ class CommandeFournisseur extends CommonOrder return ''; } - $obj = new ProductFournisseur($this->db); + $tmpproductfourn = new ProductFournisseur($this->db); $nb = 0; foreach ($this->lines as $line) { if ($line->fk_product > 0) { - $idp = $obj->find_min_price_product_fournisseur($line->fk_product, $line->qty); - if ($idp) { - $obj->fetch($idp); - if ($obj->delivery_time_days > $nb) { - $nb = $obj->delivery_time_days; + // Load delivery_time_days, return id into product_fournisseur_price + $idp = $tmpproductfourn->find_min_price_product_fournisseur($line->fk_product, $line->qty, $this->thirdparty->id); + if ($idp > 0) { + //$tmpproductfourn->fetch_product_fournisseur_price($idp); + if ($tmpproductfourn->delivery_time_days > $nb) { + $nb = $tmpproductfourn->delivery_time_days; } } } @@ -3393,7 +3394,7 @@ class CommandeFournisseur extends CommonOrder if ($nb === 0) { return ''; } else { - return $nb.' '.$langs->trans('Days'); + return $nb.' '.$langs->trans('days'); } } diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index a08f43fd365..089bfbefdb5 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -671,7 +671,7 @@ class ProductFournisseur extends Product /** * Loads the price information of a provider * - * @param int $rowid Line id + * @param int $rowid Line id in product_fournisseur_price * @param int $ignore_expression Ignores the math expression for calculating price and uses the db value instead * @return int Return integer < 0 if KO, 0 if OK but not found, > 0 if OK */ @@ -883,15 +883,13 @@ class ProductFournisseur extends Product * * @param int $prodid Product id * @param float $qty Minimum quantity - * @param int $socid get min price for specific supplier + * @param int $socid Load min price for this specific supplier * @return int Return integer <0 if KO, 0=Not found of no product id provided, >0 if OK * @see list_product_fournisseur_price() */ public function find_min_price_product_fournisseur($prodid, $qty = 0, $socid = 0) { // phpcs:enable - global $conf; - if (empty($prodid)) { dol_syslog("Warning function find_min_price_product_fournisseur were called with prodid empty. May be a bug.", LOG_WARNING); return 0; @@ -919,8 +917,8 @@ class ProductFournisseur extends Product $sql = "SELECT s.nom as supplier_name, s.rowid as fourn_id,"; $sql .= " pfp.rowid as product_fourn_price_id, pfp.ref_fourn,"; $sql .= " pfp.price, pfp.quantity, pfp.unitprice, pfp.tva_tx, pfp.charges,"; - $sql .= " pfp.remise, pfp.remise_percent, pfp.fk_supplier_price_expression, pfp.delivery_time_days"; - $sql .= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code"; + $sql .= " pfp.remise, pfp.remise_percent, pfp.fk_supplier_price_expression, pfp.delivery_time_days,"; + $sql .= " pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql .= " WHERE s.entity IN (".getEntity('societe').")"; $sql .= " AND pfp.entity IN (".getEntity('productsupplierprice').")"; @@ -977,7 +975,9 @@ class ProductFournisseur extends Product $fourn_unitprice_with_discount = $fourn_unitprice * (1 - $record["remise_percent"] / 100); } } + if ($fourn_unitprice < $min || $min == -1) { + $this->id = $prodid; $this->product_fourn_price_id = $record["product_fourn_price_id"]; $this->ref_supplier = $record["ref_fourn"]; $this->ref_fourn = $record["ref_fourn"]; // deprecated @@ -990,23 +990,24 @@ class ProductFournisseur extends Product $this->fourn_unitprice_with_discount = $fourn_unitprice_with_discount; $this->fourn_charges = $record["charges"]; // when getDolGlobalString('PRODUCT_CHARGES') is set $this->fourn_tva_tx = $record["tva_tx"]; - $this->fourn_id = $record["fourn_id"]; + $this->fourn_id = $record["fourn_id"]; // thirdparty id $this->fourn_name = $record["supplier_name"]; $this->delivery_time_days = $record["delivery_time_days"]; $this->fk_supplier_price_expression = $record["fk_supplier_price_expression"]; - $this->id = $prodid; $this->fourn_multicurrency_price = $record["multicurrency_price"]; $this->fourn_multicurrency_unitprice = $record["multicurrency_unitprice"]; $this->fourn_multicurrency_tx = $record["multicurrency_tx"]; $this->fourn_multicurrency_id = $record["fk_multicurrency"]; $this->fourn_multicurrency_code = $record["multicurrency_code"]; + $min = $fourn_unitprice; } } } $this->db->free($resql); - return 1; + + return $this->product_fourn_price_id; } else { $this->error = $this->db->error(); return -1; diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 156730ab5aa..96e98f98df8 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -36,7 +36,7 @@ ListOfSupplierProductForSupplier=List of products and prices for vendor %s%s SentToSuppliers=Envoyés aux fournisseurs ListOfSupplierOrders=Liste des commandes fournisseurs MenuOrdersSupplierToBill=Commandes fournisseurs en facture -NbDaysToDelivery=Délai de livraison en jours +NbDaysToDelivery=Délai de livraison DescNbDaysToDelivery=Le plus gros délai de livraison parmi les produits de cette commande SupplierReputation=Réputation du fournisseur ReferenceReputation=Réputation diff --git a/htdocs/product/price_suppliers.php b/htdocs/product/price_suppliers.php index 22c300ce5b9..2f0c7deba4d 100644 --- a/htdocs/product/price_suppliers.php +++ b/htdocs/product/price_suppliers.php @@ -792,7 +792,7 @@ if ($id > 0 || $ref) { // Delivery delay in days print ''; print ''.$langs->trans('NbDaysToDelivery').''; - print ' '.$langs->trans('days').''; + print ' '.$langs->trans('days').''; print ''; // Reputation From 231fc6ce707925f9ea5c9156b65287b98b44131d Mon Sep 17 00:00:00 2001 From: Florian Mortgat <50440633+atm-florianm@users.noreply.github.com> Date: Sun, 29 Sep 2024 15:27:24 +0200 Subject: [PATCH 04/75] FIX: if you call fetchLines several times, your $object->lines contains duplicates (#31167) --- htdocs/core/class/commonobject.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 547a6029e40..4182c05dde7 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -9297,6 +9297,7 @@ abstract class CommonObject if ($resql) { $num_rows = $this->db->num_rows($resql); $i = 0; + $this->lines = array(); while ($i < $num_rows) { $obj = $this->db->fetch_object($resql); if ($obj) { From 74b67eb6c6c1274d6e0a8385b3b3a3a375da4875 Mon Sep 17 00:00:00 2001 From: Florian Mortgat <50440633+atm-florianm@users.noreply.github.com> Date: Sun, 29 Sep 2024 15:57:05 +0200 Subject: [PATCH 05/75] FIX - use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) --- htdocs/core/lib/product.lib.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index f54f39b20f3..003ab66ad2f 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -363,7 +363,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_propale['nb']; print ''; - print $product->stats_propale['qty']; + print price($product->stats_propale['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -381,7 +381,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_proposal_supplier['nb']; print ''; - print $product->stats_proposal_supplier['qty']; + print price($product->stats_proposal_supplier['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -399,7 +399,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_commande['nb']; print ''; - print $product->stats_commande['qty']; + print price($product->stats_commande['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -417,7 +417,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_commande_fournisseur['nb']; print ''; - print $product->stats_commande_fournisseur['qty']; + print price($product->stats_commande_fournisseur['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -435,7 +435,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_facture['nb']; print ''; - print $product->stats_facture['qty']; + print price($product->stats_facture['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -453,7 +453,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_facture_fournisseur['nb']; print ''; - print $product->stats_facture_fournisseur['qty']; + print price($product->stats_facture_fournisseur['qty'], 1, $langs, 0, 0); print ''; print ''; } @@ -472,7 +472,7 @@ function show_stats_for_company($product, $socid) print ''; print $product->stats_contrat['nb']; print ''; - print $product->stats_contrat['qty']; + print price($product->stats_contrat['qty'], 1, $langs, 0, 0); print ''; print ''; } From 385927fe069eace69544fef6fa0d8cb3b2395123 Mon Sep 17 00:00:00 2001 From: Florian Mortgat <50440633+atm-florianm@users.noreply.github.com> Date: Sun, 29 Sep 2024 22:18:18 +0200 Subject: [PATCH 06/75] FIX: box_actions.php still uses fk_user_done which no longer exists (#31190) Co-authored-by: FlorianMortgat <5845502+FlorianMortgat@users.noreply.github.com> --- htdocs/core/boxes/box_actions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/boxes/box_actions.php b/htdocs/core/boxes/box_actions.php index 64a2314560c..1d2f03b11b5 100644 --- a/htdocs/core/boxes/box_actions.php +++ b/htdocs/core/boxes/box_actions.php @@ -106,7 +106,7 @@ class box_actions extends ModeleBoxes $sql .= " AND s.rowid = ".((int) $user->socid); } if (!$user->rights->agenda->allactions->read) { - $sql .= " AND (a.fk_user_author = ".((int) $user->id)." OR a.fk_user_action = ".((int) $user->id)." OR a.fk_user_done = ".((int) $user->id).")"; + $sql .= " AND (a.fk_user_author = ".((int) $user->id)." OR a.fk_user_action = ".((int) $user->id).")"; } $sql .= " ORDER BY a.datec DESC"; $sql .= $this->db->plimit($max, 0); From 218bfff6fa402417b95f1260d2f9ac6f7f910529 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 11:55:32 +0200 Subject: [PATCH 07/75] Tooltip to explain why button is disabled. --- htdocs/accountancy/closure/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index 0b6739bf742..b01f3f1616d 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -381,7 +381,7 @@ if (isset($current_fiscal_period)) { if (empty($count_by_month['total']) && empty($current_fiscal_period['status'])) { $button = '' . $langs->trans("AccountancyClosureClose") . ''; } else { - $button = '' . $langs->trans("AccountancyClosureClose") . ''; + $button = '' . $langs->trans("AccountancyClosureClose") . ''; } print_barre_liste('', '', '', '', '', '', '', -1, '', '', 0, $button, '', 0, 1, 0); From d2a279cc7df34cca7555b66dac8da9afe5f580ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 13:12:42 +0200 Subject: [PATCH 08/75] FIX autoselect the fiscal period by default --- .../accountancy/class/bookkeeping.class.php | 2 +- htdocs/accountancy/closure/index.php | 38 +++++++++++++++---- htdocs/langs/en_US/accountancy.lang | 2 +- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 1e4afa2d45f..66bd62cce11 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -2533,7 +2533,7 @@ class BookKeeping extends CommonObject } /** - * Get list of fiscal period + * Get list of fiscal period ordered by start date. * * @param string $filter Filter * @return array|int Return integer <0 if KO, Fiscal periods : [[id, date_start, date_end, label], ...] diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index 43f9179c599..c59a8652375 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -60,33 +60,57 @@ if (!is_array($fiscal_periods)) { setEventMessages($object->error, $object->errors, 'errors'); } +// Define the arrays of fiscal periods $active_fiscal_periods = array(); +$first_active_fiscal_period = null; $last_fiscal_period = null; $current_fiscal_period = null; $next_fiscal_period = null; $next_active_fiscal_period = null; if (is_array($fiscal_periods)) { - foreach ($fiscal_periods as $fiscal_period) { - if (empty($fiscal_period['status'])) { + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if (empty($first_active_fiscal_period) && empty($fiscal_period['status'])) { + $first_active_fiscal_period = $fiscal_period; + } + if (empty($fiscal_period['status'])) { // if not closed $active_fiscal_periods[] = $fiscal_period; } - if (isset($current_fiscal_period)) { + if (isset($current_fiscal_period)) { // If we already reach then current fiscal period, then this one is the next one just after if (!isset($next_fiscal_period)) { $next_fiscal_period = $fiscal_period; } if (!isset($next_active_fiscal_period) && empty($fiscal_period['status'])) { $next_active_fiscal_period = $fiscal_period; } - } else { + } else { // If we did not found the current fiscal period if ($fiscal_period_id == $fiscal_period['id'] || (empty($fiscal_period_id) && $fiscal_period['date_start'] <= $now && $now <= $fiscal_period['date_end'])) { $current_fiscal_period = $fiscal_period; } else { - $last_fiscal_period = $fiscal_period; + $last_fiscal_period = $fiscal_period; // $last_fiscal_period is in fact $previous_fiscal_period } } } } +// If a current fiscal period open with an end and start date was not found, we autoselect the first one that is open and has a start and end date defined +if (empty($current_fiscal_period) && !empty($first_active_fiscal_period)) { + $current_fiscal_period = $first_active_fiscal_period; + $last_fiscal_period = null; + $foundcurrent = false; + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if ($foundcurrent) { + $next_fiscal_period = $fiscal_period; + break; + } + if ($fiscal_period['id'] == $current_fiscal_period['id']) { + $foundcurrent = true; + } + if (!$foundcurrent) { + $last_fiscal_period = $fiscal_period; + } + } +} + $accounting_groups_used_for_balance_sheet_account = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_BALANCE_SHEET_ACCOUNT'))), 'strlen'); $accounting_groups_used_for_income_statement = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT'))), 'strlen'); @@ -315,9 +339,7 @@ print load_fiche_titre($langs->trans("Closure") . " - " . $fiscal_period_nav_tex if (empty($current_fiscal_period)) { print $langs->trans('ErrorNoFiscalPeriodActiveFound', $langs->transnoentitiesnoconv("Accounting"), $langs->transnoentitiesnoconv("Setup"), $langs->transnoentitiesnoconv("FiscalPeriod")); -} - -if (isset($current_fiscal_period)) { +} else { // Step 1 $head = array(); $head[0][0] = DOL_URL_ROOT . '/accountancy/closure/index.php?fiscal_period_id=' . $current_fiscal_period['id']; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index b799215f95d..b48493f6600 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -454,7 +454,7 @@ AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s ErrorAccountNumberAlreadyExists=The accounting number %s already exists ErrorArchiveAddFile=Can't put "%s" file in archive -ErrorNoFiscalPeriodActiveFound=No active fiscal period found. You can create one from menu %s - %s - %s. +ErrorNoFiscalPeriodActiveFound=No active fiscal period (with a start and end date defined) found. You can create one from menu %s - %s - %s. ErrorBookkeepingDocDateNotOnActiveFiscalPeriod=The bookkeeping doc date is not inside the active fiscal period ErrorBookkeepingDocDateIsOnAClosedFiscalPeriod=The bookkeeping doc date is inside a closed fiscal period ## Import From 7b61965042faf573d267aa0b14678cdbb324ac0f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 13:12:42 +0200 Subject: [PATCH 09/75] FIX autoselect the fiscal period by default --- .../accountancy/class/bookkeeping.class.php | 2 +- htdocs/accountancy/closure/index.php | 38 +++++++++++++++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/htdocs/accountancy/class/bookkeeping.class.php b/htdocs/accountancy/class/bookkeeping.class.php index 97387198fcd..be140363e3c 100644 --- a/htdocs/accountancy/class/bookkeeping.class.php +++ b/htdocs/accountancy/class/bookkeeping.class.php @@ -2462,7 +2462,7 @@ class BookKeeping extends CommonObject } /** - * Get list of fiscal period + * Get list of fiscal period ordered by start date. * * @param string $filter Filter * @return array|int Return integer <0 if KO, Fiscal periods : [[id, date_start, date_end, label], ...] diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index b01f3f1616d..b140dff0704 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -60,33 +60,57 @@ if (!is_array($fiscal_periods)) { setEventMessages($object->error, $object->errors, 'errors'); } +// Define the arrays of fiscal periods $active_fiscal_periods = array(); +$first_active_fiscal_period = null; $last_fiscal_period = null; $current_fiscal_period = null; $next_fiscal_period = null; $next_active_fiscal_period = null; if (is_array($fiscal_periods)) { - foreach ($fiscal_periods as $fiscal_period) { - if (empty($fiscal_period['status'])) { + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if (empty($first_active_fiscal_period) && empty($fiscal_period['status'])) { + $first_active_fiscal_period = $fiscal_period; + } + if (empty($fiscal_period['status'])) { // if not closed $active_fiscal_periods[] = $fiscal_period; } - if (isset($current_fiscal_period)) { + if (isset($current_fiscal_period)) { // If we already reach then current fiscal period, then this one is the next one just after if (!isset($next_fiscal_period)) { $next_fiscal_period = $fiscal_period; } if (!isset($next_active_fiscal_period) && empty($fiscal_period['status'])) { $next_active_fiscal_period = $fiscal_period; } - } else { + } else { // If we did not found the current fiscal period if ($fiscal_period_id == $fiscal_period['id'] || (empty($fiscal_period_id) && $fiscal_period['date_start'] <= $now && $now <= $fiscal_period['date_end'])) { $current_fiscal_period = $fiscal_period; } else { - $last_fiscal_period = $fiscal_period; + $last_fiscal_period = $fiscal_period; // $last_fiscal_period is in fact $previous_fiscal_period } } } } +// If a current fiscal period open with an end and start date was not found, we autoselect the first one that is open and has a start and end date defined +if (empty($current_fiscal_period) && !empty($first_active_fiscal_period)) { + $current_fiscal_period = $first_active_fiscal_period; + $last_fiscal_period = null; + $foundcurrent = false; + foreach ($fiscal_periods as $fiscal_period) { // List of fiscal periods sorted by date start + if ($foundcurrent) { + $next_fiscal_period = $fiscal_period; + break; + } + if ($fiscal_period['id'] == $current_fiscal_period['id']) { + $foundcurrent = true; + } + if (!$foundcurrent) { + $last_fiscal_period = $fiscal_period; + } + } +} + $accounting_groups_used_for_balance_sheet_account = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_BALANCE_SHEET_ACCOUNT'))), 'strlen'); $accounting_groups_used_for_income_statement = array_filter(array_map('trim', explode(',', getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT'))), 'strlen'); @@ -315,9 +339,7 @@ print load_fiche_titre($langs->trans("Closure") . " - " . $fiscal_period_nav_tex if (empty($current_fiscal_period)) { print $langs->trans('ErrorNoFiscalPeriodActiveFound'); -} - -if (isset($current_fiscal_period)) { +} else { // Step 1 $head = array(); $head[0][0] = DOL_URL_ROOT . '/accountancy/closure/index.php?fiscal_period_id=' . $current_fiscal_period['id']; From 946726779c6d5d703b6b383de60f8b288d5d8dd4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 13:23:04 +0200 Subject: [PATCH 10/75] Fix test on setup --- htdocs/accountancy/closure/index.php | 7 +++---- htdocs/langs/en_US/errors.lang | 1 + 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index b140dff0704..9489e519218 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -151,11 +151,10 @@ if (empty($reshook)) { if ($generate_bookkeeping_records) { if (!getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_BALANCE_SHEET_ACCOUNT')) { $error++; - setEventMessages($langs->trans("ErrorSetupNotComplete"), null, 'errors'); - } - if (!getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT')) { + setEventMessages($langs->trans("ErrorAccountingClosureSetupNotComplete"), null, 'errors'); + } elseif (!getDolGlobalString('ACCOUNTING_CLOSURE_ACCOUNTING_GROUPS_USED_FOR_INCOME_STATEMENT')) { $error++; - setEventMessages($langs->trans("ErrorSetupNotComplete"), null, 'errors'); + setEventMessages($langs->trans("ErrorAccountingClosureSetupNotComplete"), null, 'errors'); } } diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 681abb1aedc..29558bfd042 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -58,6 +58,7 @@ ErrorSubjectIsRequired=The email subject is required ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). ErrorNoMailDefinedForThisUser=No mail defined for this user ErrorSetupOfEmailsNotComplete=Setup of emails is not complete +ErrorAccountingClosureSetupNotComplete=Setup of closure accounts not complete ErrorFeatureNeedJavascript=This feature needs JavaScript to be activated to work. Change this in setup - display. ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. From fde37d8172af5a28a753324503c17f3971da161b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 13:36:30 +0200 Subject: [PATCH 11/75] Fix deadlock situation by adding a constant in hope to save user --- htdocs/accountancy/admin/fiscalyear_card.php | 23 ++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/htdocs/accountancy/admin/fiscalyear_card.php b/htdocs/accountancy/admin/fiscalyear_card.php index 06dc52d3247..ebf576ca34a 100644 --- a/htdocs/accountancy/admin/fiscalyear_card.php +++ b/htdocs/accountancy/admin/fiscalyear_card.php @@ -94,7 +94,7 @@ if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } -if ($action == 'confirm_delete' && $confirm == "yes") { +if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) { $result = $object->delete($id); if ($result >= 0) { header("Location: fiscalyear.php"); @@ -102,7 +102,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") { } else { setEventMessages($object->error, $object->errors, 'errors'); } -} elseif ($action == 'add') { +} elseif ($action == 'add' && $permissiontoadd) { if (!GETPOST('cancel', 'alpha')) { $error = 0; @@ -144,7 +144,7 @@ if ($action == 'confirm_delete' && $confirm == "yes") { header("Location: ./fiscalyear.php"); exit(); } -} elseif ($action == 'update') { +} elseif ($action == 'update' && $permissiontoadd) { // Update record if (!GETPOST('cancel', 'alpha')) { $result = $object->fetch($id); @@ -166,8 +166,19 @@ if ($action == 'confirm_delete' && $confirm == "yes") { header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); exit(); } -} +} elseif ($action == 'reopen' && $permissiontoadd && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) { + $result = $object->fetch($id); + $object->status = GETPOST('status', 'int'); + $result = $object->update($user); + + if ($result > 0) { + header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit(); + } else { + setEventMessages($object->error, $object->errors, 'errors'); + } +} /* @@ -345,6 +356,10 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($user->hasRight('accounting', 'fiscalyear', 'write')) { print '
'; + if (getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD') && $object->status == $object::STATUS_CLOSED) { + print dolGetButtonAction($langs->trans("ReOpen"), '', 'reopen', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=reopen&token='.newToken(), 'reopen', $permissiontoadd); + } + print ''.$langs->trans('Modify').''; //print dolGetButtonAction($langs->trans("Delete"), '', 'delete', $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete&token='.newToken(), 'delete', $permissiontodelete); From 4b9ce8a9bcb8ee11d25dd834d2808362b238b551 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 15:38:31 +0200 Subject: [PATCH 12/75] Fix: method getImagePublicURLOfObject can't work on WebsitePage so add a method getImageFromHtmlContent to compensate. --- htdocs/core/lib/website.lib.php | 44 ++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index 6f0abb8e1ca..e1a2a3f4217 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -1023,7 +1023,7 @@ function getNbOfImagePublicURLOfObject($object) * @param int $no Numero of image (if there is several images. 1st one by default) * @param string $extName Extension to differentiate thumb file name ('', '_small', '_mini') * @return string HTML img content or '' if no image found - * @see getNbOfImagePublicURLOfObject() + * @see getNbOfImagePublicURLOfObject(), getImageFromHtmlContent() */ function getImagePublicURLOfObject($object, $no = 1, $extName = '') { @@ -1315,6 +1315,48 @@ function getPagesFromSearchCriterias($type, $algo, $searchstring, $max = 25, $so return $arrayresult; } +/** + * Return the URL of an image found into a HTML content. + * To get image from an external URL to download first, see getAllImages() + * + * @param string $htmlContent HTML content + * @param int $imageNumber The position of image. 1 by default = first image found + * @return string URL of image or '' if not foud + * @see getImagePublicURLOfObject() + */ +function getImageFromHtmlContent($htmlContent, $imageNumber = 1) +{ + $dom = new DOMDocument(); + + libxml_use_internal_errors(false); // Avoid to fill memory with xml errors + if (LIBXML_VERSION < 20900) { + // Avoid load of external entities (security problem). + // Required only if LIBXML_VERSION < 20900 + // @phan-suppress-next-line PhanDeprecatedFunctionInternal + libxml_disable_entity_loader(true); + } + + // Load HTML content into object + $dom->loadHTML($htmlContent); + + // Re-enable HTML load errors + libxml_clear_errors(); + + // Load all img tags + $images = $dom->getElementsByTagName('img'); + + // Check if nb of image is valid + if ($imageNumber > 0 && $imageNumber <= $images->length) { + // Récupère l'image correspondante (index - 1 car $imageNumber est 1-based) + $img = $images->item($imageNumber - 1); + if ($img instanceof DOMElement) { + return $img->getAttribute('src'); + } + } + + return ''; +} + /** * Download all images found into page content $tmp. * If $modifylinks is set, links to images will be replace with a link to viewimage wrapper. From 5886355a879d5fb22fb31c697edde07218132672 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 16:09:19 +0200 Subject: [PATCH 13/75] Fix image in RSS --- htdocs/core/lib/xcal.lib.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index 5101f70959a..f8db5833635 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -397,6 +397,18 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt $tmpevent['desc'] = $event->description; if (!empty($event->image)) { $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$event->image; + } else { + include_once DOL_DOCUMENT_ROOT.'/core/lib/website.lib.php'; + $tmpimage = getImageFromHtmlContent($event->content); + if ($tmpimage) { + if (strpos($tmpimage, '/') === 0) { // If $tmpimage is an absolute path + $tmpevent['image'] = $GLOBALS['website']->virtualhost.$tmpimage; + } elseif (stripos($tmpimage, 'http:') === 0) { // If $tmpimage is a full URI + $tmpevent['image'] = $tmpimage; + } else { + $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$tmpimage; + } // TODO If $tmpimage is "data:..." + } } $tmpevent['content'] = $event->content; From 4a86964e1851bd93c2cfb29afcde189e04e36158 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 16:18:46 +0200 Subject: [PATCH 14/75] Fix image in RSS --- htdocs/core/lib/xcal.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/xcal.lib.php b/htdocs/core/lib/xcal.lib.php index f8db5833635..8b4fef3ed5f 100644 --- a/htdocs/core/lib/xcal.lib.php +++ b/htdocs/core/lib/xcal.lib.php @@ -403,7 +403,7 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt if ($tmpimage) { if (strpos($tmpimage, '/') === 0) { // If $tmpimage is an absolute path $tmpevent['image'] = $GLOBALS['website']->virtualhost.$tmpimage; - } elseif (stripos($tmpimage, 'http:') === 0) { // If $tmpimage is a full URI + } elseif (stripos($tmpimage, 'http') === 0) { // If $tmpimage is a full URI $tmpevent['image'] = $tmpimage; } else { $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$tmpimage; From f101423901d2c71efbd30456076a46f1e7cacd07 Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Mon, 30 Sep 2024 16:50:54 +0200 Subject: [PATCH 15/75] FIX State dropdown is not working on User card #31198 (#31205) * FIX State dropdown is not working on User card #31198 * Fix phan --- htdocs/accountancy/admin/fiscalyear_card.php | 2 +- htdocs/core/ajax/ziptown.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/accountancy/admin/fiscalyear_card.php b/htdocs/accountancy/admin/fiscalyear_card.php index c631d97ff99..1e5b91224d9 100644 --- a/htdocs/accountancy/admin/fiscalyear_card.php +++ b/htdocs/accountancy/admin/fiscalyear_card.php @@ -169,7 +169,7 @@ if ($action == 'confirm_delete' && $confirm == "yes" && $permissiontoadd) { } elseif ($action == 'reopen' && $permissiontoadd && getDolGlobalString('ACCOUNTING_CAN_REOPEN_CLOSED_PERIOD')) { $result = $object->fetch($id); - $object->status = GETPOST('status', 'int'); + $object->status = GETPOSTINT('status'); $result = $object->update($user); if ($result > 0) { diff --git a/htdocs/core/ajax/ziptown.php b/htdocs/core/ajax/ziptown.php index 6ecfbb387f9..bd883042c1e 100644 --- a/htdocs/core/ajax/ziptown.php +++ b/htdocs/core/ajax/ziptown.php @@ -143,7 +143,7 @@ if (GETPOST('zipcode') || GETPOST('town')) { top_httphead('text/html'); $formcompany = new FormCompany($db); - print $formcompany->select_state(GETPOSTINT('selected', 1), GETPOSTINT('country_codeid', 1), GETPOSTINT('htmlname', 1), GETPOSTINT('morecss', 1)); + print $formcompany->select_state(GETPOSTINT('selected', 1), GETPOSTINT('country_codeid', 1), GETPOST('htmlname', 'alpha', 1), GETPOST('morecss', 'alpha', 1)); } $db->close(); From 25ea797aed961cd1bbc2df647a7ab532e18922e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 18:26:24 +0200 Subject: [PATCH 16/75] Fix not default template for BOM --- htdocs/bom/class/bom.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 68cd44dcf46..0ad0cddf96d 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -986,7 +986,7 @@ class BOM extends CommonObject $outputlangs->load("products"); if (!dol_strlen($modele)) { - $modele = 'standard'; + $modele = ''; if ($this->model_pdf) { $modele = $this->model_pdf; From cdbcd7df58f1ecca02f010c528d2181d4aac724b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 19:50:39 +0200 Subject: [PATCH 17/75] FIX tool to convert into utf8mb4 --- htdocs/admin/system/database-tables.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index f216377f909..cf8f5771b32 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -52,11 +52,11 @@ if ($action == 'convert') { // Convert engine into innodb $db->query($sql); } if ($action == 'convertutf8') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; $db->query($sql); } if ($action == 'convertutf8mb4') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; $db->query($sql); } if ($action == 'convertdynamic') { From f36dc403bcc2341e2e7bbeed1957c84492f5b5fb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 20:05:31 +0200 Subject: [PATCH 18/75] Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 --- htdocs/admin/system/database.php | 4 ++-- htdocs/langs/en_US/admin.lang | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index cd87cc24834..1c9bb6b2f93 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -59,13 +59,13 @@ print ''.$langs->trans("User").''.$ print ''.$langs->trans("Password").''.preg_replace('/./i', '*', $dolibarr_main_db_pass).''."\n"; print ''.$langs->trans("DBStoringCharset").''.$db->getDefaultCharacterSetDatabase(); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW CHARSET")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "SHOW VARIABLES LIKE 'character_set_database'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW CHARSET")); // We can use $db->getDefaultCharacterSetDatabase(), $db->getListOfCharacterSet(), } print ''."\n"; print ''.$langs->trans("DBSortingCharset").''.$db->getDefaultCollationDatabase(); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW COLLATION")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "SHOW VARIABLES LIKE 'collation_database'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW COLLATION")); // We can use $db->getDefaultCollationDatabase(), $db->getListOfCollation(); } print ''."\n"; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index e64e83b2d82..2a93e7d181a 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -2555,3 +2555,7 @@ AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Exam ParamName=Name of parameter ParamValue=Value of parameter HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +HelpMariaDBToGetValue=This value was retrieved with command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr From b5c6ead33bb19bb7c62f9c66674aa4b87ba899cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 20:23:27 +0200 Subject: [PATCH 19/75] FIX Tool to convert into utf8 --- htdocs/admin/system/database-tables.php | 26 +++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index cf8f5771b32..fa7a86480ba 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -52,12 +52,30 @@ if ($action == 'convert') { // Convert engine into innodb $db->query($sql); } if ($action == 'convertutf8') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; - $db->query($sql); + $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; // Set the default value on table + $resql1 = $db->query($sql); + if (!$resql1) { + setEventMessages($db->lasterror(), null, 'warnings'); + } else { + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; // Switch fields (may fails due to foreign key) + $resql2 = $db->query($sql); + if (!$resql2) { + setEventMessages($db->lasterror(), null, 'warnings'); + } + } } if ($action == 'convertutf8mb4') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; - $db->query($sql); + $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; // Set the default value on table + $resql1 = $db->query($sql); + if (!$resql1) { + setEventMessages($db->lasterror(), null, 'warnings'); + } else { + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; // Switch fields (may fails due to foreign key) + $resql2 = $db->query($sql); + if (!$resql2) { + setEventMessages($db->lasterror(), null, 'warnings'); + } + } } if ($action == 'convertdynamic') { $sql = "ALTER TABLE ".$db->sanitize($table)." ROW_FORMAT=DYNAMIC;"; From 471668b9406957d1cc9ba5a3af907fa53fd188de Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 30 Sep 2024 23:11:31 +0200 Subject: [PATCH 20/75] FIX Toolt to convert utf8mb4 --- htdocs/admin/system/database-tables.php | 18 +++++++--- htdocs/admin/system/database.php | 48 +++++++++++++++++++++++-- htdocs/admin/system/dbtable.php | 26 +++++++++++--- htdocs/core/db/mysqli.class.php | 5 +-- htdocs/install/repair.php | 16 +++++++-- 5 files changed, 98 insertions(+), 15 deletions(-) diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index fa7a86480ba..7ea4ba8336b 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -52,12 +52,17 @@ if ($action == 'convert') { // Convert engine into innodb $db->query($sql); } if ($action == 'convertutf8') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; // Set the default value on table + $collation = 'utf8_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8_general_ci'; + } + $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); // Set the default value on table $resql1 = $db->query($sql); if (!$resql1) { setEventMessages($db->lasterror(), null, 'warnings'); } else { - $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; // Switch fields (may fails due to foreign key) + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); // Switch fields (may fails due to foreign key) $resql2 = $db->query($sql); if (!$resql2) { setEventMessages($db->lasterror(), null, 'warnings'); @@ -65,12 +70,17 @@ if ($action == 'convertutf8') { } } if ($action == 'convertutf8mb4') { - $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; // Set the default value on table + $collation = 'utf8mb4_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8mb4_general_ci'; + } + $sql = "ALTER TABLE ".$db->sanitize($table)." CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); // Set the default value on table $resql1 = $db->query($sql); if (!$resql1) { setEventMessages($db->lasterror(), null, 'warnings'); } else { - $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; // Switch fields (may fails due to foreign key) + $sql = "ALTER TABLE ".$db->sanitize($table)." CONVERT TO CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); // Switch fields (may fails due to foreign key) $resql2 = $db->query($sql); if (!$resql2) { setEventMessages($db->lasterror(), null, 'warnings'); diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 1c9bb6b2f93..7d2990f77be 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -29,11 +29,34 @@ require '../../main.inc.php'; $langs->load("admin"); +$action = GETPOST('action', 'aZ09'); + if (!$user->admin) { accessforbidden(); } +/* + * Actions + */ + +if ($action == 'convertutf8unicode') { // Test on permission already done. + $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; + $db->query($sql); +} +if ($action == 'convertutf8mb4unicode') { // Test on permission already done. + $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; + $db->query($sql); +} +if ($action == 'convertutf8general') { // Test on permission already done. + $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8 COLLATE utf8_general_ci"; + $db->query($sql); +} +if ($action == 'convertutf8mb4general') { // Test on permission already done. + $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"; + $db->query($sql); +} + /* * View @@ -59,14 +82,33 @@ print ''.$langs->trans("User").''.$ print ''.$langs->trans("Password").''.preg_replace('/./i', '*', $dolibarr_main_db_pass).''."\n"; print ''.$langs->trans("DBStoringCharset").''.$db->getDefaultCharacterSetDatabase(); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "SHOW VARIABLES LIKE 'character_set_database'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW CHARSET")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'character_set_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$conf->db->name."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW CHARSET")); // We can use $db->getDefaultCharacterSetDatabase(), $db->getListOfCharacterSet(), } print ''."\n"; -print ''.$langs->trans("DBSortingCharset").''.$db->getDefaultCollationDatabase(); +print ''.$langs->trans("DBSortingCharset").''; +$defaultcollation = $db->getDefaultCollationDatabase(); +print dolPrintHTML($defaultcollation); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "SHOW VARIABLES LIKE 'collation_database'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "SHOW COLLATION")); + if ($defaultcollation != $dolibarr_main_db_collation) { + print img_warning('The database default value of collation '.$defaultcollation.' differs from conf setup '.$dolibarr_main_db_collation); + } + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$conf->db->name."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION")); // We can use $db->getDefaultCollationDatabase(), $db->getListOfCollation(); + + print '       '.$langs->trans("ConvertInto"); + if (!in_array($defaultcollation, array("utf8_unicode_ci"))) { + print '   utf8 unicode'; + } + if (!in_array($defaultcollation, array("utf8_general_ci"))) { + print '   utf8 general'; + } + if (!in_array($defaultcollation, array("utf8mb4_unicode_ci"))) { + print '   utf8mb4 unicode'; + } + if (!in_array($defaultcollation, array("utf8mb4_general_ci"))) { + print '   utf8mb4 general'; + } } print ''."\n"; print ''; diff --git a/htdocs/admin/system/dbtable.php b/htdocs/admin/system/dbtable.php index 95e738c250c..8167f1e6db9 100644 --- a/htdocs/admin/system/dbtable.php +++ b/htdocs/admin/system/dbtable.php @@ -55,8 +55,17 @@ if ($action == 'convertutf8') { $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." CHARACTER SET utf8"; // We must not sanitize the $row[1] $db->query($sql); - $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." COLLATE utf8_unicode_ci"; // We must not sanitize the $row[1] - $db->query($sql); + $collation = 'utf8_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8_general_ci'; + } + + $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." COLLATE ".$db->sanitize($collation); // We must not sanitize the $row[1] + $reslq2 = $db->query($sql); + if (!$resql2) { + setEventMessages($db->lasterror(), null, 'warnings'); + } break; } @@ -76,8 +85,17 @@ if ($action == 'convertutf8mb4') { $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." CHARACTER SET utf8mb4"; // We must not sanitize the $row[1] $db->query($sql); - $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." COLLATE utf8mb4_unicode_ci"; // We must not sanitize the $row[1] - $db->query($sql); + $collation = 'utf8mb4_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8mb4_general_ci'; + } + + $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." COLLATE ".$db->sanitize($collation); // We must not sanitize the $row[1] + $resql2 = $db->query($sql); + if (!$resql2) { + setEventMessages($db->lasterror(), null, 'warnings'); + } break; } diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 7931374eb70..45d60332fdf 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -105,6 +105,8 @@ class DoliDBMysqli extends DoliDB dol_syslog(get_class($this)."::DoliDBMysqli Connect error: ".$this->error, LOG_ERR); } + $disableforcecharset = 0; // Set to 1 to test without charset forcing + // If server connection is ok, we try to connect to the database if ($this->connected && $name) { if ($this->select_db($name)) { @@ -118,7 +120,6 @@ class DoliDBMysqli extends DoliDB $clientmustbe = 'utf8'; } - $disableforcecharset = 0; // Set to 1 to test without charset forcing if (empty($disableforcecharset) && $this->db->character_set_name() != $clientmustbe) { try { dol_syslog(get_class($this)."::DoliDBMysqli You should set the \$dolibarr_main_db_character_set and \$dolibarr_main_db_collation for the PHP to the same as the database default, so to ".$this->db->character_set_name(). " or upgrade database default to ".$clientmustbe.".", LOG_WARNING); @@ -173,7 +174,7 @@ class DoliDBMysqli extends DoliDB $clientmustbe = 'utf8'; } - if ($this->db->character_set_name() != $clientmustbe) { + if (empty($disableforcecharset) && $this->db->character_set_name() != $clientmustbe) { $this->db->set_charset($clientmustbe); // This set utf8_unicode_ci $collation = $conf->db->dolibarr_main_db_collation; diff --git a/htdocs/install/repair.php b/htdocs/install/repair.php index 9294990860c..20b6a9572bc 100644 --- a/htdocs/install/repair.php +++ b/htdocs/install/repair.php @@ -1347,10 +1347,16 @@ if ($ok && GETPOST('force_utf8_on_tables', 'alpha')) { continue; } + $collation = 'utf8_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8_general_ci'; + } + print ''; print $table[0]; $sql1 = "ALTER TABLE ".$db->sanitize($table[0])." ROW_FORMAT=dynamic"; - $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci"; + $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8 COLLATE ".$db->sanitize($collation); print ''; print ''; if ($force_utf8_on_tables == 'confirmed') { @@ -1471,10 +1477,16 @@ if ($ok && GETPOST('force_utf8mb4_on_tables', 'alpha')) { continue; } + $collation = 'utf8mb4_unicode_ci'; + $defaultcollation = $db->getDefaultCollationDatabase(); + if (preg_match('/general/', $defaultcollation)) { + $collation = 'utf8mb4_general_ci'; + } + print ''; print $table[0]; $sql1 = "ALTER TABLE ".$db->sanitize($table[0])." ROW_FORMAT=dynamic"; - $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; + $sql2 = "ALTER TABLE ".$db->sanitize($table[0])." CONVERT TO CHARACTER SET utf8mb4 COLLATE ".$db->sanitize($collation); print ''; print ''; if ($force_utf8mb4_on_tables == 'confirmed') { From d10f69226fc405a4818024000393dbe06dea196e Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 10:08:16 +0200 Subject: [PATCH 21/75] Fix phpunit --- htdocs/admin/system/database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 7d2990f77be..e5056cfd561 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -82,7 +82,7 @@ print ''.$langs->trans("User").''.$ print ''.$langs->trans("Password").''.preg_replace('/./i', '*', $dolibarr_main_db_pass).''."\n"; print ''.$langs->trans("DBStoringCharset").''.$db->getDefaultCharacterSetDatabase(); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'character_set_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$conf->db->name."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW CHARSET")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'character_set_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW CHARSET")); // We can use $db->getDefaultCharacterSetDatabase(), $db->getListOfCharacterSet(), } print ''."\n"; @@ -93,7 +93,7 @@ if ($db->type == 'mysqli') { if ($defaultcollation != $dolibarr_main_db_collation) { print img_warning('The database default value of collation '.$defaultcollation.' differs from conf setup '.$dolibarr_main_db_collation); } - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$conf->db->name."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION")); + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION")); // We can use $db->getDefaultCollationDatabase(), $db->getListOfCollation(); print '       '.$langs->trans("ConvertInto"); From acf002e7f7bd830c158b40cb5a1e515a58535935 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 10:20:05 +0200 Subject: [PATCH 22/75] Fix phpunit --- htdocs/admin/system/database.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index e5056cfd561..db481f82a6a 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -82,7 +82,8 @@ print ''.$langs->trans("User").''.$ print ''.$langs->trans("Password").''.preg_replace('/./i', '*', $dolibarr_main_db_pass).''."\n"; print ''.$langs->trans("DBStoringCharset").''.$db->getDefaultCharacterSetDatabase(); if ($db->type == 'mysqli') { - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'character_set_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW CHARSET")); + $tooltipexample = "
SHOW VARIABLES LIKE 'character_set_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'"; + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", $tooltipexample.'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW CHARSET"))); // We can use $db->getDefaultCharacterSetDatabase(), $db->getListOfCharacterSet(), } print ''."\n"; @@ -93,7 +94,8 @@ if ($db->type == 'mysqli') { if ($defaultcollation != $dolibarr_main_db_collation) { print img_warning('The database default value of collation '.$defaultcollation.' differs from conf setup '.$dolibarr_main_db_collation); } - print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'").'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION")); + $tooltipexample = "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'"; + print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", $tooltipexample.'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION"))); // We can use $db->getDefaultCollationDatabase(), $db->getListOfCollation(); print '       '.$langs->trans("ConvertInto"); From 6f9be540e6414c3d3b09f9d4bee31b3d322b7ccd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 10:34:25 +0200 Subject: [PATCH 23/75] Typo --- htdocs/langs/en_US/holiday.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index fa0dd6d69a0..698548254b8 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -42,7 +42,7 @@ TypeOfLeaveId=Type of leave ID TypeOfLeaveCode=Type of leave code TypeOfLeaveLabel=Type of leave label NbUseDaysCP=Number of days -NbUseDaysCPHelp=The calculation of the number of days o fleave used takes into account the non-working days and the holidays defined in the dictionary. +NbUseDaysCPHelp=The calculation of the number of days of leave used takes into account the non-working days and the holidays defined in the dictionary. NbUseDaysCPShort=Days of leave NbUseDaysCPShortInMonth=Days of leave in month DayIsANonWorkingDay=%s is a non-working day From 4d64b89c9acbab51338d57635a5b0f68a4d01518 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 10:40:12 +0200 Subject: [PATCH 24/75] Sync transifex --- htdocs/langs/am_ET/admin.lang | 10 +- htdocs/langs/ar_SA/admin.lang | 10 +- htdocs/langs/az_AZ/admin.lang | 10 +- htdocs/langs/bg_BG/admin.lang | 10 +- htdocs/langs/bn_BD/admin.lang | 10 +- htdocs/langs/bn_IN/admin.lang | 10 +- htdocs/langs/bs_BA/admin.lang | 10 +- htdocs/langs/ca_ES/admin.lang | 10 +- htdocs/langs/cs_CZ/admin.lang | 10 +- htdocs/langs/cy_GB/admin.lang | 10 +- htdocs/langs/da_DK/admin.lang | 18 ++-- htdocs/langs/de_DE/admin.lang | 22 ++-- htdocs/langs/el_GR/admin.lang | 46 +++++---- htdocs/langs/en_US/holiday.lang | 2 +- htdocs/langs/es_AR/admin.lang | 1 - htdocs/langs/es_CL/admin.lang | 1 - htdocs/langs/es_CO/admin.lang | 1 - htdocs/langs/es_CR/admin.lang | 1 - htdocs/langs/es_CU/admin.lang | 1 - htdocs/langs/es_EC/admin.lang | 1 - htdocs/langs/es_ES/admin.lang | 10 +- htdocs/langs/fa_IR/admin.lang | 10 +- htdocs/langs/fi_FI/admin.lang | 40 ++++---- htdocs/langs/fr_CA/admin.lang | 48 ++++++++- htdocs/langs/fr_FR/admin.lang | 14 ++- htdocs/langs/gl_ES/admin.lang | 17 +-- htdocs/langs/he_IL/admin.lang | 10 +- htdocs/langs/hr_HR/admin.lang | 10 +- htdocs/langs/hu_HU/admin.lang | 10 +- htdocs/langs/id_ID/admin.lang | 10 +- htdocs/langs/it_IT/admin.lang | 10 +- htdocs/langs/ja_JP/admin.lang | 18 ++-- htdocs/langs/kk_KZ/admin.lang | 10 +- htdocs/langs/km_KH/admin.lang | 10 +- htdocs/langs/lo_LA/admin.lang | 10 +- htdocs/langs/lv_LV/admin.lang | 176 ++++++++++++++++---------------- htdocs/langs/mk_MK/admin.lang | 10 +- htdocs/langs/nb_NO/admin.lang | 14 ++- htdocs/langs/nl_NL/admin.lang | 30 +++--- htdocs/langs/pl_PL/admin.lang | 10 +- htdocs/langs/pt_PT/admin.lang | 10 +- htdocs/langs/ro_RO/admin.lang | 20 ++-- htdocs/langs/ru_RU/admin.lang | 10 +- htdocs/langs/sk_SK/admin.lang | 10 +- htdocs/langs/sl_SI/admin.lang | 10 +- htdocs/langs/sq_AL/admin.lang | 10 +- htdocs/langs/sv_SE/admin.lang | 10 +- htdocs/langs/sw_SW/admin.lang | 10 +- htdocs/langs/ta_IN/admin.lang | 10 +- htdocs/langs/tg_TJ/admin.lang | 10 +- htdocs/langs/th_TH/admin.lang | 10 +- htdocs/langs/tr_TR/admin.lang | 34 +++--- htdocs/langs/uk_UA/admin.lang | 10 +- htdocs/langs/ur_PK/admin.lang | 10 +- htdocs/langs/uz_UZ/admin.lang | 10 +- htdocs/langs/vi_VN/admin.lang | 10 +- htdocs/langs/zh_CN/admin.lang | 10 +- htdocs/langs/zh_HK/admin.lang | 18 ++-- htdocs/langs/zh_TW/admin.lang | 10 +- 59 files changed, 571 insertions(+), 332 deletions(-) diff --git a/htdocs/langs/am_ET/admin.lang b/htdocs/langs/am_ET/admin.lang index f366206003b..2a744aa1f7c 100644 --- a/htdocs/langs/am_ET/admin.lang +++ b/htdocs/langs/am_ET/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=የእሴቶቹ ዝርዝር የቅርጸት ቁልፍ፣ እሴት (ቁልፉ '0' ሊሆን የማይችልበት) መስመሮች መሆን አለባቸው

ለምሳሌ :
1,value1
2,value2,
3,value3n
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=መለኪያዎች ObjectName:Classpath
አገባብ መሆን አለባቸው የነገር ስም: ክፍል ExtrafieldParamHelpSeparator=ለቀላል መለያየት ባዶ ያቆዩ
ለሚሰበሰብ መለያየት ይህንን ወደ 1 ያዋቅሩት (ለአዲስ ክፍለ ጊዜ በነባሪነት ክፈት፣ ከዚያ ለእያንዳንዱ ክፍለ ጊዜ ሁኔታ ይቀመጣል)
ይህን ወደ 2 አዘጋጅ ለሚፈርስ መለያየት (ለአዲስ ክፍለ ጊዜ በነባሪነት ወድቋል፣ ከዚያ ሁኔታ ለእያንዳንዱ ተጠቃሚ ክፍለ ጊዜ ይጠበቃል) LibraryToBuildPDF=ለፒዲኤፍ ማመንጨት የሚያገለግል ላይብረሪ @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=የሬጌክስ ማጣሪያ ዋጋን ለማፅ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ለደንበኞች ወይም አቅራቢዎች ንዑስ መለያዎችን ሲያመነጩ የተወሰኑ ቃላትን ያጽዱ RemoveSpecialWordsHelp=የደንበኛውን ወይም የአቅራቢውን ሂሳብ ከማስላትዎ በፊት የሚጸዱትን ቃላት ይግለጹ። ";" ይጠቀሙ በእያንዳንዱ ቃል መካከል -GDPRContact=የውሂብ ጥበቃ ኦፊሰር (DPO፣ የውሂብ ግላዊነት ወይም የGDPR እውቂያ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=በመረጃ ስርዓትዎ ውስጥ የግል መረጃን ካከማቻሉ፣ ለአጠቃላይ የውሂብ ጥበቃ ደንብ ኃላፊነት ያለበትን አድራሻ እዚህ መሰየም ይችላሉ። HelpOnTooltip=በመሳሪያ ጫፍ ላይ እንዲታይ የእገዛ ጽሑፍ HelpOnTooltipDesc=ይህ መስክ በቅጽ ላይ ሲታይ ጽሑፉ በመሳሪያ ጥቆማ ውስጥ እንዲታይ የጽሁፍ ወይም የትርጉም ቁልፍ እዚህ ያስቀምጡ @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=የሶስተኛ ወገን ስም - የሶስተኛ ወገን ALIAS_THIRDPARTY=የሶስተኛ ወገን ተለዋጭ ስም - የሶስተኛ ወገን ስም PDFIn2Languages=በፒዲኤፍ ውስጥ መለያዎችን በ2 የተለያዩ ቋንቋዎች አሳይ (ይህ ባህሪ ለተወሰኑ ሁለት ቋንቋዎች ላይሰራ ይችላል) PDF_USE_ALSO_LANGUAGE_CODE=በፒዲኤፍዎ ውስጥ አንዳንድ ጽሑፎች በ2 የተለያዩ ቋንቋዎች በተመሳሳይ የመነጨ ፒዲኤፍ እንዲባዙ ከፈለጉ፣ እዚህ ሁለተኛ ቋንቋ ማዘጋጀት አለብዎት ስለዚህ የመነጨ ፒዲኤፍ በተመሳሳይ ገጽ ውስጥ 2 የተለያዩ ቋንቋዎችን ይይዛል ፣ ፒዲኤፍ ሲያመነጭ የሚመረጠው እና ይህ (() ይህንን የሚደግፉት ጥቂት የፒዲኤፍ አብነቶች ብቻ ናቸው)። ለ 1 ቋንቋ በፒዲኤፍ ባዶ ያስቀምጡ። -PDF_USE_A=በነባሪ ቅርጸት ፒዲኤፍ ፋንታ የፒዲኤፍ ሰነዶችን በፒዲኤፍ/ኤ ቅርጸት ይፍጠሩ +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=የFontAwesome አዶ ኮድ እዚህ ያስገቡ። FontAwesome ምን እንደሆነ ካላወቁ፣ አጠቃላይ ዋጋ ያለው የ fa-address-book መጠቀም ይችላሉ። RssNote=ማሳሰቢያ፡ እያንዳንዱ የአርኤስኤስ መጋቢ ፍቺ በዳሽቦርድ ውስጥ እንዲገኝ ማንቃት ያለብዎትን መግብር ያቀርባል JumpToBoxes=ወደ ማዋቀር ይዝለሉ -> መግብሮች @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index fe5a7f7d829..44545c60092 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=يجب أن تكون قائمة القيم أسطرً ExtrafieldParamHelpcheckbox=يجب أن تكون قائمة القيم أسطرًا تحتوي على مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح "0")

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda19b342 ... ExtrafieldParamHelpradio=يجب أن تكون قائمة القيم أسطرًا تحتوي على مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح '0')

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda19b342 ... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=يجب أن تكون المعلمات ObjectName: Classpath
البنية: اسم الكائن: Classpath ExtrafieldParamHelpSeparator=احتفظ به فارغًا لفاصل بسيط
اضبط هذا على 1 لفاصل مطوي (يفتح افتراضيًا للجلسة الجديدة ، ثم يتم الاحتفاظ بالحالة لكل جلسة مستخدم)
اضبط هذا على 2 لفاصل مطوي (مطوي افتراضيًا لجلسة جديدة ، ثم يتم الاحتفاظ بالحالة قبل كل جلسة مستخدم) LibraryToBuildPDF=المكتبة المستخدمة لتوليد ملفات صيغة المستندات المتنقلة @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=مرشح Regex لتنظيف القيمة (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=تنظيف كلمات معينة عند إنشاء حسابات فرعية للعملاء أو الموردين RemoveSpecialWordsHelp=حدد الكلمات المراد تنظيفها قبل حساب حساب العميل أو مورد. إستخدم "؛" بين كل كلمة -GDPRContact=مسؤول حماية البيانات (DPO أو خصوصية البيانات أو جهة اتصال GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=إذا قمت بتخزين البيانات الشخصية في نظام المعلومات الخاص بك ، فيمكنك تسمية جهة الاتصال المسؤولة عن اللائحة العامة لحماية البيانات هنا HelpOnTooltip=نص المساعدة للظهور في تلميح الأداة HelpOnTooltipDesc=ضع نصًا أو مفتاح ترجمة هنا حتى يظهر النص في تلميح عندما يظهر هذا الحقل في نموذج @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=اسم الطرف الثالث - الاسم المستعار ل ALIAS_THIRDPARTY=الاسم المستعار لجهة خارجية - اسم الجهة الخارجية PDFIn2Languages=إظهار التسميات في ملف PDF بلغتين مختلفتين (قد لا تعمل هذه الميزة مع بعض اللغات) PDF_USE_ALSO_LANGUAGE_CODE=اذا كنت ترغب في تكرار بعض النصوص بلغتين مختلفتين في ملفاتك المولدة بصيغة المستندات المتنقلة . يجب عليك ان ان تحدد اللغة الثانية هنا حتى يتسنى للملفات المولدة ان تحتوي على لغتين في نفس الصفحة . اللغة المختارة اثناء توليد المستند واللغة المختارة هنا (فقط بعض قوالب صيغة المستندات المتنقلة تدعم هذه الميزة) . ابق الخيار فارغاً للتوليد بلغة واحدة -PDF_USE_A=قم بإنشاء مستندات PDF بتنسيق PDF/A بدلاً من التنسيق الافتراضي PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=أدخل هنا رمز رمز FontAwesome. إذا كنت لا تعرف ما هو FontAwesome ، فيمكنك استخدام القيمة العامة fa-address-book. RssNote=ملاحظة: كل تعريف لمصدر اخبار مختصرة يوفر بريمج يجب تفعيله ليكون متاحا في لوحة المعلومات JumpToBoxes=اذهب الى الاعدادت -> البريمجات @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/az_AZ/admin.lang b/htdocs/langs/az_AZ/admin.lang index d21c3800038..459bf5845f3 100644 --- a/htdocs/langs/az_AZ/admin.lang +++ b/htdocs/langs/az_AZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrlər ObjectName:Classpath
Sintaksis: ObjectName:Classpath olmalıdır ExtrafieldParamHelpSeparator=Sadə ayırıcı üçün boş saxlayın
Dağlanan ayırıcı üçün bunu 1-ə təyin edin (defolt olaraq yeni sessiya üçün açılır, sonra status hər istifadəçi sessiyası üçün saxlanılır)
Bunu yığışdıran ayırıcı üçün 2-yə təyin edin (yeni sessiya üçün defolt olaraq yığışdırılır, sonra status hər istifadəçi seansından əvvəl saxlanılır) LibraryToBuildPDF=PDF yaratmaq üçün istifadə olunan kitabxana @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Təmiz dəyər üçün regex filtri (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Müştərilər və ya təchizatçılar üçün sub-hesablar yaradan zaman müəyyən sözləri təmizləyin RemoveSpecialWordsHelp=Müştəri və ya təchizatçı hesabını hesablamadan əvvəl təmizlənəcək sözləri göstərin. ";" istifadə edin hər söz arasında -GDPRContact=Məlumatların Mühafizəsi Məmuru (DPO, Məlumat Məxfiliyi və ya GDPR əlaqəsi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Şəxsi məlumatlarınızı İnformasiya Sisteminizdə saxlayırsınızsa, burada Ümumi Məlumatların Qorunması Qaydasına cavabdeh olan kontaktın adını çəkə bilərsiniz HelpOnTooltip=Alət ipucunda göstərmək üçün kömək mətni HelpOnTooltipDesc=Bu sahə formada görünəndə mətnin alət ipucunda görünməsi üçün bura mətn və ya tərcümə düyməsini qoyun @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Üçüncü tərəf adı - Üçüncü tərəf ləqəbi ALIAS_THIRDPARTY=Üçüncü tərəf ləqəbi - Üçüncü tərəfin adı PDFIn2Languages=PDF-də etiketləri 2 fərqli dildə göstərin (bu funksiya bəzi dillərdə işləməyə bilər) PDF_USE_ALSO_LANGUAGE_CODE=PDF-inizdə bəzi mətnlərin eyni yaradılmış PDF-də 2 müxtəlif dildə dublikat edilməsini istəyirsinizsə, burada bu ikinci dili təyin etməlisiniz ki, yaradılan PDF eyni səhifədə 2 müxtəlif dildən ibarət olsun, PDF yaradarkən seçilən dil və bu ( yalnız bir neçə PDF şablonu bunu dəstəkləyir). Hər PDF üçün 1 dil üçün boş saxlayın. -PDF_USE_A=Standart PDF formatı əvəzinə PDF/A formatında PDF sənədləri yaradın +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesome ikonasının kodunu buraya daxil edin. FontAwesome nə olduğunu bilmirsinizsə, ümumi dəyər fa-ünvan kitabından istifadə edə bilərsiniz. RssNote=Qeyd: Hər bir RSS lent tərifi vidceti təmin edir ki, onun idarə panelində mövcud olması üçün onu aktivləşdirməlisiniz JumpToBoxes=Quraşdırma -> Vidjetlərə keçin @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index 9d019c9e04b..15ff1fc9572 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Списъкът със стойности трябв ExtrafieldParamHelpcheckbox=Списъкът със стойности трябва да бъде във формат key,value (където key не може да бъде '0')

например:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Списъкът със стойности трябва да бъде във формат key,value (където key не може да бъде '0')

например:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметрите трябва да бъдат ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Оставете празно за обикновен разделител
Посочете стойност 1 за разделител, който се свива (отворен по подразбиране за нова сесия, а след това състоянието се запазва за всяка потребителска сесия)
Посочете стойност 2 за разделител, който се свива (свит по подразбиране за нова сесия, а след това състоянието се запазва за всяка потребителска сесия). LibraryToBuildPDF=Използвана библиотека за създаване на PDF файлове @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex филтър за чиста стойнос DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Изчистете определени думи, когато генерирате подакаунти за клиенти или доставчици RemoveSpecialWordsHelp=Посочете думите за почистване, преди да изчислите Клиент или сметката на доставчика. Използвай ";" между всяка дума -GDPRContact=Длъжностно лице по защита на данните (DPO, защита на лични данни или GDPR контакт) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ако съхранявате лични данни във вашата информационна система, можете да посочите контакта, който отговаря за Общия регламент за защита на данните тук HelpOnTooltip=Подсказка HelpOnTooltipDesc=Поставете тук текст или ключ за превод, който да се покаже в подсказка, когато това поле се появи във формуляр @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=контрагент име - контрагент псевдо ALIAS_THIRDPARTY=контрагент псевдоним - контрагент име PDFIn2Languages=Показване на етикети в PDF на 2 различни езика (тази функция може да не работи за няколко езика) PDF_USE_ALSO_LANGUAGE_CODE=Ако искате да имате някои текстове във вашия PDF файл, дублирани на 2 различни езика в един и същ генериран PDF файл, трябва да посочите тук този втори език, така че генерираният PDF файл да съдържа 2 различни езика на една и съща страница, избраният при генериране на PDF и този (само няколко PDF шаблона поддържат това). Запазете празно за един език в PDF файла. -PDF_USE_A=Генерирайте PDF документи с формат PDF/A вместо формат PDF по подразбиране +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Въведете тук кода за FontAwesome икона. Ако не знаете какво е FontAwesome, може да използвате стандартната стойност fa-address book. RssNote=Забележка: Всяка дефиниция на RSS канал предоставя изпълним модул, който трябва да активирате, за да бъде наличен в таблото за управление JumpToBoxes=Отидете до Настройка -> Приспособления @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bn_BD/admin.lang b/htdocs/langs/bn_BD/admin.lang index 9491c715e9d..4b363e7eb1e 100644 --- a/htdocs/langs/bn_BD/admin.lang +++ b/htdocs/langs/bn_BD/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=পরামিতি হতে হবে ObjectName:Classpath
সিনট্যাক্স: ObjectName:Classpath ExtrafieldParamHelpSeparator=একটি সাধারণ বিভাজকের জন্য খালি রাখুন
কোলাপসিং সেপারেটরের জন্য এটি 1 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে খোলা, তারপর প্রতিটি ব্যবহারকারীর সেশনের জন্য স্থিতি রাখা হয়)
কোলাপসিং সেপারেটরের জন্য এটিকে 2 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে ভেঙে পড়ে, তারপর প্রতিটি ব্যবহারকারীর সেশনের আগে স্থিতি রাখা হয়) LibraryToBuildPDF=পিডিএফ তৈরির জন্য ব্যবহৃত লাইব্রেরি @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=মান পরিষ্কার করতে DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=গ্রাহক বা সরবরাহকারীদের জন্য উপ-অ্যাকাউন্ট তৈরি করার সময় নির্দিষ্ট শব্দগুলি পরিষ্কার করুন RemoveSpecialWordsHelp=গ্রাহক বা সরবরাহকারী অ্যাকাউন্ট গণনা করার আগে পরিষ্কার করতে হবে এমন শব্দগুলি উল্লেখ করুন। ব্যবহার করা ";" প্রতিটি শব্দের মধ্যে -GDPRContact=ডেটা সুরক্ষা অফিসার (DPO, ডেটা গোপনীয়তা বা GDPR যোগাযোগ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=আপনি যদি আপনার ইনফরমেশন সিস্টেমে ব্যক্তিগত ডেটা সঞ্চয় করেন, তাহলে আপনি এখানে সাধারণ ডেটা সুরক্ষা প্রবিধানের জন্য দায়ী পরিচিতের নাম দিতে পারেন HelpOnTooltip=টুলটিপে দেখানোর জন্য পাঠ্য সাহায্য করুন HelpOnTooltipDesc=এই ক্ষেত্রটি একটি ফর্মে উপস্থিত হলে একটি টুলটিপে পাঠ্য দেখানোর জন্য এখানে পাঠ্য বা একটি অনুবাদ কী রাখুন @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=তৃতীয় পক্ষের নাম - তৃতী ALIAS_THIRDPARTY=তৃতীয় পক্ষের উপনাম - তৃতীয় পক্ষের নাম PDFIn2Languages=পিডিএফ-এ 2টি ভিন্ন ভাষায় লেবেল দেখান (এই বৈশিষ্ট্যটি কয়েকটি ভাষার জন্য কাজ নাও করতে পারে) PDF_USE_ALSO_LANGUAGE_CODE=আপনি যদি আপনার পিডিএফের কিছু পাঠ্য একই জেনারেটেড পিডিএফ-এ 2টি ভিন্ন ভাষায় সদৃশ করতে চান, তাহলে আপনাকে অবশ্যই এখানে এই দ্বিতীয় ভাষাটি সেট করতে হবে যাতে জেনারেট করা পিডিএফে একই পৃষ্ঠায় 2টি ভিন্ন ভাষা থাকবে, যেটি PDF তৈরি করার সময় বেছে নেওয়া হয় এবং এটি ( শুধুমাত্র কয়েকটি পিডিএফ টেমপ্লেট এটি সমর্থন করে)। পিডিএফ প্রতি 1টি ভাষার জন্য খালি রাখুন। -PDF_USE_A=ডিফল্ট ফরম্যাট PDF এর পরিবর্তে PDF/A ফরম্যাট সহ পিডিএফ ডকুমেন্ট তৈরি করুন +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=এখানে একটি FontAwesome আইকনের কোড লিখুন। আপনি যদি না জানেন যে FontAwesome কি, আপনি জেনেরিক মান fa-address-book ব্যবহার করতে পারেন। RssNote=দ্রষ্টব্য: প্রতিটি RSS ফিড সংজ্ঞা একটি উইজেট প্রদান করে যেটি ড্যাশবোর্ডে উপলব্ধ থাকতে আপনাকে অবশ্যই সক্ষম করতে হবে JumpToBoxes=সেটআপে যান -> উইজেট @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bn_IN/admin.lang b/htdocs/langs/bn_IN/admin.lang index 14de13fb4b3..9e4e7079957 100644 --- a/htdocs/langs/bn_IN/admin.lang +++ b/htdocs/langs/bn_IN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=পরামিতি হতে হবে ObjectName:Classpath
সিনট্যাক্স: ObjectName:Classpath ExtrafieldParamHelpSeparator=একটি সাধারণ বিভাজকের জন্য খালি রাখুন
কোলাপসিং সেপারেটরের জন্য এটি 1 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে খোলা, তারপর প্রতিটি ব্যবহারকারীর সেশনের জন্য স্থিতি রাখা হয়)
কোলাপসিং সেপারেটরের জন্য এটিকে 2 এ সেট করুন (নতুন সেশনের জন্য ডিফল্টরূপে ভেঙে পড়ে, তারপর প্রতিটি ব্যবহারকারীর সেশনের আগে স্থিতি রাখা হয়) LibraryToBuildPDF=পিডিএফ তৈরির জন্য ব্যবহৃত লাইব্রেরি @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=মান পরিষ্কার করতে DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=গ্রাহক বা সরবরাহকারীদের জন্য উপ-অ্যাকাউন্ট তৈরি করার সময় নির্দিষ্ট শব্দগুলি পরিষ্কার করুন RemoveSpecialWordsHelp=গ্রাহক বা সরবরাহকারীর হিসাব গণনা করার আগে পরিষ্কার করতে হবে এমন শব্দ উল্লেখ করুন। ব্যবহার করা ";" প্রতিটি শব্দের মধ্যে -GDPRContact=ডেটা সুরক্ষা অফিসার (DPO, ডেটা গোপনীয়তা বা GDPR যোগাযোগ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=আপনি যদি আপনার ইনফরমেশন সিস্টেমে ব্যক্তিগত ডেটা সঞ্চয় করেন, তাহলে আপনি এখানে সাধারণ ডেটা সুরক্ষা প্রবিধানের জন্য দায়ী পরিচিতের নাম দিতে পারেন HelpOnTooltip=টুলটিপে দেখানোর জন্য পাঠ্য সাহায্য করুন HelpOnTooltipDesc=এই ক্ষেত্রটি একটি ফর্মে উপস্থিত হলে একটি টুলটিপে পাঠ্য দেখানোর জন্য এখানে পাঠ্য বা একটি অনুবাদ কী রাখুন @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=তৃতীয় পক্ষের নাম - তৃতী ALIAS_THIRDPARTY=তৃতীয় পক্ষের উপনাম - তৃতীয় পক্ষের নাম PDFIn2Languages=পিডিএফ-এ 2টি ভিন্ন ভাষায় লেবেল দেখান (এই বৈশিষ্ট্যটি কয়েকটি ভাষার জন্য কাজ নাও করতে পারে) PDF_USE_ALSO_LANGUAGE_CODE=আপনি যদি আপনার পিডিএফের কিছু পাঠ্য একই জেনারেটেড পিডিএফ-এ 2টি ভিন্ন ভাষায় সদৃশ করতে চান, তাহলে আপনাকে অবশ্যই এখানে এই দ্বিতীয় ভাষাটি সেট করতে হবে যাতে জেনারেট করা পিডিএফে একই পৃষ্ঠায় 2টি ভিন্ন ভাষা থাকবে, যেটি PDF তৈরি করার সময় বেছে নেওয়া হয় এবং এটি ( শুধুমাত্র কয়েকটি পিডিএফ টেমপ্লেট এটি সমর্থন করে)। পিডিএফ প্রতি 1টি ভাষার জন্য খালি রাখুন। -PDF_USE_A=ডিফল্ট ফরম্যাট PDF এর পরিবর্তে PDF/A ফরম্যাট সহ পিডিএফ ডকুমেন্ট তৈরি করুন +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=এখানে একটি FontAwesome আইকনের কোড লিখুন। আপনি যদি না জানেন যে FontAwesome কি, আপনি জেনেরিক মান fa-address-book ব্যবহার করতে পারেন। RssNote=দ্রষ্টব্য: প্রতিটি RSS ফিড সংজ্ঞা একটি উইজেট প্রদান করে যেটি ড্যাশবোর্ডে উপলব্ধ থাকতে আপনাকে অবশ্যই সক্ষম করতে হবে JumpToBoxes=সেটআপে যান -> উইজেট @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/bs_BA/admin.lang b/htdocs/langs/bs_BA/admin.lang index 19e0d9f3bdb..bdca07350f6 100644 --- a/htdocs/langs/bs_BA/admin.lang +++ b/htdocs/langs/bs_BA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametri moraju biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ostavite prazno za jednostavan separator
Postavite ovo na 1 za separator koji se sažima (otvoreno prema zadanim postavkama za novu sesiju, tada se status čuva za svaku korisničku sesiju)
Postavite ovo na 2 za sažimajući separator (sažeto prema zadanim postavkama za novu sesiju, tada se status čuva za svaku korisničku sesiju) LibraryToBuildPDF=Biblioteka koja se koristi za generiranje PDF-a @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter za čistu vrijednost (COMPANY_DIGITAR DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite određene riječi prilikom generiranja podračuna za kupce ili dobavljače RemoveSpecialWordsHelp=Navedite riječi koje treba očistiti prije izračunavanja računa kupca ili dobavljača. Koristite ";" između svake reči -GDPRContact=Službenik za zaštitu podataka (DPO, kontakt za privatnost podataka ili GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ako pohranjujete lične podatke u svom informacionom sistemu, ovdje možete imenovati kontakt koji je odgovoran za Opću uredbu o zaštiti podataka HelpOnTooltip=Tekst pomoći za prikaz u opisu alata HelpOnTooltipDesc=Ovdje stavite tekst ili ključ za prijevod kako bi se tekst prikazao u opisu alata kada se ovo polje pojavi u obrascu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime treće strane - pseudonim treće strane ALIAS_THIRDPARTY=Alias treće strane - Ime treće strane PDFIn2Languages=Prikaži oznake u PDF-u na 2 različita jezika (ova funkcija možda neće raditi za nekoliko jezika) PDF_USE_ALSO_LANGUAGE_CODE=Ako želite da neki tekstovi u vašem PDF-u budu duplirani na 2 različita jezika u istom generiranom PDF-u, ovdje morate postaviti ovaj drugi jezik tako da će generirani PDF sadržavati 2 različita jezika na istoj stranici, onaj koji je odabran prilikom generiranja PDF-a i ovaj (samo nekoliko PDF šablona to podržava). Ostavite prazno za 1 jezik po PDF-u. -PDF_USE_A=Generirajte PDF dokumente u formatu PDF/A umjesto zadanog formata PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ovdje unesite kod ikone FontAwesome. Ako ne znate šta je FontAwesome, možete koristiti generičku vrijednost fa-address-book. RssNote=Napomena: Svaka definicija RSS feed-a pruža widget koji morate omogućiti da bi bio dostupan na kontrolnoj tabli JumpToBoxes=Skoči na Podešavanje -> Widgeti @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index c3b97b401f4..baacd6ff82d 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Els paràmetres han de ser ObjectName:Classpath
Sintaxi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Manteniu-lo buit per a un separador simple
Definiu-lo a 1 per a un separador que es replega (obert per defecte per a una sessió nova, llavors l'estat es manté per a cada sessió d'usuari)
Definiu-ho a 2 per a un separador que es replega (es replega de manera predeterminada per a una sessió nova, llavors l'estat es manté abans de cada sessió d'usuari) LibraryToBuildPDF=Biblioteca utilitzada per a la generació de PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex al valor net (COMPANY_DIGITARIA_CLEAN DuplicateForbidden=Duplicat prohibit RemoveSpecialWords=Netegeu certes paraules en generar subcomptes per a clients o proveïdors RemoveSpecialWordsHelp=Especifiqueu les paraules a netejar abans de calcular el compte de client o proveïdor. Utilitzeu un ";" entre cada paraula -GDPRContact=Oficial de protecció de dades (PDO, privadesa de dades o contacte amb GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Si emmagatzemeu dades personals al vostre Sistema d'Informació, podeu anomenar aquí el contacte responsable del Reglament General de Protecció de Dades HelpOnTooltip=Text d'ajuda que es mostrarà a la descripció d'informació HelpOnTooltipDesc=Posa text o una tecla de traducció aquí perquè el text es mostri en una descripció emergent quan aquest camp aparegui en un formulari @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nom de tercer - Àlies de tercer ALIAS_THIRDPARTY=Àlies de tercer - Nom de tercer PDFIn2Languages=Mostra les etiquetes al PDF en 2 idiomes diferents (és possible que aquesta funció no funcioni en alguns idiomes) PDF_USE_ALSO_LANGUAGE_CODE=Si voleu que alguns textos del vostre PDF es copiïn en 2 idiomes diferents en el mateix PDF generat, heu d’establir aquí aquest segon idioma perquè el PDF generat contingui 2 idiomes diferents en la mateixa pàgina, l’escollit en generar el PDF i aquesta (només poques plantilles de PDF admeten això). Mantingueu-lo buit per a 1 idioma per PDF. -PDF_USE_A=Genereu documents PDF amb el format PDF/A en comptes del format PDF predeterminat +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Introduïu aquí el codi de la icona de FontAwesome. Si no sabeu què és FontAwesome, podeu utilitzar el llibre genèric d’adreces. RssNote=Nota: cada definició de canal RSS proporciona un giny que heu d'activar perquè estigui disponible al tauler JumpToBoxes=Ves a Configuració -> Ginys @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index 591824a700f..66b0dfa036b 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Seznam hodnot musí být řádky s formátovým klíč ExtrafieldParamHelpcheckbox=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0')

například:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpradio=Seznam hodnot musí být řádky s formátovým klíčem, hodnota (kde klíč nemůže být '0')

například:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ponechte prázdné pro jednoduchý oddělovač
Tuto hodnotu nastavíte na 1 pro odlučovač (výchozí nastavení je otevřeno pro novou relaci, poté je stav zachován pro každou uživatelskou relaci)
Nastavte tuto položku na 2 pro sbalující se oddělovač. (ve výchozím nastavení sbaleno pro novou relaci, pak je stav udržován pro každou relaci uživatele) LibraryToBuildPDF=Knihovna používaná pro generování PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtr Regex pro vyčištění hodnoty (COMPANY_DIG DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=Úředník pro ochranu údajů (DPO, ochrana dat nebo kontakt GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Text nápovědy se zobrazí na popisku HelpOnTooltipDesc=Vložte zde textový nebo překladový klíč, aby se text zobrazil v popisku, když se toto pole zobrazí ve formuláři @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) PDF_USE_ALSO_LANGUAGE_CODE=Pokud chcete mít ve svém PDF duplikované texty ve 2 různých jazycích ve stejném generovaném PDF, musíte zde nastavit tento druhý jazyk, takže vygenerovaný PDF bude obsahovat 2 různé jazyky na stejné stránce, jeden vybraný při generování PDF a tento ( Podporuje to jen několik šablon PDF). Uchovávejte prázdné po dobu 1 jazyka na PDF. -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Sem zadejte kód ikony FontAwesome. Pokud nevíte, co je FontAwesome, můžete použít obecnou hodnotu fa-address-book. RssNote=Poznámka: Každá definice zdroje RSS obsahuje widget, který musíte povolit, aby byl dostupný na hlavním panelu JumpToBoxes=Přejít na nastavení -> Widgety @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/cy_GB/admin.lang b/htdocs/langs/cy_GB/admin.lang index 8f27b20cf86..fd7883994e6 100644 --- a/htdocs/langs/cy_GB/admin.lang +++ b/htdocs/langs/cy_GB/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Rhaid Rhestr o werthoedd yn llinellau gyda fformat all ExtrafieldParamHelpcheckbox=Rhaid i'r rhestr o werthoedd fod yn linellau gydag allwedd fformat, gwerth (lle na all yr allwedd fod yn '0')

er enghraifft:
1,value1
2,value2 a0393bzfc a039342fc a03426fc ExtrafieldParamHelpradio=Rhaid i'r rhestr o werthoedd fod yn linellau gydag allwedd fformat, gwerth (lle na all yr allwedd fod yn '0')

er enghraifft:
1,value1
2,value2 a0393bzfc a039342fc a03426fc ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Rhaid i baramedrau fod yn Enw Gwrthrych:Classpath
Cystrawen: Enw Gwrthrych:Llwybr Dosbarth ExtrafieldParamHelpSeparator=Cadwch yn wag ar gyfer gwahanydd syml
Gosodwch hwn i 1 ar gyfer gwahanydd sy'n cwympo (ar agor yn ddiofyn ar gyfer sesiwn newydd, yna cedwir statws ar gyfer pob sesiwn defnyddiwr)
Gosodwch hwn i 2 ar gyfer gwahanydd sy'n cwympo (wedi cwympo yn ddiofyn ar gyfer sesiwn newydd, yna statws yn cael ei gadw ar gyfer pob sesiwn defnyddiwr) LibraryToBuildPDF=Llyfrgell a ddefnyddir ar gyfer cynhyrchu PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Hidlydd Regex i lanhau gwerth (COMPANY_DIGITARIA_C DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Glanhewch rai geiriau wrth gynhyrchu isgyfrifon ar gyfer cwsmeriaid neu gyflenwyr RemoveSpecialWordsHelp=Nodwch y geiriau i'w glanhau cyn cyfrifo'r cyfrif cwsmer neu gyflenwr. Defnyddiwch ";" rhwng pob gair -GDPRContact=Swyddog Diogelu Data (DPO, Data Preifatrwydd neu gyswllt GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Os ydych yn storio data personol yn eich System Wybodaeth, gallwch enwi’r cyswllt sy’n gyfrifol am y Rheoliad Diogelu Data Cyffredinol yma HelpOnTooltip=Testun cymorth i'w ddangos ar y cyngor HelpOnTooltipDesc=Rhowch destun neu allwedd cyfieithu yma er mwyn i'r testun ddangos mewn cyngor pan fydd y maes hwn yn ymddangos ar ffurf @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Enw trydydd parti - Enw arall trydydd parti ALIAS_THIRDPARTY=Alias trydydd parti - Enw trydydd parti PDFIn2Languages=Dangos labeli yn y PDF mewn 2 iaith wahanol (efallai na fydd y nodwedd hon yn gweithio ar gyfer rhai ieithoedd neu ddwy) PDF_USE_ALSO_LANGUAGE_CODE=Os ydych chi am i rai testunau yn eich PDF gael eu dyblygu mewn 2 iaith wahanol yn yr un PDF a gynhyrchir, rhaid i chi osod yma yr ail iaith hon felly bydd PDF a gynhyrchir yn cynnwys 2 iaith wahanol ar yr un dudalen, yr un a ddewisir wrth gynhyrchu PDF a'r un hon ( dim ond ychydig o dempledi PDF sy'n cefnogi hyn). Cadwch yn wag am 1 iaith fesul PDF. -PDF_USE_A=Cynhyrchu dogfennau PDF gyda fformat PDF/A yn lle fformat PDF rhagosodedig +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Rhowch god eicon FontAwesome yma. Os nad ydych chi'n gwybod beth yw FontAwesome, gallwch ddefnyddio'r llyfr cyfeiriadau gwerth generig. RssNote=Nodyn: Mae pob diffiniad porthiant RSS yn darparu teclyn y mae'n rhaid i chi ei alluogi i'w gael ar y dangosfwrdd JumpToBoxes=Neidio i Gosod -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 985651891a4..d90329edb30 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Liste over værdier skal være linjer med formatet nø ExtrafieldParamHelpcheckbox=Liste over værdier skal være linjer med formatet nøgle,værdi (hvor nøgle ikke kan være '0')

f.eks.:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Liste over værdier skal være linjer med formatet nøgle,værdi (hvor nøgle ikke kan være '0')

f.eks.:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=Liste over værdier kommer fra en tabel
Syntaks: tabelnavn:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

- id_field er nødvendigvis en primær int-key
- filtersql er en betingelse. Det skal bruge USF-syntaksen. Eksempel: (active:=:1) for kun at vise aktiv værdi
Du kan også bruge $ID$ i filter, som er det aktuelle id for det aktuelle objekt
Hvis du vil filtrere på ekstrafelter, brug syntaks extra.fieldcode=... (hvor feltkode er koden for ekstrafelt)

For at få listen afhængig af en anden komplementær attributliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order at have listen afhængig af en anden liste:
c_typent:libelle:id:parent_list_code |parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste over værdier kommer fra en tabel
Syntaks: tabelnavn:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

filter kan være en simpel test (f.eks. active=1 for kun at vise aktiv værdi)
Du kan også bruge $ID$ i filter, der er det aktuelle id for det aktuelle objekt
For at lave et SELECT i filter, brug $SEL$
hvis du vil filtrere på ekstrafelter, brug syntaks extra.fieldcode=... (hvor feltkoden er koden for extrafield)

For at få listen afhængig af en anden komplementær attributliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

For at få listen afhængig af en anden liste:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametre skal være ObjectName:Classpath
Syntaks: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hold tom for en simpel adskiller
Indstil denne til 1 for en kollapsende separator (åben som standard for ny session, så beholdes status for hver brugersession)
Indstil denne til 2 for en kollapsende separator (skjulet som standard for ny session, så beholdes status før hver brugersession) LibraryToBuildPDF=Mappe brugt til PDF generering @@ -514,15 +513,15 @@ ModuleCompanyCodeCustomerDigitaria=%s efterfulgt af det afkortede kundenavn med ModuleCompanyCodeSupplierDigitaria=%s efterfulgt af det afkortede leverandørnavn med antallet af tegn: %s for leverandørens regnskabskode. Use3StepsApproval=Indkøbsordrer skal som standard oprettes og godkendes af 2 forskellige brugere (et trin/bruger til at oprette og et trin/bruger til at godkende. Bemærk, at hvis bruger har både tilladelse til at oprette og godkende, vil et trin/bruger være nok) . Du kan med denne mulighed bede om at indføre et tredje trin/brugergodkendelse, hvis beløbet er højere end en dedikeret værdi (så 3 trin vil være nødvendige: 1=validering, 2=første godkendelse og 3=anden godkendelse, hvis beløbet er nok).
Indstil denne til tom, hvis én godkendelse (2 trin) er nok, indstil den til en meget lav værdi (0,1), hvis en anden godkendelse (3 trin) altid er påkrævet. UseDoubleApproval=Brug en 3-trins godkendelse, når beløbet (uden skat) er højere end ... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=BEMÆRK: Opsætningen til at sende e-mails fra applikationen bruger den generiske standardopsætning (kaldet "%s"). Dette valg kræver ingen teknisk viden og ingen særlig opsætning.
Det er dog ofte bedre at konfigurere udgående e-mails til at bruge den anden metode (kaldet " %s") for at bruge din e-mail-tjenesteudbyders e-mail-server i stedet for standardopsætningen af flere årsager: WarningPHPMailA=- Brug af e-mail-tjenesteudbyderens server øger troværdigheden af din e-mail, så det øger leveringsevnen uden at blive markeret som SPAM -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Hvis domænet for din e-mail (delen af mitmaildomæne.com til mit navn@mitmaildomæne.com) er beskyttet af en SPF + en DMARC-record, kan din e-mail blive markeret som SPAM, fordi din DMARC-regel er defineret i DNS-zonen for domænet i domænet. afsender (mymaildomain.com) tillader ikke afsendelsen som en generisk afsender. I et sådant tilfælde skal du deaktivere DMARC for domænet (eller indstille det til p=ingen som gjort af @gmail.com), eller bedre, hvis du har den tekniske viden, bruge den anden metode til at sende e-mails ved hjælp af SMTP'en server hos din egen e-mail-udbyder. WarningPHPMailC=- Det er også interessant at bruge SMTP-serveren fra din egen e-mail-tjenesteudbyder til at sende e-mails, så alle e-mails, der sendes fra applikationen, vil også blive gemt i din "Sendte" mappe i din postkasse. WarningPHPMailD=Det anbefales derfor at ændre afsendelsesmetoden for e-mails til værdien "SMTP". WarningPHPMailDbis=Hvis du virkelig vil beholde standardmetoden "PHP" til at sende e-mails, skal du bare ignorere denne advarsel eller fjerne den ved at %sklikke her%s. WarningPHPMail2=Hvis din e-mail SMTP-udbyder har brug for at begrænse e-mail klienten til nogle IP-adresser (meget sjældent), er dette IP-adressen på mailbrugeragenten (MUA) til din ERP CRM-applikation: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +WarningPHPMailSPF=Hvis domænenavnet i din afsender-e-mailadresse er beskyttet af en SPF-record (spørg din domænenavnsregistrator), skal du tilføje følgende IP'er eller indtastning i SPF-posten for dit domænes DNS: %s. +WarningPHPMailSPFDMARC=Hvis domænenavnet i din afsender-e-mailadresse er beskyttet af en anden DMARC-record end p=none (spørg din domænenavnsregistrator), skal du fjerne din DMARC-record eller indstille den til p=none like do @gmail.com) eller bruge at sende en anden metode. SPFAndDMARCInformation=SPF- og DMARC-DNS-post for hoved-e-mailadresser ActualMailDNSRecordFound=Faktisk %s post fundet (til e-mail %s): %s ClickToShowDescription=Klik for at vise beskrivelse @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter for at rense værdi (COMPANY_DIGITARI DuplicateForbidden=Duplikat forbudt RemoveSpecialWords=Rengør visse ord, når du genererer underkonti til kunder eller leverandører RemoveSpecialWordsHelp=Angiv de ord, der skal renses, før du beregner kunde- eller leverandørkontoen. Brug en ";" mellem hvert ord -GDPRContact=Databeskyttelsesansvarlig (DPO, databeskyttelse eller GDPR-kontakt) +GDPRContact=Databeskyttelsesansvarlig (DPO, databeskyttelse eller GDPR-kontakt, ...) GDPRContactDesc=Hvis du opbevarer personoplysninger i dit informationssystem, kan du her navngive den kontaktperson, der er ansvarlig for GDPR HelpOnTooltip=Hjælpetekst til at vise på værktøjstip HelpOnTooltipDesc=Indsæt tekst eller en oversættelsesnøgle her, så teksten vises i et værktøjstip, når dette felt vises i en formular @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjeparts navn - Tredjeparts alias ALIAS_THIRDPARTY=Tredjeparts alias - Tredjeparts navn PDFIn2Languages=Vis etiketter i PDF'en på 2 forskellige sprog (denne funktion virker muligvis ikke på nogle få sprog) PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil have nogle tekster i din PDF duplikeret på 2 forskellige sprog i den samme genererede PDF, skal du her indstille dette andet sprog, så genereret PDF vil indeholde 2 forskellige sprog på samme side, det der blev valgt ved generering af PDF og dette (kun få PDF-skabeloner understøtter dette). Hold tom for et sprog pr. PDF. -PDF_USE_A=Generer PDF-dokumenter med formatet PDF/A i stedet for standardformatet PDF +PDF_USE_A=PDF-dokumenter format FafaIconSocialNetworksDesc=Indtast her koden for et FontAwesome-ikon. Hvis du ikke ved, hvad FontAwesome er, kan du bruge den generiske værdi fa-address-book. RssNote=Bemærk: Hver RSS-feeddefinition giver en widget, som du skal aktivere for at have den tilgængelig på dashboardet JumpToBoxes=Gå til Opsætning -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Ordbog AddMoreParams=Tilføj flere parametre til forbindelse (cookies, tokens, ...)
Eksempel: token : værditoken ParamName=Navn på parameter ParamValue=Værdi af parameter +ConfirmDeleteParamOfSocialNetwork=Er du sikker på, at du vil slette denne parameter? +HelpMariaDBToGetPossibleValues=Du kan få en liste over mulige værdier ved at køre følgende SQL-kommando: %s +Captcha=Captcha +CaptchaDesc=Hvis du vil beskytte din login-side med en Captcha, kan du vælge, hvilken du vil bruge her +DolibarrStandardCaptcha=En indbygget captcha genereret af Dolibarr diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index 80c05fbf886..064182d666b 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Die Liste der Werte muss aus Zeilen mit dem Format Sch ExtrafieldParamHelpcheckbox=Die Liste der Werte muss aus Zeilen mit dem Format Schlüssel, Wert bestehen (wobei Schlüssel nicht '0' sein darf)

zum Beispiel:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpradio=Die Liste der Werte muss aus Zeilen mit dem Format Schlüssel, Wert bestehen (wobei Schlüssel nicht '0' sein darf)

zum Beispiel:
1, value1
2, value2
3, value3
... ExtrafieldParamHelpsellist=Liste von Werten aus einer Tabelle
Syntax: table_name:label_field:id_field::filtersql
Beispiel: c_typent:libelle:id::filtersql

- id_field ist notwendigerweise ein primärer int-Schlüssel
- filtersql ist eine Bedingung. Es muss die USF-Syntax verwendet werden. Beispiel: (aktiv:=:1) um nur aktive Werte zu zeigen
Sie können auch $ID$ im Filter verwenden, das die aktuelle ID des aktuellen Objekts ist
Wenn Sie nach Extrafeldern filtern möchten, verwenden Sie die Syntax extra.fieldcode=... (wobei fieldcode der Code des Extrafelds ist)

Wenn die Liste von einer anderen Liste mit komplementären Attributen abhängig ist:
c_typent:libelle:ID:options_parent_list_code|parent_column:filter

Um die Liste von einem anderen Liste abhängig zu machen:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste von Werten stammt aus einer Tabelle
Syntax: table_name:label_field:id_field::filtersql
Beispiel: c_typent:libelle:ID::filtersql

Filter kann ein einfacher Test sein (z. B. active=1 um nur aktive Werte zu zeigen)
Sie können auch $ID$ im Filter verwenden, das ist die id des aktuellen Objekts
Um ein SELECT im Filter durchzuführen, verwenden Sie $SEL$
wenn Sie nach Extrafeldern filtern möchten, verwenden Sie die Syntax extra.fieldcode=... (wobei fieldcode der Code des Extrafelds ist)

Damit die Liste von einer anderen ergänzenden Attributliste abhängt:
c_typent:libelle:ID:options_parent_list_code|parent_column:filter

Um die Liste von einer anderen Liste abhängig zu machen:
c_typent:libelle:id:übergeordneter_Listencode|parent_column:filter ExtrafieldParamHelplink=Parameter müssen Objektname:Klassenpfad sein.
Syntax: ObjektName:Classpath ExtrafieldParamHelpSeparator=Für ein einfaches Trennzeichen leer lassen
Setzen Sie diesen Wert für ein ausblendendes Trennzeichen auf 1 (standardmäßig für eine neue Sitzung geöffnet, der Status wird für jede Benutzersitzung beibehalten)
Setzen Sie diesen Wert für ein ausblendendes Trennzeichen auf 2 (standardmäßig für ausgeblendet) neue Sitzung, dann bleibt der Status für jede Benutzersitzung erhalten) LibraryToBuildPDF=Bibliothek zum Erstellen von PDF-Dateien @@ -514,17 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, gefolgt vom abgeschnittenen Kundennamen u ModuleCompanyCodeSupplierDigitaria=%s, gefolgt vom verkürzten Lieferantennamen und der Anzahl der Zeichen: %s für das Lieferantenbuchungskonto (Kreditorenkonto). Use3StepsApproval=Standardmäßig, Einkaufsaufträge müssen durch zwei unterschiedlichen Benutzer erstellt und freigegeben werden (ein Schritt/Benutzer zu erstellen und ein Schritt/Benutzer für die Freigabe). Beachten Sie wenn ein Benutzer beide Rechte hat - zum erstellen und freigeben, dann reicht ein Benutzer für diesen Vorgang. Optional können Sie ein zusätzlicher Schritt/User für die Freigabe einrichten, wenn der Betrag einen bestimmten dedizierten Wert übersteigt (wenn der Betrag übersteigt wird, werden 3 Stufen notwendig: 1=Validierung, 2=erste Freigabe und 3=Gegenfreigabe.
Lassen Sie den Feld leer wenn eine Freigabe (2 Schritte) ausreicht; Tragen Sie einen sehr niedrigen Wert (0.1) wenn eine zweite Freigabe notwendig ist. UseDoubleApproval=3-Stufen-Genehmigung durchführen, wenn der Betrag (ohne Steuern) höher ist als ... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=HINWEIS: Die Konfiguration zum Senden von E-Mails aus dieser Anwendung verwendet die Standardeinstellung (bezeichnet als „%s“). Diese Auswahl erfordert keine technischen Kenntnisse und keine besonderen Konfigurationen.
Allerdings ist es oft besser, ausgehende E-Mails mit einer anderen Methode (bezeichnet als "%s") zu versenden, um den E-Mail-Server Ihres E-Mail-Anbieters für den Versand zu verwenden, und zwar aus mehreren Gründen: WarningPHPMailA=- Die Verwendung des Server des E-Mail Leistung-Providers erhöht die Vertrauenswürdigkeit Ihres E-Mail und verbessert somit die Zustellbarkeit, ohne als SPAM gekennzeichnet zu werden. -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Wenn die Domain Ihrer E-Mail-Adresse (der Teil mymaildomain.com in myname@mymaildomain.com) durch einen SPF und einen DMARC-Eintrag geschützt ist, wird Ihr E-Mail möglicherweise als SPAM gekennzeichnet, da Ihre in der DNS-Zone der Domäne des Absenders (mymaildomain.com) definierte DMARC-Regel das Senden über generische Absender nicht zulässt. In einem solchen Fall müssen Sie DMARC für die Domäne deaktivieren (oder es auf p=none setzen, wie es bei @gmail.com der Fall ist) oder, besser noch, wenn Sie über die technischen Kenntnisse verfügen, die alternative Methode verwenden, um E-Mails über den SMTP-Server Ihres eigenen E-Mail-Anbieters zu senden. WarningPHPMailC=- Interessant ist auch die Verwendung des SMTP-Servers Ihres eigenen E-Mail-Dienstanbieters zum Senden von E-Mails, sodass alle von der Anwendung gesendeten E-Mails auch in dem Verzeichnis "Gesendet" Ihrer Mailbox gespeichert werden. WarningPHPMailD=Es wird daher empfohlen, die Versandart von E-Mails auf den Wert „SMTP“ zu ändern. WarningPHPMailDbis=Wenn Sie wirklich die standardmäßige "PHP"-Methode zum Senden von E-Mails beibehalten möchten, ignorieren Sie einfach diese Warnung oder entfernen Sie sie, indem Sie %shier klicken%s. WarningPHPMail2=Wenn Ihr E-Mail-SMTP-Anbieter den E-Mail-Client auf einige IP-Adressen beschränken muss (sehr selten), dann ist dies die IP-Adresse des Mail User Agent (MUA) für ihr Dolibarr-System: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. -SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses -ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s +WarningPHPMailSPF=Wenn der Domänenname in Ihrer E-Mail-Absenderadresse durch einen SPF-Eintrag geschützt ist (fragen Sie Ihren Domain-Registrar), müssen Sie die folgende IP-Adressen oder Einträge im SPF-Eintrag des DNS Ihrer Domain hinzufügen: %s. +WarningPHPMailSPFDMARC=Wenn der Domain-Name in Ihrer E-Mail-Absenderadresse durch einen anderen DMARC-Eintrag als p=none geschützt ist (fragen Sie Ihren Domain-Registrar), müssen Sie Ihren DMARC-Eintrag entfernen oder ihn auf p=none setzen (z. B. @gmail.com) oder eine andere Sendemethode verwenden. +SPFAndDMARCInformation=SPF und DMARC DNS-Eintrag für E-Mail-Hauptadresse +ActualMailDNSRecordFound=Tatsächlich gefundener %s-Datensatz (für E-Mail %s): %s ClickToShowDescription=Klicke um die Beschreibung zu sehen DependsOn=Diese Modul benötigt folgenden Module RequiredBy=Diese Modul ist für folgende Module notwendig @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-Filter zum Bereinigen des Werts (COMPANY_DIG DuplicateForbidden=Duplizieren nicht zulässig RemoveSpecialWords=Löschen Sie bestimmte Wörter, wenn Sie Buchungskonten für Kunden oder Lieferanten erstellen RemoveSpecialWordsHelp=Geben Sie die vor der Benennung des Kunden- oder Lieferantenkontos zu entfernenden Wörter an. Ein ";" zwischen jedem Wort verwenden. -GDPRContact=Datenschutzbeauftragte(r) +GDPRContact=Datenschutzbeauftragter (Data Protection Officer DPO, Datenschutz- oder DSGVO-Kontakt, …) GDPRContactDesc=Wenn Sie personenbezogene Daten in Ihrem Informationssystem speichern, können Sie hier den für die Datenschutz-Grundverordnung (DSGVO) zuständigen Ansprechpartner benennen HelpOnTooltip=Anzeigen des Hilfetextes im Tooltip HelpOnTooltipDesc=Fügen Sie hier Text oder einen Übersetzungsschlüssel ein, damit der Text in einer QuickInfo angezeigt wird, wenn dieses Feld in einem Formular angezeigt wird @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Name des Geschäftspartners - Alias des Geschäftspartners ALIAS_THIRDPARTY=Alias des Geschäftspartners – Name des Geschäftspartners PDFIn2Languages=Bezeichnungen im PDF in zwei verschiedenen Sprachen anzeigen (diese Funktion funktioniert möglicherweise bei einigen Sprachen nicht) PDF_USE_ALSO_LANGUAGE_CODE=Wenn Sie möchten, dass einige Texte in Ihrem PDF in 2 verschiedenen Sprachen in demselben generierten PDF dupliziert werden, müssen Sie hier diese zweite Sprache festlegen, damit das generierte PDF zwei verschiedene Sprachen auf derselben Seite enthält, die beim Generieren von PDF ausgewählte und diese (dies wird nur von wenigen PDF-Vorlagen unterstützt). Für 1 Sprache pro PDF leer halten. -PDF_USE_A=PDF-Dokumente im Format PDF/A erstellen anstelle des Standardformats PDF +PDF_USE_A=PDF-Dokumentenformat FafaIconSocialNetworksDesc=Geben Sie hier den Code für ein FontAwesome-Icon ein. Wenn Sie FontAwesome nicht kennen, können Sie den Standard 'fa-address-book' benutzen. RssNote=Hinweis: Jede RSS-Feed-Definition enthält ein Widget, das Sie aktivieren müssen, damit es im Dashboard verfügbar ist JumpToBoxes=Wechseln Sie zu Einstellungen -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Weitere Verbindungsparameter hinzufügen (Cookies, Tokens, ...)
Beispiel: token : value token ParamName=Name des Parameters ParamValue=Wert des Parameters +ConfirmDeleteParamOfSocialNetwork=Sind Sie sicher, dass Sie diesen Parameter löschen wollen? +HelpMariaDBToGetPossibleValues=Sie können eine Liste aller möglicher Werte abrufen, indem Sie den folgenden SQL-Befehl ausführen: %s +Captcha=Captcha +CaptchaDesc=Wenn Sie Ihre Anmeldeseite mit einem Captcha schützen möchten, können Sie hier auswählen, welches Sie verwenden möchten +DolibarrStandardCaptcha=Ein natives Captcha, generiert von Dolibarr diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index bb0cf58cd4a..8706978a8f2 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Η λίστα των τιμών πρέπει να εί ExtrafieldParamHelpcheckbox=Η λίστα των τιμών πρέπει να είναι γραμμές με βασική μορφή, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1,value1
2,value2
3, value3
... ExtrafieldParamHelpradio=Η λίστα των τιμών πρέπει να είναι γραμμές με βασικό σχήμα, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1,value1
2,value2
3, value3
... ExtrafieldParamHelpsellist=Η λίστα τιμών προέρχεται από έναν πίνακα
Σύνταξη: table_name:label_field:id_field::filtersql
Παράδειγμα: c_typent:libelle:id::filtersql

- id_field είναι απαραίτητα ενα πρωτεύον κλειδί int
- filtersql είναι προϋπόθεση. Πρέπει να χρησιμοποιεί τη σύνταξη USF. Παράδειγμα: (active:=:1) για εμφάνιση μόνο ενεργής τιμής
Μπορείτε επίσης να χρησιμοποιήσετε το $ID$ στο φίλτρο που είναι το τρέχον αναγνωριστικό του τρέχοντος αντικειμένου
εάν θέλετε να φιλτράρετε σε extrafields, χρησιμοποιήστε τη σύνταξη extra.fieldcode=... (όπου ο κωδικός πεδίου είναι ο κωδικός του extrafield)

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα:
c_typent: Libelle: id: options_ parent_list_code|parent_column:filter

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη:
c_typent: libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Η λίστα τιμών προέρχεται από έναν πίνακα
Σύνταξη: table_name:label_field:id_field::filtersql
Παράδειγμα: c_typent:libelle:id::filtersql

το φίλτρο μπορεί να είναι μια απλή δοκιμή (π.χ. active=1) για να εμφανιστεί μόνο η ενεργή τιμή
Μπορείτε επίσης να χρησιμοποιήσετε το $ID$ στο φίλτρο που είναι το τρέχον αναγνωριστικό του τρέχοντος αντικειμένου
Για να κάνετε SELECT στο φίλτρο χρησιμοποιήστε το $SEL$
εάν θέλετε να φιλτράρετε σε extrafields, χρησιμοποιήστε τη σύνταξη extra.fieldcode=... (όπου ο κωδικός πεδίου είναι ο κωδικός του extrafield)

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα:
c_typent: Libelle:id:options_ parent_list_code|parent_column:filter

Για να μπορεί η λίστα να είναι εξαρτώμενη από μια άλλη:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:ClasspathSyntax:
ObjectName:Classpath ExtrafieldParamHelpSeparator=Διατήρηση κενού για ένα απλό διαχωριστικό
Ορίστε το σε 1 για ένα διαχωριστικό που συμπτύσσεται (ανοιχτό από προεπιλογή για νέα περίοδο λειτουργίας, μετά διατηρείται η κατάσταση για κάθε συνεδρία χρήστη)
Ορίστε το σε 2 για ένα διαχωριστικό που συμπτύσσεται (συμπτυγμένο από προεπιλογή και στη συνέχεια για νέα περίοδο λειτουργίας, η κατάσταση διατηρείται για κάθε συνεδρία χρήστη) LibraryToBuildPDF=Βιβλιοθήκη ενεργοποίησης δημιουργίας PDF @@ -514,17 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s που ακολουθείται από τ ModuleCompanyCodeSupplierDigitaria=%s που ακολουθείται από το κομμένο όνομα προμηθευτή με τον αριθμό χαρακτήρων: %s για τον κωδικό λογιστικής προμηθευτή. Use3StepsApproval=Από προεπιλογή, οι παραγγελίες αγοράς πρέπει να δημιουργούνται και να εγκρίνονται από 2 διαφορετικούς χρήστες (ένα χρήστη για δημιουργία και ένα χρήστη για έγκριση. Λάβετε υπόψη ότι εάν ο χρήστης έχει δικαιώματα δημιουργίας και έγκρισης, ένας χρήστης αρκεί) . Μπορείτε να ζητήσετε με αυτήν την επιλογή να εισάγετε έγκριση ενός τρίτου χρήστη, εάν το ποσό είναι υψηλότερο από μια συγκεκριμένη τιμή (άρα θα χρειαστούν 3 βήματα: 1=επικύρωση, 2=πρώτη έγκριση και 3=δεύτερη έγκριση εάν το ποσό είναι υψηλό).
Αφήστε το κενό εάν μια έγκριση (2 βήματα) είναι αρκετή, Ενώ αν πάντα απαιτείται μια δεύτερη έγκριση (3 βήματα ορίστε την σε πολύ χαμηλή τιμή (0,1). UseDoubleApproval=Χρησιμοποιήστε μια έγκριση 3 βημάτων όταν το ποσό (χωρίς φόρο) είναι υψηλότερο από... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ρύθμιση για την αποστολή email από την εφαρμογή χρησιμοποιεί την προεπιλεγμένη γενική ρύθμιση (με ονομασία "%s"). Αυτή η επιλογή δεν χρειάζεται τεχνικές γνώσεις για την ολοκλήρωση της ρύθμισης.
Ωστόσο, είναι συχνά καλύτερο για την ρύθμιση των εξερχόμενων email να χρησιμοποιείτε την μέθοδο (με ονομασία "%s") χρησιμοποιώντας τον διακομιστή email του παρόχου υπηρεσιών email σας αντί για την προεπιλεγμένη ρύθμιση για διάφορος λόγους: WarningPHPMailA=- Η χρήση του διακομιστή του παρόχου υπηρεσιών email αυξάνει την αξιοπιστία του email σας, επομένως αυξάνει την πιθανότητα παράδοσης των μηνυμάτων σας χωρίς να επισημαίνονται ως SPAM -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Εάν το domain του email σας (το τμήμα mymaildomain.com απο το myname@mymaildomain.com) προστατεύεται από μια SPF + DMARC εγγραφή , το email σας μπορεί να επισημανθεί ως SPAM επειδή ο κανόνας DMARC που εχει ορίστει στη DNS zone του domain του αποστολέα (mymaildomain.com) δεν επιτρέπει την αποστολή ως γενικός αποστολέας. Σε μια τέτοια περίπτωση, πρέπει να απενεργοποιήσετε το DMARC για το domain (ή να το ορίσετε σε p=none όπως γίνεται από το @gmail.com) ή, καλύτερα, εάν έχετε τις τεχνικές γνώσεις, να χρησιμοποιήσετε την άλλη μέθοδο για να στείλετε email χρησιμοποιώντας τον SMTP διακομιστή του δικού σας παρόχου email. WarningPHPMailC=- Η χρήση του διακομιστή SMTP του δικού σας Παρόχου Υπηρεσιών Email για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου είναι επίσης χρήσιμη καθώς όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται από την εφαρμογή θα αποθηκεύονται και στον κατάλογο "Απεσταλμένα" του γραμματοκιβωτίου σας. WarningPHPMailD=Επομένως, συνιστάται η αλλαγή της μεθόδου αποστολής μηνυμάτων ηλεκτρονικού ταχυδρομείου στην τιμή "SMTP". WarningPHPMailDbis=Εάν θέλετε πραγματικά να διατηρήσετε την προεπιλεγμένη μέθοδο "PHP" για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου, απλώς αγνοήστε αυτήν την προειδοποίηση ή αφαιρέστε την %sκάνοντας κλικ εδώ%s. WarningPHPMail2=Εάν ο πάροχος σας SMTP email χρειάζεται να περιορίσει το πρόγραμμα-πελάτη email σε ορισμένες διευθύνσεις IP (σπάνια), αυτή είναι η διεύθυνση IP του mail user agent (MUA) για την εφαρμογή σας ERP CRM: %s . -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. -SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses -ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s +WarningPHPMailSPF=Εάν το domain name στη διεύθυνση email σας προστατεύεται από μια εγγραφή SPF (ρωτήστε τον καταχωρητή του domain name σας), πρέπει να προσθέσετε τις ακόλουθες διευθύνσεις IP ή καταχώριση στην εγγραφή SPF του DNS του domain σας: %s. +WarningPHPMailSPFDMARC=Εάν το domain name στη διεύθυνση email σας προστατεύεται από μια εγγραφή DMARC διαφορετική από το p=none (ρωτήστε τον καταχωρητή του domain name σας), πρέπει να αφαιρέσετε την εγγραφή DMARC ή να την ορίσετε σε p=none όπως το @gmail.com) ή χρησιμοποιήστε άλλη μέθοδο αποστολής. +SPFAndDMARCInformation=SPF και DMARC DNS εγγραφή για κύριες διευθύνσεις email +ActualMailDNSRecordFound=Βρέθηκε πραγματική εγγραφή %s (για το email %s) : %s ClickToShowDescription=Κάντε κλικ για να εμφανιστεί η περιγραφή DependsOn=Αυτή η ενότητα εξαρτάται από τις ενότητες RequiredBy=Αυτή η ενότητα απαιτείται από τις ενότητες @@ -592,8 +591,8 @@ Module52Name=Αποθέματα Module52Desc=Διαχείριση αποθεμάτων (παρακολούθηση κίνησης αποθεμάτων και απογραφής) Module53Name=Υπηρεσίες Module53Desc=Διαχείριση Υπηρεσιών -Module54Name=Συμβόλαια / Συνδρομές -Module54Desc=Διαχείριση συμβολαίων (υπηρεσίες ή επαναλαμβανόμενες συνδρομές) +Module54Name=Συμβάσεις / Συνδρομές +Module54Desc=Διαχείριση συμβάσεων (υπηρεσίες ή επαναλαμβανόμενες συνδρομές) Module55Name=Barcodes Module55Desc=Διαχείριση γραμμωτού κώδικα(Barcode) ή κώδικα QR Module56Name=Πληρωμή μέσω μεταφοράς πίστωσης @@ -815,12 +814,12 @@ Permission151=Ανάγνωση εντολών πληρωμής άμεσης χρ Permission152=Δημιουργία / τροποποίηση εντολών πληρωμής άμεσης χρέωσης Permission153=Αποστολή / Αποστολή εντολών πληρωμής άμεσης χρέωσης Permission154=Πιστωτικές εγγραφές / απορρίψεις εντολών πληρωμής άμεσης χρέωσης -Permission161=Ανάγνωση συμβολαίων/συνδρομών -Permission162=Δημιουργία/τροποποίηση συμβολαίων/συνδρομών -Permission163=Ενεργοποίηση υπηρεσίας/συνδρομής ενός συμβολαίου -Permission164=Απενεργοποίηση υπηρεσίας/συνδρομής ενός συμβολαίου -Permission165=Διαγραφή συμβολαίων/συνδρομών -Permission167=Εξαγωγή συμβολαίων +Permission161=Ανάγνωση συμβάσεων/συνδρομών +Permission162=Δημιουργία/τροποποίηση συμβάσεων/συνδρομών +Permission163=Ενεργοποίηση υπηρεσίας/συνδρομής μιας σύμβασης +Permission164=Απενεργοποίηση υπηρεσίας/συνδρομής μιας σύμβασης +Permission165=Διαγραφή συμβάσεων/συνδρομών +Permission167=Εξαγωγή συμβάσεων Permission171=Ανάγνωση ταξιδίων και εξόδων (δικά σας και των υφισταμένων σας) Permission172=Δημιουργία/τροποποίηση ταξιδιών και εξόδων Permission173=Διαγραφή ταξιδιών και εξόδων @@ -885,7 +884,7 @@ Permission301=Δημιουργια PDF καταστάσεων με barcodes Permission304=Δημιουργία / τροποποίηση barcodes Permission305=Διαγραφή barcodes Permission311=Ανάγνωση υπηρεσιών -Permission312=Εκχώρηση υπηρεσίας/συνδρομής σε συμβόλαιο +Permission312=Εκχώρηση υπηρεσίας/συνδρομής σε σύμβαση Permission331=Ανάγνωση σελιδοδεικτών Permission332=Δημιουργία / τροποποίηση σελιδοδεικτών Permission333=Διαγραφή σελιδοδεικτών @@ -1998,7 +1997,7 @@ YouMayFindNotificationsFeaturesIntoModuleNotification=Μπορείτε να βρ TemplatesForNotifications=Πρότυπα email για ειδοποιήσεις ListOfNotificationsPerUser=Λίστα αυτόματων ειδοποιήσεων ανά χρήστη* ListOfNotificationsPerUserOrContact=Λίστα πιθανών αυτόματων ειδοποιήσεων (σε επιχειρηματικό συμβάν) διαθέσιμων ανά χρήστη * ή ανά επαφή ** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=Email παραληπτών για αυτόματες ειδοποιήσεις GoOntoUserCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" ενός χρήστη για να προσθέσετε ή να αφαιρέσετε ειδοποιήσεις για τους χρήστες GoOntoContactCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" τρίτου μέρους για να προσθέσετε ή να καταργήσετε ειδοποιήσεις για επαφές / διευθύνσεις Threshold=Κατώφλι @@ -2063,7 +2062,7 @@ MailToSendIntervention=Παρεμβάσεις MailToSendSupplierRequestForQuotation=Αίτημα προσφοράς MailToSendSupplierOrder=Εντολές αγοράς MailToSendSupplierInvoice=Τιμολόγια προμηθευτή -MailToSendContract=Συμβόλαια +MailToSendContract=Συμβάσεις MailToSendReception=Παραλαβές MailToExpenseReport=Αναφορές εξόδων MailToThirdparty=Τρίτα μέρη @@ -2220,7 +2219,7 @@ CreateCandidature=Δημιουργία αίτησης εργασίας FormatZip=Zip MainMenuCode=Κωδικός εισόδου μενού (mainmenu) ECMAutoTree=Εμφάνιση αυτόματης δομής ECM -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a new line to extract or set several properties. +OperationParamDesc=Καθορίστε τους κανόνες που θα χρησιμοποιηθούν για την εξαγωγή ορισμένων δεδομένων ή τον ορισμό τιμών που θα χρησιμοποιηθούν για την λειτουργία.

Παράδειγμα εξαγωγής ενός string από την κεφαλίδα ,το θέμα η το σώμα του email σε μια προσωρινή μεταβλητή:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Παραδείγματα ρύθμισης ιδιοτήτων ενός αντικειμένου προς δημιουργία:
objproperty1=SET:μια προκαθορισμένη τιμή
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:μια τιμή (αρκεί να μην έχει ήδη οριστεί η ιδιότητα)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY: το όνομα της εταιρείας είναι\\s([^\\s]*)

Χρησιμοποιήστε ένα new line για την εξαγωγή η τον ορισμό αρκετών ιδιοτήτων. OpeningHours=Ώρες λειτουργίας OpeningHoursDesc=Εισάγετε εδώ το κανονικό ωράριο λειτουργίας της εταιρείας σας. ResourceSetup=Διαμόρφωση της ενότητας πόρων @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Όνομα τρίτου μέρους - Διακριτικός ALIAS_THIRDPARTY=Διακριτικός τίτλος τρίτου μέρους - Όνομα τρίτου μέρους PDFIn2Languages=Εμφάνιση ετικετών σε 2 διαφορετικές γλώσσες στα PDF PDF_USE_ALSO_LANGUAGE_CODE=Εάν θέλετε να έχετε κείμενα σε 2 διαφορετικές γλώσσες στο ίδιο PDF, πρέπει να ορίσετε εδώ αυτή τη δεύτερη γλώσσα ώστε το PDF που θα δημιουργηθεί να περιέχει 2 διαφορετικές γλώσσες στην ίδια σελίδα ( μόνο λίγα πρότυπα PDF το υποστηρίζουν). Διατηρήστε το κενό για 1 γλώσσα ανά PDF. -PDF_USE_A=Δημιουργήστε έγγραφα PDF με μορφή PDF/A αντί για την προεπιλεγμένη μορφή PDF +PDF_USE_A=Μορφή εγγράφων PDF FafaIconSocialNetworksDesc=Εισαγάγετε εδώ τον κωδικό ενός εικονιδίου FontAwesome. Εάν δεν γνωρίζετε τι είναι το FontAwesome, μπορείτε να χρησιμοποιήσετε τη γενική τιμή fa-address-book. RssNote=Σημείωση: Κάθε ορισμός ροής RSS παρέχει ένα γραφικό στοιχείο που πρέπει να ενεργοποιήσετε για να το έχετε διαθέσιμο στον πίνακα εργαλείων JumpToBoxes=Μετάβαση σε Ρυθμίσεις -> Γραφικά στοιχεία @@ -2347,7 +2346,7 @@ DashboardDisableBlockAgenda=Απενεργοποίηση του εικονιδί DashboardDisableBlockProject=Απενεργοποίηση του εικονίδιου για έργα DashboardDisableBlockCustomer=Απενεργοποίηση του εικονιδίου για πελάτες DashboardDisableBlockSupplier=Απενεργοποίηση του εικονιδίου για προμηθευτές -DashboardDisableBlockContract=Απενεργοποίηση του εικονιδίου για συμβόλαια +DashboardDisableBlockContract=Απενεργοποίηση του εικονιδίου για συμβάσεις DashboardDisableBlockTicket=Απενεργοποίηση του εικονιδίου για tickets DashboardDisableBlockBank=Απενεργοποίηση του εικονιδίου για τράπεζες DashboardDisableBlockAdherent=Απενεργοποίηση του εικονιδίου για συνδρομές @@ -2555,3 +2554,8 @@ MenuDict=Λεξικό AddMoreParams=Προσθήκη περισσοτέρων παραμέτρων σύνδεσης (cookies, tokens, ...)
Παράδειγμα: token : value token ParamName=Όνομα παραμέτρου ParamValue=Τιμή παραμέτρου +ConfirmDeleteParamOfSocialNetwork=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη παραμέτρο ; +HelpMariaDBToGetPossibleValues=Μπορείτε να λάβετε μια λίστα με πιθανές τιμές εκτελώντας την ακόλουθη εντολή SQL: %s +Captcha=Captcha +CaptchaDesc=Εάν θέλετε να προστατεύσετε τη σελίδα σύνδεσής με ένα Captcha, μπορείτε να επιλέξετε ποιo να χρησιμοποιήσετε εδώ +DolibarrStandardCaptcha=Ένα captcha που δημιουργήθηκε από τον Dolibarr diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 698548254b8..ec723e88812 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -42,7 +42,7 @@ TypeOfLeaveId=Type of leave ID TypeOfLeaveCode=Type of leave code TypeOfLeaveLabel=Type of leave label NbUseDaysCP=Number of days -NbUseDaysCPHelp=The calculation of the number of days of leave used takes into account the non-working days and the holidays defined in the dictionary. +NbUseDaysCPHelp=The calculation of the number of vacation days used takes into account the non-working days and public holidays defined in the dictionary. NbUseDaysCPShort=Days of leave NbUseDaysCPShortInMonth=Days of leave in month DayIsANonWorkingDay=%s is a non-working day diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index f4dc71f6632..b5ed0f8bfb7 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -558,7 +558,6 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó NothingToSetup=No se requiere ninguna configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establézcalo en sí si este grupo es un cálculo de otros grupos COMPANY_AQUARIUM_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el valor (COMPANY_AQUARIUM_CLEAN_REGEX) -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 909b613585b..cd72dd155d3 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -1255,7 +1255,6 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó NothingToSetup=No se requiere ninguna configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establezca esto en sí si este grupo es un cálculo de otros grupos SeveralLangugeVariatFound=Varias variantes de lenguaje encontradas -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index 650f6dea4c3..32a83dcc3d3 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -1460,7 +1460,6 @@ EnterCalculationRuleIfPreviousFieldIsYes=Ingrese la regla de cálculo si el camp RemoveSpecialChars=Quitar caracteres especiales COMPANY_AQUARIUM_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el valor (COMPANY_AQUARIUM_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CR/admin.lang b/htdocs/langs/es_CR/admin.lang index 686edf2a5c1..6b22370b3a6 100644 --- a/htdocs/langs/es_CR/admin.lang +++ b/htdocs/langs/es_CR/admin.lang @@ -1471,7 +1471,6 @@ SetToYesIfGroupIsComputationOfOtherGroups=Establézcalo en sí si este grupo es COMPANY_AQUARIUM_NO_PREFIX=No use el prefijo, solo copie el código de cliente o proveedor COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpiar valor (COMPANY_DIGITARIA_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Delegado de Protección de Datos (contacto DPO, Privacidad de Datos o RGPD) HelpOnTooltip=Texto de ayuda para mostrar en la información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_CU/admin.lang b/htdocs/langs/es_CU/admin.lang index 5a9650e4a5e..5848d1f21f2 100644 --- a/htdocs/langs/es_CU/admin.lang +++ b/htdocs/langs/es_CU/admin.lang @@ -1452,7 +1452,6 @@ NothingToSetup=No se requiere una configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establézcalo en sí si este grupo es un cálculo de otros grupos COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpiar valor (COMPANY_DIGITARIA_CLEAN_REGEX) RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Usar una ";" entre cada palabra -GDPRContact=Delegado de Protección de Datos (contacto DPO, Privacidad de Datos o RGPD) HelpOnTooltip=Texto de ayuda para mostrar en la información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index 5a335e607b4..d2e01735947 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -1321,7 +1321,6 @@ WarningInstallationMayBecomeNotCompliantWithLaw=Está intentando instalar el mó NothingToSetup=No se requiere ninguna configuración específica para este módulo. SetToYesIfGroupIsComputationOfOtherGroups=Establezca esto en "sí" si este grupo es un cálculo de otros grupos SeveralLangugeVariatFound=Algunas variantes de lenguaje -GDPRContact=Oficial de protección de datos (DPO, privacidad de datos o contacto GDPR) HelpOnTooltip=Texto de ayuda para mostrar en información sobre herramientas HelpOnTooltipDesc=Coloque texto o una clave de traducción aquí para que el texto se muestre en una información sobre herramientas cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo en el servidor con la línea de comandos:
%s diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index e2e936146c3..a6bed48d2cd 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=El listado de valores tiene que ser líneas key,valor< ExtrafieldParamHelpcheckbox=El listado de valores tiene que ser líneas con el formato key,valor

por ejemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=El listado de valores tiene que ser líneas con el formato key,valor (donde key no puede ser 0)

por ejemplo:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Los parámetros deben ser NombreObjeto:RutaClase
Sintaxis: NombreObjeto:RutaClase ExtrafieldParamHelpSeparator=Mantener vacío para un separador simple
Establezca a 1 para un separador de colapso (abierto de forma predeterminada para una nueva sesión, luego el estado se mantiene para cada sesión de usuario)
Establezca a 2 para un separador de colapso (colapsado por defecto para una nueva sesión, luego el estado se mantiene para cada sesión de usuario) LibraryToBuildPDF=Libreria usada en la generación de los PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el va DuplicateForbidden=Duplicado prohibido RemoveSpecialWords=Limpiar ciertas palabras al generar subcuentas para clientes o proveedores RemoveSpecialWordsHelp=Especifique las palabras que se limpiarán antes de calcular la cuenta del cliente o proveedor. Utilizar una ";" entre cada palabra -GDPRContact=Oficina Protección de datos (DPO, Políticas de privacidad o contacto GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Si almacena datos personales en su Sistema de Información, puede nombrar al contacto responsable del Reglamento General de Protección de Datos aquí HelpOnTooltip=Texto de ayuda a mostrar en la ventana emergente HelpOnTooltipDesc=Coloque aquí un texto o una clave de traducción para mostrar información emergente cuando este campo aparezca en un formulario @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nombre de terceros: alias de terceros ALIAS_THIRDPARTY=Alias de terceros: nombre de terceros PDFIn2Languages=Mostrar etiquetas en el PDF en 2 idiomas diferentes (es posible que esta función no funcione para algunos idiomas) PDF_USE_ALSO_LANGUAGE_CODE=Si desea duplicar algunos textos en su PDF en 2 idiomas diferentes en el mismo PDF generado, debe establecer aquí este segundo idioma para que el PDF generado contenga 2 idiomas diferentes en la misma página, el elegido al generar el PDF y este ( solo unas pocas plantillas PDF lo admiten). Mantener vacío para 1 idioma por PDF. -PDF_USE_A=Genere documentos PDF con formato PDF/A en lugar del formato PDF predeterminado +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ingrese aquí el código de un ícono FontAwesome. Si no sabe qué es FontAwesome, puede usar el valor genérico fa-address-book. RssNote=Nota: Cada definición de fuente RSS proporciona un widget que debe habilitar para que esté disponible en el tablero JumpToBoxes=Vaya a Configuración -> Módulos @@ -2555,3 +2554,8 @@ MenuDict=Diccionario AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Nombre del parámetro ParamValue=Valor del parámetro +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 9a975f69d7a..6e056f3c55c 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=فهرست مقادیر باید به صورت سطو ExtrafieldParamHelpcheckbox=فهرست مقادیر باید سطوری به شکل key,value باشد که (که key نمی‌تواند برابر با 0 باشد)

برای مثال:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=فهرست مقادیر باید سطوری به شکل key,value باشد که (که key نمی‌تواند برابر با 0 باشد)

برای مثال:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) LibraryToBuildPDF=کتابخانۀ قابل استفاده برای تولید PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLE DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=مأمور حفاظت داده‌ها (DPO، حریم خصوصی یا طرف‌تماس GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=متن راهنما برای نمایش کادر‌نکات HelpOnTooltipDesc=یک نوشته یا یک کلید ترجمه در اینجا برای نوشته وارد کنید که در هنگامی که این بخش در برگه نمایش داده می‌شود به‌عنوان یک کادرراهنمائی نمایش داده شود @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard JumpToBoxes=Jump to Setup -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index 1502e6336a3..685b66989c3 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=Arvoluettelon on oltava rivejä, joissa on muoto: avain,arvo (missä avain ei voi olla 0)

esimerkiksi:
1,arvo1
2,arvo2
3,arvo3
... ExtrafieldParamHelpradio=Arvoluettelon on oltava rivejä, joissa on muoto: avain,arvo (missä avain ei voi olla 0)

esimerkiksi:
1,arvo1
2,arvo2
3,arvo3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrien on oltava ObjectName:Classpath
Syntaksi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Pidä tyhjänä yksinkertainen erotin
Aseta tämän arvoksi 1, jos haluat tiivistävän erottimen (avaa oletus uutta istuntoa varten, tila on säilytetään jokaista käyttäjäistuntoa varten)
Aseta tämän arvoksi 2 tiivistyvälle erottimelle (kutistaa oletus uutta istuntoa varten, tila on säilytetään jokaista käyttäjäistuntoa varten) LibraryToBuildPDF=Käytettävä kirjasto PDF:n luomiseen @@ -782,7 +781,7 @@ Permission87=Sulje asiakkaiden tilauksia Permission88=Peruuta asiakkaiden tilauksia Permission89=Poista asiakkaiden tilauksia Permission91=Lue sosiaalinen tai verotus Verot ja alv -Permission92=luo/modify sosiaalinen tai verotus Verot ja alv +Permission92=Luo/Muokkaa sosiaalimaksu / vero tai alv Permission93=Poista sosiaalinen tai verotus Verot ja alv Permission94=Vie sosiaalinen tai verotus Verot Permission95=Lue raportit @@ -1356,7 +1355,7 @@ ShowProfIdInAddress=Näytä ammattitunnus osoitteineen ShowVATIntaInAddress=Piilota yhteisön sisäinen ALV-numero ShowLegalFormInAddress=Näytä oikeudellinen muoto osoitteiden kanssa TranslationUncomplete=Osittainen käännös -MAIN_DISABLE_METEO=Poista sääpeukalo käytöstä +MAIN_DISABLE_METEO=Piilota sää widget MeteoStdMod=Standardi tila MeteoStdModEnabled=Standardi tila aktivoitu MeteoPercentageMod=Prosenttitila @@ -1516,7 +1515,7 @@ SupplierProposalSetup=Hintapyynnöt Toimittajat moduulin asetukset SupplierProposalNumberingModules=Hintapyynnöt Toimittajat numerointimallit SupplierProposalPDFModules=Hintapyynnöt Toimittajat asiakirjamallit FreeLegalTextOnSupplierProposal=Vapaa teksti hintapyyntöihin Toimittajat -WatermarkOnDraftSupplierProposal=vesileima Luonnos hintapyynnöissä Toimittajat (ei mitään, jos tyhjä) +WatermarkOnDraftSupplierProposal=Vesileima toimittajan hintapyyntöluonnoksissa (ei mitään, jos tyhjä) BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Kysy hintapyynnön pankkitilin kohde WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Pyydä lähdevarasto tilaukselle ##### Suppliers Orders ##### @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-suodatin arvon puhdistamiseen (COMPANY_DIGIT DuplicateForbidden=Kopiointi kielletty RemoveSpecialWords=Puhdista tietyt sanat luodessasi alatilejä asiakkaat tai Toimittajat RemoveSpecialWordsHelp=Määritä puhdistettavat sanat ennen asiakas- tai toimittaja-tilin laskemista. Käytä ";" jokaisen sanan välissä -GDPRContact=Tietosuojavastaava (tietosuojavastaava, tietosuoja- tai GDPR-yhteyshenkilö) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jos tallennat henkilötietoja tietojärjestelmääsi, voit nimetä tästä yhteyshenkilön, joka on vastuussa yleisestä tietosuoja-asetuksesta HelpOnTooltip=Ohjeteksti näytettäväksi työkaluvihjeessä HelpOnTooltipDesc=Lisää teksti tai käännösavain tähän, jotta teksti näkyy työkaluvihjessä, kun tämä kenttä näkyy lomakkeessa @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Kolmannen osapuolen nimi – Kolmannen osapuolen alias ALIAS_THIRDPARTY=Kolmannen osapuolen alias - Kolmannen osapuolen nimi PDFIn2Languages=Näytä tarrat PDF-tiedostossa kahdella eri kielellä (tämä ominaisuus ei ehkä toimi joillakin kielillä) PDF_USE_ALSO_LANGUAGE_CODE=Jos haluat, että PDF-tiedostosi tekstit kopioidaan kahdella eri kielellä samaan luotuun PDF-tiedostoon, sinun on asetettava tähän toinen Kieli, jotta luotu PDF sisältää kaksi eri kieltä samalla tavalla. sivu, joka valittiin PDF-tiedostoa luotaessa ja tämä (vain harvat PDF-mallit tukevat tätä). Pidä tyhjänä 1 Kieli PDF-tiedostoa kohden. -PDF_USE_A=Luo PDF-dokumentteja PDF/A-muodossa oletus-muotoisen PDF:n sijaan +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Kirjoita tähän FontAwesome-kuvakkeen koodi. Jos et tiedä mikä on FontAwesome, voit käyttää yleistä arvoa fa-osoitekirjaa. RssNote=Huomautus: Jokainen RSS-syötteen määritelmä sisältää widgetin, joka sinun on otettava käyttöön, jotta se on käytettävissä kojelaudassa JumpToBoxes=Siirry kohtaan Asetukset -> Widgetit @@ -2340,19 +2339,19 @@ InstallLockedBy=Asennuksen/uudelleenasennuksen lukitsee tiedosto %s InstallOfAddonIsNotBlocked=Lisäosien asennuksia ei ole lukittu. luo a tiedosto installmodules.lock hakemistoon %sb09a4b739f17-to block-asennus ulkoisista lisäosista/moduuleista. OldImplementation=Vanha toteutus PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Jos jotkin online-maksu-moduulit ovat käytössä (Paypal, Stripe, ...), lisää linkki PDF-tiedostoon, jotta online-maksu span> -DashboardDisableGlobal=Poista maailmanlaajuisesti käytöstä kaikki avoimien objektien peukalot +DashboardDisableGlobal=Piilota kaikki avointen objektien widgetit BoxstatsDisableGlobal=Poista laatikon tilastot kokonaan käytöstä -DashboardDisableBlocks=Avointen objektien peukalot (käsiteltävä tai myöhässä) päähallintapaneelissa -DashboardDisableBlockAgenda=Poista peukalo käytöstä esityslistaa varten -DashboardDisableBlockProject=Poista peukalo käytöstä Projektit -DashboardDisableBlockCustomer=Poista peukalo käytöstä asiakkaat -DashboardDisableBlockSupplier=Poista peukalo käytöstä Toimittajat -DashboardDisableBlockContract=Poista peukalo käytöstä sopimuksissa -DashboardDisableBlockTicket=Poista lippujen peukalo käytöstä -DashboardDisableBlockBank=Poista pankkien peukalo käytöstä -DashboardDisableBlockAdherent=Poista peukalo käytöstä jäsenyyksiä varten -DashboardDisableBlockExpenseReport=Poista peukalo käytöstä kuluraportit -DashboardDisableBlockHoliday=Poista lehtien peukalo käytöstä +DashboardDisableBlocks=Piilota avointen objektien widgetit (käsiteltävä tai myöhässä) päähallintapaneelista +DashboardDisableBlockAgenda=Piilota agenda widget +DashboardDisableBlockProject=Piilota projekti widget +DashboardDisableBlockCustomer=Piilota asiakkaat widget +DashboardDisableBlockSupplier=Piilota toimittajat widget +DashboardDisableBlockContract=Piilota sopimukset widget +DashboardDisableBlockTicket=Piilota tiketti widget +DashboardDisableBlockBank=Piilota pankki widget +DashboardDisableBlockAdherent=Piilota jäsenyydet widget +DashboardDisableBlockExpenseReport=Piilota kuluraportit widget +DashboardDisableBlockHoliday=Piilota loma widget EnabledCondition=Edellytys, että Kenttä on käytössä (jos ei ole käytössä, näkyvyys on aina pois päältä) IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Jos haluat käyttää toista vero, sinun on otettava käyttöön myös ensimmäinen myynti vero IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Jos haluat käyttää kolmatta vero, sinun on otettava käyttöön myös ensimmäinen myynti vero @@ -2555,3 +2554,8 @@ MenuDict=Sanakirja AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Parametri ParamValue=Arvo +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index 0b9bb027202..43e82588a9d 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -169,10 +169,14 @@ LastActivationAuthor=Dernier auteur d'activation LastActivationIP=Dernière activation IP GenericMaskCodes=Vous pouvez saisir n'importe quel masque de numérotation. Dans ce masque, les balises suivantes peuvent être utilisées :
{000000} correspond à un nombre qui sera incrémenté à chaque %s. Entrez autant de zéros que la longueur souhaitée du compteur. Le compteur sera complété par des zéros en partant de la gauche afin d'avoir autant de zéros que le masque.
{000000+000} identique au précédent mais un décalage correspondant au nombre à droite du signe + est appliqué à partir du premier %s.
{000000@x} identique au précédent mais le compteur est remis à zéro lorsque le mois x est atteint (x compris entre 1 et 12, ou 0 pour utiliser les premiers mois de l'exercice défini dans votre configuration, ou 99 pour une remise à zéro tous les mois). Si cette option est utilisée et que x est égal ou supérieur à 2, alors la séquence {aa}{mm} ou {aaaa}{mm} est également requise.
{dd} jour (01 à 31).
{mm} mois (01 à 12).
{yy}, {aaaa} ou {y} année sur 2, 4 ou 1 numéros.
GenericMaskCodes2={cccc} le code client sur n caractères
{cccc000} le code client sur n caractères est suivi d'un compteur dédié au client. Ce compteur dédié au client est réinitialisé en même temps que le compteur global.
{tttt} Le code du tiers type sur n caractères (voir menu Accueil - Paramétrage - Dictionnaire - Types de tiers). Si vous ajoutez cette balise, le compteur sera différent pour chaque type de tiers.
+GenericMaskCodes2b={uuuu} les n premiers caractères du nom de famille de l'utilisateur qui crée l'objet (n est le nombre de "u"). GenericMaskCodes3EAN=Tous les autres caractères du masque resteront intacts (sauf * ou ? en 13ème position dans EAN13).
Les espaces ne sont pas autorisés.
Dans EAN13, le dernier caractère après le dernier } en 13ème position doit être * ou ? . Il sera remplacée par la clé calculée.
GenericMaskCodes4a=Exemple sur le 99e %s du tiers TheCompany, avec la date 2023-01-31 :
GenericMaskCodes4b=Exemple sur un tiers créé le 31/01/2023 :
GenericMaskCodes4c=Exemple sur un produit créé le 31/01/2023 :
+GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} donnera IN2301-0099-A si le type de l'entreprise est « Responsable Inscripto » avec le code pour le type qui est « A_RI » +DateStartThatModel=Désactiver l'utilisation de cette règle de numérotation pour tous les tiers créés avant +DateStartThatModelHelp=Vous pouvez désactiver la règle de numérotation des éléphants pour les tiers créés avant une date (par exemple, parce qu'ils ont été importés par une migration, depuis un autre logiciel utilisant une règle différente). Laissez ce champ vide pour que la règle s'applique à tous les tiers. UMaskExplanation=Ce paramètre permet de définir les permissions fixées par défaut sur les fichiers créés par Dolibarr sur le serveur (lors de l'upload par exemple).
Il doit s'agir de la valeur octale (par exemple, 0666 signifie lire et écrivez pour tout le monde.). La valeur recommandée est 0600 ou 0660
Ce paramètre est inutile sur un serveur Windows. SeeWikiForAllTeam=Jetez un œil à la page Wiki pour une liste des contributeurs et leur organisation DisableLinkToHelpCenter=Masquer le lien "Besoin d'aide ou d'assistance" sur la page de connexion @@ -204,6 +208,8 @@ String1Line=Chaîne (1 ligne) Text=Texte Boolean=Boolean (une case à cocher) ExtrafieldSeparator=Séparateur (pas un champ) +ExtrafieldRadio=Boutons radio (1 seul choix) +ExtrafieldCheckBoxFromList=Sélectionnez dans le tableau (n choix) ExtrafieldLink=Lier à un objet ExtrafieldPointGeo=Point Géométrique ExtrafieldMultiPointGeo=Géométrique Multi Point @@ -214,6 +220,7 @@ ExtrafieldParamHelpPassword=Laisser ce champ vide signifie que cette valeur sera ExtrafieldParamHelpselect=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
code3,value3
...

Afin d'avoir la liste en fonction d'une autre liste d'attributs complémentaires :
1,value1|options_parent_list_code : parent_key
2,value2|options_parent_list_code:parent_key

Afin d'avoir la liste dépendant d'une autre liste :
1, value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key ExtrafieldParamHelpcheckbox=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=La liste de valeurs doit être constituée de lignes au format clé, valeur (où la clé ne peut pas être « 0 »)

par exemple :
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpsellist=La liste de valeurs provient d'une table
Syntaxe : table_name:label_field:id_field::filtersql
Exemple : c_typent:libelle:id::filtersql

- id_field est nécessairement une clé int primaire
- filtersql est une condition. Elle doit utiliser la syntaxe USF. Exemple : (active:=:1) pour afficher uniquement la valeur active
Vous pouvez également utiliser $ID$ dans le filtre qui est l'ID actuel de l'objet actuel
Si vous souhaitez filtrer sur des champs supplémentaires, utilisez la syntaxe extra.fieldcode=... (où fieldcode est le code du champ supplémentaire)

Pour que la liste dépende d'une autre liste d'attributs complémentaires :
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pour que la liste dépende d'une autre liste :
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Les paramètres doivent être ObjectName:Classpath
Syntaxe : ObjectName:Classpath ExtrafieldParamHelpSeparator=Gardez vide pour un séparateur simple
Définissez ceci sur 1 pour un séparateur réduit (ouvert par défaut pour une nouvelle session, puis le statut est conservé pour chaque session utilisateur)
Définissez ceci sur 2 pour un séparateur réduit (réduit par défaut pour une nouvelle session, puis le statut est conservé avant chaque session utilisateur) LibraryToBuildPDF=Bibliothèque utilisée pour la génération de PDF @@ -238,10 +245,15 @@ ModuleCompanyCodeCustomerDigitaria=%s suivi du nom du client tronqué du nombre ModuleCompanyCodeSupplierDigitaria=%s suivi du nom du fournisseur tronqué du nombre de caractères : %s pour le code comptable du fournisseur. Use3StepsApproval=Par défaut, les bons de commande doivent être créés et approuvés par 2 utilisateurs différents (une étape / utilisateur à créer et une étape / utilisateur à approuver. Notez que si l'utilisateur a la permission de créer et d'approuver, un pas / utilisateur suffira) . Vous pouvez demander cette option pour introduire une troisième étape / approbation de l'utilisateur, si le montant est supérieur à une valeur dédiée (donc 3 étapes seront nécessaires: 1 = validation, 2 = première approbation et 3 = deuxième approbation si le montant est suffisant).
Configurez ceci pour vider si une approbation (2 étapes) est suffisante, définissez-la à une valeur très faible (0.1) si une deuxième approbation (3 étapes) est toujours requise. UseDoubleApproval=Utilisez une approbation de 3 étapes lorsque le montant (sans taxes) est supérieur à ... +WarningPHPMail=REMARQUE : la configuration pour envoyer des e-mails depuis l'application utilise la configuration générique par défaut (appelée « %s »). Ce choix ne nécessite aucune connaissance technique ni configuration particulière.
Cependant, il est souvent préférable de configurer les e-mails sortants pour utiliser l'autre méthode (appelée « %s ») pour utiliser le serveur de messagerie de votre fournisseur de services de messagerie, au lieu de la configuration par défaut pour plusieurs raisons : +WarningPHPMailA=- L'utilisation du serveur du fournisseur de services de messagerie augmente la fiabilité de votre e-mail, ce qui augmente la délivrabilité sans être signalé comme SPAM +WarningPHPMailB=- Si le domaine de votre e-mail (la partie mymaildomain.com dans myname@mymaildomain.com) est protégé par un enregistrement SPF + DMARC, votre e-mail peut être signalé comme SPAM parce que votre règle DMARC définie dans la zone DNS du domaine de l'expéditeur (mymaildomain.com) ne permet pas l'envoi en tant qu'expéditeur générique. Dans un tel cas, vous devez désactiver le DMARC pour le domaine (ou le définir sur p=none comme fait par @gmail.com) ou, mieux, si vous avez les connaissances techniques, utiliser l'autre méthode pour envoyer des e-mails en utilisant le serveur SMTP de votre propre fournisseur de messagerie. WarningPHPMailC=- Utiliser le serveur SMTP de votre propre fournisseur de services de messagerie pour envoyer des emails est également intéressant car tous les emails envoyés depuis l'application seront également enregistrés dans votre répertoire "Envoyés" de votre boîte mail. WarningPHPMailD=Il est donc recommandé de changer le mode d'envoi des e-mails vers la valeur « SMTP ». WarningPHPMailDbis=Si vous souhaitez vraiment conserver la méthode "PHP" par défaut pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en %sen cliquant ici%s. WarningPHPMail2=Si votre fournisseur de messagerie SMTP doit restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP de l'agent utilisateur de messagerie (MUA) de votre application ERP CRM : %s. +WarningPHPMailSPF=Si le nom de domaine dans votre adresse e-mail d'expéditeur est protégé par un enregistrement SPF (demandez à votre registrar de nom de domaine), vous devez ajouter les IP ou l'entrée suivantes dans l'enregistrement SPF du DNS de votre domaine : %s. +ActualMailDNSRecordFound=Enregistrement %s réel trouvé (pour l'e-mail %s) : %s ClickToShowDescription=Cliquez pour afficher la description DependsOn=Ce module nécessite le(s) module(s) RequiredBy=Ce module est requis par module (s) @@ -319,6 +331,7 @@ Module2000Desc=Autoriser la modification/le formatage des champs de texte à l'a Module2200Desc=Utilisez des expressions mathématiques pour la génération automatique des prix Module2300Desc=Gestion des tâches planifiées (alias cron ou chrono table) Module2400Name=Evénements / Agenda +Module2400Desc=Gérez les événements manuels et automatiques. Utilisez le calendrier pour enregistrer les événements manuellement. Enregistrez également les événements automatiquement à des fins de suivi ou enregistrez manuellement les événements ou les réunions. Il s'agit du module principal pour une bonne gestion des relations avec les clients et/ou les fournisseurs. Module2500Name=SGD/ECM Module2500Desc=Système de gestion de documents / Gestion de contenu électronique. Organisation automatique de vos documents générés ou stockés. Partagez-les quand vous en avez besoin. Module2600Desc=Active le serveur de Web Services de Dolibarr @@ -393,6 +406,7 @@ Permission194=Lire les lignes de bande passante Permission253=Créer/modifier d'autres utilisateurs, groupes et autorisations Permission262=Étendez l'accès à tous les tiers ET à leurs objets (pas seulement aux tiers pour lesquels l'utilisateur est lié en tant que représentant commercial). Permission262b=Peu efficace pour les utilisateurs externes (toujours limités à eux-mêmes pour les propositions, commandes, factures, contrats, etc.). +Permission262c=Non efficace pour les projets (seules les règles sur les autorisations de projet, la visibilité et l'affectation des utilisateurs comptent). Permission263=Étendre l'accès à tous les tiers SANS leurs objets (pas seulement aux tiers pour lesquels l'utilisateur est représentant commercial).
Pas efficace pour les utilisateurs externes (toujours limités à eux-mêmes pour les propositions, commandes, factures, contrats, etc.).
Non efficace pour les projets (uniquement les règles sur les autorisations de projet, la visibilité et les questions d'affectation). Permission293=Modifier les tarifs du client Permission301=Générer des feuilles PDF de codes-barres @@ -421,6 +435,7 @@ Permission663=Supprimer un ordre de fabrication (MO) Permission771=Lire les rapports de dépenses (le vôtre et vos subordonnés ) Permission772=Créer/modifier des notes de frais (pour vous et vos subordonnés) Permission778=Créer/modifier les notes de frais de tout le monde +Permission1001=Lire les entrepôts et les stocks Permission1011=Afficher les inventaires Permission1015=Autoriser la modification de la valeur PMP d'un produit Permission1101=Lire les bons de livraison @@ -703,6 +718,11 @@ InvoiceCheckPosteriorDate=Vérifier la date de facture avant validation InvoiceCheckPosteriorDateHelp=La validation d'une facture sera interdite si sa date est antérieure à la date de la dernière facture du même type. InvoiceOptionCategoryOfOperations=Afficher la mention « catégorie d'opérations » sur la facture. InvoiceOptionCategoryOfOperationsHelp=Selon la situation, la mention apparaîtra sous la forme :
- Catégorie d'opérations : Livraison de marchandises
- Catégorie de opérations : Prestation de services
- Catégorie d'opérations : Mixte - Livraison de biens et prestation de services +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Interdire la classification d'une commande comme facturée sans facture. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=Une commande peut être classée comme facturée par défaut. Si cette configuration est définie sur true, elle ne le sera pas. +SupplierOrderClassifyBilledWithoutInvoice=Interdire la classification d’un bon de commande comme facturé sans facture. +SupplierOrderClassifyBilledWithoutInvoiceHelp=Une commande fournisseur peut être classée comme facturée par défaut. Si cette configuration est définie sur true, elle ne le sera pas. +SuggestedPaymentModesIfNotDefinedInProposal=Mode de paiement suggéré par défaut s'il n'est pas défini sur la proposition SupplierProposalSetup=Configuration du module de ​​demande de prix des fournisseurs SupplierProposalNumberingModules=Modèles de numérotation des demandes de prix des fournisseurs SupplierProposalPDFModules=Modèles des documents des demandes de prix des fournisseurs @@ -716,6 +736,8 @@ OrdersSetup=Configuration de la gestion des commandes clients ShippableOrderIconInList=Ajouter un icône dans la liste des commandes qui indique si la commande est expédiable. MemberCodeChecker=Options de génération automatique des codes membres AdherentMailRequired=Email requis pour créer un nouveau membre +MemberSendInformationByMailByDefault=La case à cocher pour envoyer un email de confirmation aux membres (validation ou nouvelle inscription) est activée par défaut +MemberCreateAnExternalUserForSubscriptionValidated=Créer automatiquement un utilisateur externe (avec un login pour se connecter à l'application) après un paiement en ligne d'une cotisation d'adhésion MEMBER_REMINDER_EMAIL=Activer le rappel automatique par e-mail des abonnements expirés. Remarque : Le module %s doit être activé et correctement configuré pour envoyer rappels. MembersDocModules=Modèles de documents pour les documents générés à partir du dossier de membre LDAPMembersTypesSynchro=Types de membres @@ -891,6 +913,7 @@ CloseFiscalYear=Période comptable rapprochée DeleteFiscalYear=Supprimer la période comptable ConfirmDeleteFiscalYear=Êtes-vous sûr de supprimer cette période comptable? ShowFiscalYear=Afficher la période comptable +AssetNumberingModules=Module de numérotation des actifs SalariesSetup=Configuration du module salariés TypePaymentDesc=0 : Type de paiement client, 1 : Type de paiement fournisseur, 2 : Type de paiement client et fournisseur. ExpenseReportsRulesSetup=Mise en place du module Notes de frais - Règles @@ -986,6 +1009,7 @@ BaseCurrency=Monnaie de référence de la société (entrer dans la configuratio WarningNoteModuleInvoiceForFrenchLaw=Ce module %s est conforme aux lois françaises (Loi Finance 2016). WarningNoteModulePOSForFrenchLaw=Ce module %s est conforme à la loi française (Loi Finance 2016) car le module Non Reversible Logs est automatiquement activé. WarningInstallationMayBecomeNotCompliantWithLaw=Vous essayez d'installer le module %s qui est un module externe. L'activation d'un module externe signifie que vous faites confiance à l'éditeur de ce module et que vous êtes sûr que ce module n'a pas d'impact négatif sur le comportement de votre application et qu'il est conforme aux lois de votre pays (%s). Si le module introduit une fonctionnalité illégale, vous devenez responsable de l'utilisation de logiciels illégaux. +WarningExperimentalFeatureInvoiceSituationNeedToUpgradeToProgressiveMode=Si vous utilisez le mode expérimental pour les factures de situation, vous devrez mettre à jour vos données pour passer du mode expérimental au mode officiel. Vous pouvez contacter un partenaire pour vous aider dans cette tâche. Une liste de partenaires privilégiés est disponible en suivant ce lien MAIN_PDF_MARGIN_LEFT=Marge gauche sur PDF MAIN_PDF_MARGIN_RIGHT=Marge droite sur PDF MAIN_PDF_MARGIN_TOP=Marge supérieure sur PDF @@ -993,6 +1017,7 @@ MAIN_PDF_MARGIN_BOTTOM=Marge inférieure sur PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Hauteur du logo sur PDF DOC_SHOW_FIRST_SALES_REP=Afficher le premier représentant commercial MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Ajouter une colonne pour l'image sur les lignes de proposition +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Masquer la colonne du prix total sur les bons de commande MAIN_PDF_NO_SENDER_FRAME=Masquer les bordures du cadre d'adresse de l'expéditeur MAIN_PDF_NO_RECIPENT_FRAME=Masquer les bordures du cadre d'adresse du destinataire MAIN_PDF_HIDE_CUSTOMER_CODE=Masquer le code client @@ -1007,13 +1032,14 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex pour nettoyer la valeur (COMPANY_DIGI DuplicateForbidden=Duplicata interdit RemoveSpecialWords=Nettoyer certains mots lors de la génération de sous-comptes pour les clients ou les fournisseurs RemoveSpecialWordsHelp=Précisez les mots à nettoyer avant de calculer le compte client ou fournisseur. Utiliser un ";" entre chaque mot -GDPRContact=Délégué à la protection des données (DPO, Data Privacy ou contact RGPD) +GDPRContact=Délégué à la protection des données (DPO, contact Data Privacy ou RGPD, ...) GDPRContactDesc=Si vous stockez des données personnelles dans votre Système d'Information, vous pouvez nommer ici le contact responsable du Règlement Général sur la Protection des Données. HelpOnTooltipDesc=Mettez du texte ou une clé de traduction ici pour que le texte s'affiche dans une info-bulle lorsque ce champ apparaît dans un formulaire YouCanDeleteFileOnServerWith=Vous pouvez supprimer ce fichier sur le serveur avec la ligne de commande :
%s ChartLoaded=Plan comptable chargé SocialNetworkSetup=Mise en place du module Réseaux Sociaux EnableFeatureFor=Activer les fonctionnalités pour %s +SetupModuleX=Module de configuration %s VATIsUsedIsOff=Remarque : L'option permettant d'utiliser la taxe de vente ou la TVA a été définie sur Off dans le menu %s - %s, donc la taxe de vente ou la TVA utilisée sera toujours de 0 pour les ventes. SwapSenderAndRecipientOnPDF=Échanger la position des adresses de l'expéditeur et du destinataire sur les documents PDF FeatureSupportedOnTextFieldsOnly=Attention, fonctionnalité prise en charge sur les champs texte et les listes combo uniquement. De plus, un paramètre d'URL action=create ou action=edit doit être défini OU le nom de la page doit se terminer par « new.php » pour déclencher cette fonctionnalité. @@ -1061,7 +1087,7 @@ CreateCandidature=Créer une demande d'emploi FormatZip=Code postal MainMenuCode=Code d'entrée du menu (menu principal) ECMAutoTree=Afficher l'arborescence ECM automatique -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a new line to extract or set several properties. +OperationParamDesc=Définissez les règles à utiliser pour extraire certaines données ou définissez les valeurs à utiliser pour l'opération.

Exemple d'extraction d'une chaîne de l'en-tête, de l'objet ou du corps d'un e-mail dans une variable temporaire :
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Exemples de définition des propriétés d'un objet à créer :
objproperty1=SET : une valeur codée en dur
objproperty2=SET : __tmp_var__
objproperty3=SETIFEMPTY : une valeur (la valeur n'est définie que si la propriété n'est pas déjà définie)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mon nom d'entreprise est\\s([^\\s]*)

Utilisez une nouvelle ligne pour extraire ou définir plusieurs propriétés. OpeningHours=Horaires d'ouvertures OpeningHoursDesc=Entrez ici les heures d'ouverture habituelles de votre entreprise. UseSearchToSelectResource=Utilisez un formulaire de recherche pour choisir une ressource (plutôt qu'une liste déroulante). @@ -1083,6 +1109,7 @@ DebugBarSetup=Configuration de la barre de débogage LogsLinesNumber=Nombre de lignes à afficher sur l'onglet Journaux UseDebugBar=Utiliser la barre de débogage DEBUGBAR_LOGS_LINES_NUMBER=Nombre de dernières lignes de journal à conserver dans la console +WarningValueHigherSlowsDramaticalyOutput=Attention, des valeurs plus élevées ralentissent considérablement la production ModuleActivatedWithTooHighLogLevel=Le module %s est activé avec un niveau de journalisation trop élevé (essayez d'utiliser un niveau inférieur pour de meilleures performances et sécurité) ModuleSyslogActivatedButLevelNotTooVerbose=Le module %s est activé et le niveau de journalisation (%s) est correct (pas trop détaillé) IfYouAreOnAProductionSetThis=Si vous êtes dans un environnement de production, vous devez définir cette propriété sur %s. @@ -1093,7 +1120,7 @@ ImportSetup=Mise en place du module Import IfTrackingIDFoundEventWillBeLinked=Notez que si un identifiant de suivi d'un objet est trouvé dans un e-mail, ou si l'e-mail est une réponse à un e-mail déjà collecté et lié à un objet, l'événement créé sera automatiquement lié à l'objet associé connu. 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é pour l'application au lieu d'utiliser votre propre mot de passe de compte depuis https://myaccount.google.com/. EmailCollectorTargetDir=Il peut être souhaitable de déplacer l'e-mail vers une autre balise/répertoire lorsqu'il a été traité avec succès. Définissez simplement le nom du répertoire ici pour utiliser cette fonctionnalité (n'utilisez PAS de caractères spéciaux dans le nom). Notez que vous devez également utiliser un compte de connexion en lecture/écriture. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Vous pouvez utiliser cette action pour utiliser le contenu de l'e-mail pour rechercher et charger un tiers existant dans votre base de données (la recherche sera effectuée sur la propriété définie parmi 'id','name','name_alias','email'). Le tiers trouvé (ou créé) sera utilisé pour les actions suivantes qui en ont besoin.
Par exemple, si vous souhaitez créer un tiers avec un nom extrait d'une chaîne 'Nom : nom à rechercher' présente dans le corps, utilisez l'email de l'expéditeur comme email, vous pouvez définir le champ paramètre comme ceci :
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Attention : de nombreux serveurs de messagerie (comme Gmail) effectuent des recherches de mots complets lors d'une recherche sur une chaîne et ne renvoient pas de résultat si la chaîne n'est trouvée que partiellement dans un mot. Pour cette raison également, l'utilisation de caractères spéciaux dans un critère de recherche sera ignorée s'ils ne font pas partie de mots existants.
Pour effectuer une recherche d'exclusion sur un mot (retourner l'e-mail si mot n'est pas trouvé), vous pouvez utiliser le ! caractère avant le mot (peut ne pas fonctionner sur certains serveurs de messagerie). EndPointFor=Point final pour %s : %s DeleteEmailCollector=Supprimer le collecteur d'e-mails @@ -1111,7 +1138,6 @@ THIRDPARTY_ALIAS=Nom du tiers – Alias du tiers ALIAS_THIRDPARTY=Alias du tiers – Nom du tiers PDFIn2Languages=Afficher les étiquettes dans le PDF dans 2 langues différentes (cette fonctionnalité peut ne pas fonctionner dans certaines langues) PDF_USE_ALSO_LANGUAGE_CODE=Si vous souhaitez que certains textes de votre PDF soient dupliqués dans 2 langues différentes dans le même PDF généré, vous devez définir ici cette deuxième langue pour que le PDF généré contienne 2 langues différentes dans la même page, celle choisie lors de la génération du PDF et celle-ci ( seuls quelques modèles PDF le prennent en charge). Gardez vide pour 1 langue par PDF. -PDF_USE_A=Générez des documents PDF au format PDF/A au lieu du format PDF par défaut RssNote=Remarque : Chaque définition de flux RSS fournit un widget que vous devez activer pour qu'il soit disponible dans le tableau de bord. JumpToBoxes=Accédez à Configuration -> Widgets MeasuringUnitTypeDesc=Utilisez ici une valeur comme "taille", "surface", "volume", "poids", "temps" @@ -1186,6 +1212,8 @@ INVOICE_ADD_SWISS_QR_CODE=Afficher le code QR-Bill suisse sur les factures (avec INVOICE_ADD_SWISS_QR_CODEMore=La norme suisse pour les factures ; assurez-vous que le code postal et la ville sont renseignés et que les comptes ont des IBAN Suisse/Liechtenstein valides. INVOICE_ADD_EPC_QR_CODE=Afficher le code QR EPC sur les factures (avec un compte bancaire défini pour le virement) INVOICE_ADD_EPC_QR_CODEMore=Cette fonctionnalité vous permet d'ajouter ou de supprimer un QR Code EPC sur vos factures, ce qui facilite les virements SEPA automatiques. L'activation de cette option aide vos clients à effectuer facilement des paiements en scannant le code QR, réduisant ainsi les erreurs de saisie manuelle. Utilisez cette fonctionnalité si vous avez des clients dans des pays comme l'Autriche, la Belgique, la Finlande, l'Allemagne et les Pays-Bas où ce système est pris en charge. Désactivez-le si cela n'est pas requis pour vos opérations commerciales ou votre clientèle. +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Afficher le contact de facturation sur la proposition +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Par défaut, le contact n'apparaît que pour la facturation UrlSocialNetworksDesc=Lien URL du réseau social. Utilisez {socialid} pour la partie variable qui contient l'ID du réseau social. IfThisCategoryIsChildOfAnother=Si cette catégorie est enfant d'une autre AccordingToBrowser=Selon le navigateur @@ -1202,10 +1230,12 @@ TriggerCodeInfo=Saisissez ici le(s) code(s) déclencheur(s) qui doivent génére EditableWhenDraftOnly=Si décochée, la valeur ne peut être modifiée que lorsque l'objet a un statut de brouillon CssOnView=CSS sur les pages d'affichage HelpCssOnEditDesc=Le CSS utilisé lors de la modification du champ.
Exemple : "minwiwdth100 maxwidth500 widthcentpercentminusx" +HelpCssOnViewDesc=Le CSS utilisé lors de la visualisation du champ.
Exemple : « longmessagecut » HelpCssOnListDesc=CSS utilisé lorsque le champ se trouve dans une table de liste.
Exemple : "tdoverflowmax200" LimitsAndMitigation=Limites d’accès et atténuation RecommendMitigationOnURL=Il est recommandé d'activer l'atténuation sur les URL critiques. Il s'agit d'une liste de règles fail2ban que vous pouvez utiliser pour les principales URL importantes. DeadlineDayVATSubmission=Jour limite de dépôt de la TVA le mois suivant +MaxNumberOfAttachementOnForms=Nombre maximal de fichiers joints dans un formulaire IfDefinedUseAValueBeetween=Si défini, utilisez une valeur comprise entre %s et %s WarningModuleHasChangedLastVersionCheckParameter=Attention : le module %s a défini un paramètre pour vérifier sa version à chaque accès à la page. Il s'agit d'une pratique mauvaise et non autorisée qui peut rendre la page d'administration des modules instable. Veuillez contacter l'auteur du module pour résoudre ce problème. WarningModuleHasChangedSecurityCsrfParameter=Attention : le module %s a désactivé la sécurité CSRF de votre instance. Cette action est suspecte et votre installation pourrait ne plus être sécurisée. Veuillez contacter l'auteur du module pour obtenir des explications. @@ -1235,6 +1265,7 @@ CustomPrompt=Invites personnalisées AiDescription=Fonctionnalités IA (Intelligence Artificielle) AiDescriptionLong=Fournit des fonctionnalités d’IA (Intelligence Artificielle) dans différentes parties de l’application. Besoin d'une API IA externe. AI_API_KEY=Clé pour l'API IA +AI_API_URL=URL du point de terminaison pour l'API AI AI_API_SERVICE=Service à utiliser pour les fonctionnalités d'IA AiSetup=Configuration du module IA AiCustomPrompt=Invite personnalisée IA @@ -1249,3 +1280,12 @@ ModuleZapierForDolibarrDesc=Zapier pour le module Dolibarr ZapierSetupPage=Il n’y a pas besoin d’un setup côté Dolibarr pour utiliser Zapier. Cependant, vous devez générer et publier un package sur zapier pour pouvoir utiliser Zapier avec Dolibarr. Voir la documentation sur cette page wiki. WebsiteTemplateWasCopied=Le(s) modèle(s) de site Web "%s" fournis par ce module ont été enregistrés dans le répertoire des modèles de sites Web (/doctemplates/websites) et sont prêts à être importés en tant que nouveau site Web. site. VulnerableToRCEAttack=Vous êtes vulnérable aux attaques RCE en utilisant la fonction personnalisée dol_json_decode +MainAuthenticationOidcClientSecretDesc=Secret du client OpenID Connect +MainAuthenticationOidcScopesDesc=Portées OpenID pour permettre l'accès aux informations utilisateur +MainAuthenticationOidcTokenUrlName=URL du jeton +MainAuthenticationOidcLogoutUrlDesc=(exemple : https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlDesc=URL de redirection à autoriser côté fournisseur OpenID +MainAuthenticationOidcLoginClaimName=Demande de connexion +MainAuthenticationOidcLoginClaimDesc=Réclamation OpenID Connect correspondant à la connexion de l'utilisateur Dolibarr. Si elle n'est pas définie ou est vide, la valeur par défaut est l'adresse e-mail. +Fediverse=Fédiverse +ConfirmDeleteSocialNetwork=Etes-vous sûr de vouloir supprimer cet enregistrement ? diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index a743d759439..2504f0a8a44 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -460,7 +460,7 @@ ExtrafieldSeparator=Séparateur (il ne s'agit pas d'un champ de saisie) ExtrafieldPassword=Mot de passe ExtrafieldRadio=Radio bouton (1 choix uniquement) ExtrafieldCheckBox=Liste de sélection (n choix) -ExtrafieldCheckBoxFromList=Liste de sélection (n choix) +ExtrafieldCheckBoxFromList=Liste issue d'une table (n choix) ExtrafieldLink=Lien vers un objet ExtrafieldPointGeo=Point géométrique ExtrafieldMultiPointGeo=Multi-point géométrique @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur (où la cl ExtrafieldParamHelpcheckbox=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur (où la clé ne peut être '0')

par exemple :
1,valeur1
2,valeur2
3,valeur3
... ExtrafieldParamHelpsellist=La liste de valeurs provient d'une table
Syntaxe : table_name:label_field: id_field::filtersql
Exemple : c_typent:libelle:id:: filtersql

- id_field est nécessairement une clé entière primaire
- filtersql est une condition. Elle doit utiliser la syntaxe USF. Exemple : (active:=:1) pour afficher uniquement la valeur active
Vous pouvez également utiliser $ID$ dans le filtre qui est l'identifiant actuel de l'objet actuel
Si vous souhaitez filtrer sur des champs supplémentaires, utilisez la syntaxe extra.fieldcode=... (où le code de champ est le code du champ supplémentaire)

Dans le but d'avoir la liste en fonction d'un autre attribut complémentaire liste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Dans commande pour avoir la liste en fonction d'une autre liste :
c_typent:libelle:id:parent_list_code|parent_column:filtre -ExtrafieldParamHelpchkbxlst=Les valeurs de la liste proviennent d'une table
Syntaxe : nom_de_la_table:libelle_champ:id_champ::filtresql
Exemple : c_typent:libelle:id::filtresql

le filtre peut être un simple 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 syntaxe extra.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_list_parent|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 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 @@ -522,7 +521,7 @@ WarningPHPMailD=Il est donc recommandé de changer la méthode d'envoi des e-mai WarningPHPMailDbis=Si vous voulez vraiment conserver la méthode par défaut "PHP" pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en %scliquant ici%s. WarningPHPMail2=Si votre fournisseur de messagerie SMTP a besoin de restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP du mail user agent (MUA) de votre application CRM ERP : %s . WarningPHPMailSPF=Si le nom de domaine de votre adresse e-mail d'expéditeur est protégé par un enregistrement SPF (demandez à votre fournisseur de nom de domaine), vous devez inclure les adresses IP ou entrées suivantes dans l'enregistrement SPF du DNS de votre domaine: %s. -WarningPHPMailSPFDMARC=Si le nom de domaine dans votre adresse e-mail d'expéditeur est protégé par un enregistrement DMARC différent de p=none (demandez à votre registrar de nom de domaine), vous devez ajouter les adresses IP suivantes dans l'enregistrement SPF du DNS du domaine : %s. +WarningPHPMailSPFDMARC=Si le nom de domaine dans votre adresse e-mail d'expéditeur est protégé par un enregistrement DMARC différent de p=none (demandez à votre registraire de nom de domaine), vous devez supprimer votre enregistrement DMARC ou le définir sur p=none comme le fait @gmail.com) ou utiliser une autre méthode d'envoi. SPFAndDMARCInformation=Enregistrement DNS SPF et DMARC pour les principales adresses e-mail ActualMailDNSRecordFound=Enregistrement %s actuel trouvé (pour l'e-mail %s) : %s ClickToShowDescription=Cliquer pour afficher la description @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtre de regex pour nettoyer la valeur (COMPANY_D DuplicateForbidden=Doublon interdit RemoveSpecialWords=Nettoyer certains mots lors de la génération des comptes comptables des tiers pour les clients ou les fournisseurs RemoveSpecialWordsHelp=Précisez les mots à nettoyer avant de calculer le compte comptable des tiers client ou fournisseur. Utiliser un ";" entre chaque mot -GDPRContact=Responsable de la protection des données (DPO ou contact RGPD) +GDPRContact=Délégué à la protection des données (DPO, contact RGPD, ...) GDPRContactDesc=Si vous stockez des données personnelles dans votre système d'information, vous pouvez nommer ici le contact responsable du règlement général sur la protection des données HelpOnTooltip=Texte d'aide à afficher dans l'info-bulle HelpOnTooltipDesc=Mettez du texte ou une clé de traduction ici pour que le texte apparaisse dans une info-bulle lorsque ce champ apparaît dans un formulaire @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nom du tiers - Nom alternatif du tiers ALIAS_THIRDPARTY=Nom alternatif du tiers - Nom du tiers PDFIn2Languages=Afficher les libellés dans le PDF dans 2 langues différentes (cette fonctionnalité peut ne pas fonctionner pour certaines combinaisons de langues) PDF_USE_ALSO_LANGUAGE_CODE=Si vous souhaitez que certains textes de votre PDF soient dupliqués dans 2 langues différentes dans le même PDF généré, vous devez définir ici cette deuxième langue pour que le PDF généré contienne 2 langues différentes dans la même page, celle choisie lors de la génération du PDF et celle-ci (seuls quelques modèles PDF prennent en charge cette fonction). Gardez vide pour 1 langue par PDF. -PDF_USE_A=Générer les documents PDF avec le format PDF/A à la place du format PDF standard +PDF_USE_A=Format des documents PDF FafaIconSocialNetworksDesc=Entrez ici le code d'une icône FontAwesome. Si vous ne savez pas ce qu'est FontAwesome, vous pouvez utiliser la valeur générique fa-address-book. RssNote=Remarque: Chaque définition de flux RSS fournit un widget que vous devez activer pour qu'il soit disponible dans le tableau de bord JumpToBoxes=Aller à la Configuration -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionnaire AddMoreParams=Ajouter plus de paramètres pour la connexion (cookies, tokens, ...)
Exemple : token : value token ParamName=Nom du paramètre ParamValue=Valeur du paramètre +ConfirmDeleteParamOfSocialNetwork=Êtes-vous sûr de vouloir supprimer ce paramètre ? +HelpMariaDBToGetPossibleValues=Vous pouvez obtenir une liste de valeurs possibles en exécutant la commande SQL suivante : %s +Captcha=Captcha +CaptchaDesc=Si vous souhaitez protéger votre page de connexion avec un Captcha, vous pouvez choisir celui à utiliser ici +DolibarrStandardCaptcha=Un captcha natif généré par Dolibarr diff --git a/htdocs/langs/gl_ES/admin.lang b/htdocs/langs/gl_ES/admin.lang index db1cce51cf5..6bcdb97e2f5 100644 --- a/htdocs/langs/gl_ES/admin.lang +++ b/htdocs/langs/gl_ES/admin.lang @@ -513,15 +513,15 @@ ModuleCompanyCodeCustomerDigitaria=%s seguido do nome de cliente acortado polo n ModuleCompanyCodeSupplierDigitaria=%s seguido do nome do provedor acortado polo número de caracteres:%s para o código de contabilidade do provedor. Use3StepsApproval=De forma predeterminada, os pedimentos a provedor teñen que ser creados e aprobados por 2 usuarios diferentes (un paso/usuario para crear e un paso/usuario para aprobar. Teña conta de que se o usuario ten tanto o permiso para crear e aprobar, un paso/usuario será suficiente. Pode pedir con esta opción introducir unha terceira etapa de aprobación/usuario, se a cantidade é superior a un valor específico (polo que serán precisos 3 pasos: 1 validación, 2=primeira aprobación e 3=segunda aprobación se a cantidade é suficiente).
Deixe baleiro se unha aprobación (2 pasos) é suficiente, se establece un valor moi baixo (0,1) requírese unha segunda aprobación sempre (3 pasos). UseDoubleApproval=Usar 3 pasos de aprobación se o importe (sen IVE) é maior que... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=AVISO: a configuración para enviar correos electrónicos desde a aplicación utiliza a configuración xenérica predeterminada (chamada "%s"). Esta opción non precisa ningún coñecemento técnico e ningunha configuración particular.
Porén, moitas veces é mellor configurar os correos electrónicos de saída para usar o outro método (chamado " %s") para utilizar o servidor de correo electrónico do seu provedor de servizos de correo electrónico, en lugar da configuración predeterminada por varios motivos: WarningPHPMailA=- Usar o servidor do provedor de servizos de correo electrónico aumenta a fiabilidade do seu correo electrónico, polo que aumenta a capacidade de entrega sen ser marcado como SPAM -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Se o dominio do seu correo electrónico (a parte mymaildomain.com en myname@mymaildomain.com) está protexido por un rexistro SPF + DMARC, o seu correo electrónico pode marcarse como SPAM porque a súa regra DMARC definiuse na zona DNS do dominio do seu correo electrónico. remitente (mymaildomain.com) non permite o envío como remitente xenérico. Neste caso, debe desactivar o DMARC para o dominio (ou configuralo en p=none como o fixo @gmail.com) ou, mellor, se ten coñecementos técnicos, utilice o outro método para enviar correos electrónicos mediante SMTP. servidor do seu propio provedor de correo electrónico. WarningPHPMailC=- Tamén é interesante usar o servidor SMTP do seu propio fornecedor de servizos de correo electrónico para enviar correos electrónicos, polo que todos os correos electrónicos enviados desde a aplicación tamén se gardarán no directorio "Enviado" da súa caixa de correo. WarningPHPMailD=Polo tanto, recoméndase cambiar o método de envío dos correos electrónicos co valor "SMTP". WarningPHPMailDbis=Se realmente quere manter o método "PHP" predeterminado para enviar correos electrónicos, só ten que ignorar este aviso ou elimínao premendo %sprema aquí %s WarningPHPMail2=Se o seu fornecedorr SMTP de correo electrónico precisa restrinxir o cliente de correo electrónico a algúns enderezos IP (moi raro), este é o seu enderezo IP do seu axente de usuario de correo (MUA) da súa aplicación ERP CRM: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +WarningPHPMailSPF=Se o nome de dominio do enderezo de correo electrónico do seu remitente está protexido por un rexistro SPF (pregúntelle ao rexistrador do seu nome de dominio), debe engadir as seguintes IP ou entrada no rexistro SPF do DNS do seu dominio: %s. +WarningPHPMailSPFDMARC=Se o nome de dominio do enderezo de correo electrónico do seu remitente está protexido por un rexistro DMARC diferente de p=none (pregúntelle ao rexistrador do seu nome de dominio), debe eliminar o seu rexistro DMARC ou configuralo en p=none como fai @gmail.com) ou use o envío doutro método. SPFAndDMARCInformation=Rexistro DNS SPF e DMARC para os enderezos de correo electrónico principais ActualMailDNSRecordFound=Atopouse o rexistro actual de %s (para o correo electrónico %s): %s ClickToShowDescription=Clic para ver a descrición @@ -2146,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro de rexistro para limpar o valor (COMPANY_DI DuplicateForbidden=Prohibido duplicar RemoveSpecialWords=Limpe determinadas palabras ao xerar subcontas para clientes ou provedores RemoveSpecialWordsHelp=Especifique as palabras a limpar antes de calcular a conta de cliente ou provedor. Use un ";" entre cada palabra -GDPRContact=Responsable de protección de datos (DPO, privacidade de datos ou contacto GDPR) +GDPRContact=Delegado de Protección de Datos (DPD, Privacidade de datos ou contacto RGPD,...) GDPRContactDesc=Se almacena datos persoais no seu Sistema de Información, pode nomear aquí o contacto responsable do Regulamento Xeral de Protección de Datos HelpOnTooltip=Texto de axuda para amosar na información de ferramentas HelpOnTooltipDesc=​​= Poner aquí o texto ou unha chave de tradución para que o texto apareza nunha tip sobre ferramentas cando este campo aparece nun formulario @@ -2289,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome de Terceiros: Alias de terceiros ALIAS_THIRDPARTY=Alias de Terceiros: Nome de Terceiros PDFIn2Languages=Amosa etiquetas no PDF en dous idiomas diferentes (pode que esta opción non funcione nalgúns idiomas) PDF_USE_ALSO_LANGUAGE_CODE=Se desexa ter algúns textos no seu PDF duplicados en 2 idiomas diferentes no mesmo PDF xerado, debe configurar aquí este segundo idioma para que o PDF xerado conteña 2 idiomas diferentes na mesma páxina, o elixido ao xerar PDF e este (só algúns modelos PDF soportan isto). Mantéñase baleiro por un idioma por PDF. -PDF_USE_A=Xera documentos PDF co formato PDF/A en lugar do formato PDF predeterminado +PDF_USE_A=Formato de documentos PDF FafaIconSocialNetworksDesc=Introduza aquí o código dunha icona FontAwesome. Se non sabe o que é FontAwesome, pode usar o valor xenérico fa-address-book. RssNote=Nota: Cada definición de fonte RSS proporciona un widget que debes habilitar para que estexa dispoñible no panel JumpToBoxes=Ir a Configuración -> Widgets @@ -2554,3 +2554,8 @@ MenuDict=Dicionario AddMoreParams=Engadir máis parámetros para a conexión (cookies, tokens,...)
Exemplo: token : token de valor ParamName=Nome do parámetro ParamValue=Valor do parámetro +ConfirmDeleteParamOfSocialNetwork=Está certo de querer eliminar este parámetro? +HelpMariaDBToGetPossibleValues=Pode obter unha lista de valores posibles executando o seguinte comando SQL: %s +Captcha=Captcha +CaptchaDesc=Se quere protexer a súa páxina de inicio de sesión cun Captcha, pode escoller cal usar aquí +DolibarrStandardCaptcha=Un captcha nativo xerado por Dolibarr diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 94c7f5a8cb6..7e2055a436c 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=הפרמטרים חייבים להיות ObjectName:Classpath
תחביר: ObjectName:Classpath ExtrafieldParamHelpSeparator=שמור ריק עבור מפריד פשוט
הגדר את זה ל-1 עבור מפריד מתמוטט (פתוח כברירת מחדל עבור הפעלה חדשה, ואז הסטטוס נשמר עבור כל הפעלה של משתמש)
הגדר את זה ל-2 עבור מפריד מכווץ (כווץ כברירת מחדל עבור הפעלה חדשה, ואז הסטטוס נשמר לפני כל הפעלת משתמש) LibraryToBuildPDF=ספרייה המשמשת ליצירת PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=מסנן Regex לניקוי ערך (COMPANY_DIGITA DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=נקה מילים מסוימות בעת יצירת חשבונות משנה עבור לקוחות או ספקים RemoveSpecialWordsHelp=ציין את המילים שיש לנקות לפני חישוב חשבון הלקוח או הספק. תשתמש ב ";" בין כל מילה -GDPRContact=קצין הגנת נתונים (DPO, איש קשר לפרטיות נתונים או GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=אם אתה מאחסן נתונים אישיים במערכת המידע שלך, תוכל למנות את איש הקשר האחראי על תקנת הגנת המידע הכללית כאן HelpOnTooltip=טקסט עזרה להצגה בתיאור כלי HelpOnTooltipDesc=שים טקסט או מפתח תרגום כאן כדי שהטקסט יופיע בהסבר כלים כאשר שדה זה מופיע בטופס @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=שם צד שלישי - כינוי צד שלישי ALIAS_THIRDPARTY=כינוי צד שלישי - שם צד שלישי PDFIn2Languages=הצג תוויות ב-PDF ב-2 שפות שונות (ייתכן שתכונה זו לא תעבוד עבור כמה שפות) PDF_USE_ALSO_LANGUAGE_CODE=אם אתה רוצה שישכפלו כמה טקסטים ב-PDF שלך ב-2 שפות שונות באותו PDF שנוצר, עליך להגדיר כאן את השפה השנייה הזו כך שה-PDF שנוצר יכיל 2 שפות שונות באותו עמוד, זו שנבחרה בעת יצירת PDF והזו ( רק מעט תבניות PDF תומכות בכך). השאר ריק עבור שפה אחת לכל PDF. -PDF_USE_A=צור מסמכי PDF בפורמט PDF/A במקום PDF בפורמט ברירת המחדל +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=הזן כאן את הקוד של אייקון FontAwesome. אם אתה לא יודע מה זה FontAwesome, אתה יכול להשתמש ב-fa-address-book עם הערך הגנרי. RssNote=הערה: כל הגדרת הזנת RSS מספקת ווידג'ט שעליך להפעיל כדי שיהיה זמין בלוח המחוונים JumpToBoxes=קפוץ להגדרה -> ווידג'טים @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index e662c02380e..9d3ea3d4881 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Popis vrijednosti mora biti redak s formatom ključ,vr ExtrafieldParamHelpcheckbox=Popis vrijednosti moraju biti linije sa strukturom ključ,vrijednost (ključ ne može biti '0')

na primjer:
1,vrijednost1
2,vrijednost2
3,vrijednost3
... ExtrafieldParamHelpradio=Popis vrijednosti moraju biti linije sa strukturom ključ,vrijednost (ključ ne može biti '0')

na primjer:
1,vrijednost1
2,vrijednost2
3,vrijednost3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametri moraju biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ostavite prazno za jednostavan separator
Postavite ovo na 1 za sažimajući separator (otvoreno prema zadanim postavkama za novu sesiju, a status se čuva za svaku korisničku sesiju)
Postavite ovo na 2 za sažimajući separator (sažeto prema zadanim postavkama za novu sesiju, a zatim status se čuva za svaku korisničku sesiju) LibraryToBuildPDF=Biblioteka korištena za kreiranje PDF-a @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Redovni izraz za čišćenje vrijednosti (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite određene riječi prilikom generiranja podračuna za kupce ili dobavljače RemoveSpecialWordsHelp=Odredite riječi koje treba očistiti prije izračunavanja računa kupca ili dobavljača. Koristi ";" između svake riječi -GDPRContact=Službenik za zaštitu podataka (DPO, kontakt za privatnost podataka ili GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ako u svom Informacijskom sustavu pohranjujete osobne podatke, ovdje možete navesti kontakt odgovornog za Opću uredbu o zaštiti podataka HelpOnTooltip=Tekst pomoći za prikaz u opisu alata HelpOnTooltipDesc=Ovdje stavite tekst ili ključ za prijevod kako bi se tekst prikazao u opisu alata kada se ovo polje pojavi u obrascu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime treće strane - alias treće strane ALIAS_THIRDPARTY=Alias treće strane - Ime treće strane PDFIn2Languages=Prikaži oznake u PDF-u na 2 različita jezika (ova značajka možda neće raditi za nekoliko jezika) PDF_USE_ALSO_LANGUAGE_CODE=Ako želite imati neke tekstove u vašem PDF-u duplicirane na 2 različita jezika u istom generiranom PDF-u, morate ovdje postaviti ovaj drugi jezik tako da će generirani PDF sadržavati 2 različita jezika na istoj stranici, onom odabranom prilikom generiranja PDF-a i ovaj (ovo podržava samo nekoliko PDF predložaka). Ostavite prazno za 1 jezik po PDF-u. -PDF_USE_A=Generirajte PDF dokumente s formatom PDF/A umjesto zadanog formata PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ovdje unesite kod ikone FontAwesome. Ako ne znate što je FontAwesome, možete koristiti generičku vrijednost fa-address-book. RssNote=Napomena: Svaka definicija RSS feeda pruža widget koji morate omogućiti da bi bio dostupan na nadzornoj ploči JumpToBoxes=Skočite na Postavljanje -> Widgeti @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index f5c334e8f2f..3e5e69e9e6f 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Az értékek listájának olyan sorokat kell tartalmaz ExtrafieldParamHelpcheckbox=Az értékek listájának soroknak kell lennie formátumkulccsal, értékkel (ahol a kulcs nem lehet „0”)

például:
1,érték1
2,érték2
3, érték3
... ExtrafieldParamHelpradio=Az értékek listájának soroknak kell lennie formátumkulccsal, értékkel (ahol a kulcs nem lehet „0”)

például:
1,érték1
2,érték2
3, érték3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=A paramétereknek ObjectName:Classpath típusúnak kell lennie
Szintaxis: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hagyja üresen egyszerű elválasztó esetén
Állítsa ezt 1-re összecsukódó elválasztó esetén (alapértelmezés szerint nyitva van új munkamenethez, majd az állapot megmarad minden felhasználói munkamenethez)
Állítsa ezt 2-re összecsukódó elválasztó esetén (alapértelmezés szerint összecsukva új munkamenet, akkor az állapot minden felhasználói munkamenetre megmarad) LibraryToBuildPDF=A PDF létrehozásához használt programkönyvtár @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex szűrő az érték tisztításához (COMPANY DuplicateForbidden=Másolás tilos RemoveSpecialWords=Tisztítson meg bizonyos szavakat az ügyfelek vagy beszállítók alfiókjainak létrehozásakor RemoveSpecialWordsHelp=Adja meg a tisztítandó szavakat a vevő vagy a szállító fiók kiszámítása előtt. Használj ";" az egyes szavak között -GDPRContact=Adatvédelmi tiszt (adatvédelmi tisztviselő, adatvédelmi vagy GDPR kapcsolattartó) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ha személyes adatokat tárol az Információs Rendszerében, itt meg tudja nevezni az Általános Adatvédelmi Szabályzatért felelős kapcsolattartót HelpOnTooltip=Az eszköztippen megjelenő súgószöveg HelpOnTooltipDesc=Tegyen ide szöveget vagy fordítókulcsot, hogy a szöveg megjelenjen az eszköztippben, amikor ez a mező megjelenik egy űrlapon @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Harmadik fél neve – Harmadik fél álneve ALIAS_THIRDPARTY=Harmadik fél alias – Harmadik fél neve PDFIn2Languages=Címkék megjelenítése a PDF-ben 2 különböző nyelven (ez a funkció néhány nyelven nem működik) PDF_USE_ALSO_LANGUAGE_CODE=Ha azt szeretné, hogy a PDF-ben lévő szövegek egy része 2 különböző nyelven legyen megkettőzve ugyanabban a generált PDF-ben, itt be kell állítania ezt a második nyelvet, így a létrehozott PDF 2 különböző nyelvet fog tartalmazni ugyanazon az oldalon, a PDF generálásakor választott nyelvet és ezt egy (csak néhány PDF-sablon támogatja ezt). Tartsa üresen PDF-enként 1 nyelv esetén. -PDF_USE_A=PDF-dokumentumok létrehozása PDF/A formátumban az alapértelmezett PDF helyett +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Írja be ide a FontAwesome ikon kódját. Ha nem tudja, mi az a FontAwesome, használhatja az általános érték fa-címjegyzékét. RssNote=Megjegyzés: Minden RSS-hírcsatorna-definíció tartalmaz egy widgetet, amelyet engedélyezned kell, hogy elérhető legyen az irányítópulton JumpToBoxes=Ugrás a Beállítás -> Widgetek menüpontra @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index adb0405b9f6..d203394841a 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Daftar nilai harus berupa garis dengan kunci format, n ExtrafieldParamHelpcheckbox=Daftar nilai harus berupa garis dengan kunci format, nilai (di mana kunci tidak boleh '0')

misalnya:
1, value1
2, value2 a0342fccfda2b3f0f3f0f3f ExtrafieldParamHelpradio=Daftar nilai harus berupa garis dengan kunci format, nilai (di mana kunci tidak boleh '0')

misalnya:
1, value1
2, value2 a0342fccfda2b3f0f3f0f3f ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameter harus ObjectName: Classpath
Sintaks: ObjectName: Classpath ExtrafieldParamHelpSeparator=Biarkan kosong untuk pemisah sederhana
Setel ini menjadi 1 untuk pemisah runtuh (buka secara default untuk sesi baru, kemudian status disimpan untuk setiap sesi pengguna) status disimpan sebelum setiap sesi pengguna) LibraryToBuildPDF=Perpustakaan digunakan untuk pembuatan PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter untuk membersihkan nilai (COMPANY_DIG DuplicateForbidden=Duplikat dilarang RemoveSpecialWords=Bersihkan kata-kata tertentu saat membuat sub-akun untuk pelanggan atau pemasok RemoveSpecialWordsHelp=Tentukan kata-kata yang akan dibersihkan sebelum menghitung akun pelanggan atau pemasok. Gunakan ";" di antara setiap kata -GDPRContact=Petugas Perlindungan Data (DPO, Privasi Data, atau kontak GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jika Anda menyimpan data pribadi di Sistem Informasi Anda, Anda dapat menyebutkan kontak yang bertanggung jawab atas Peraturan Perlindungan Data Umum di sini HelpOnTooltip=Bantu teks untuk ditampilkan di tooltip HelpOnTooltipDesc=Letakkan teks atau kunci terjemahan di sini agar teks ditampilkan di tooltip saat baris ini muncul dalam formulir @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nama pihak ketiga - Alias pihak ketiga ALIAS_THIRDPARTY=Alias pihak ketiga - Nama pihak ketiga PDFIn2Languages=Tampilkan label di PDF dalam 2 bahasa berbeda (fitur ini mungkin tidak berfungsi untuk beberapa bahasa) PDF_USE_ALSO_LANGUAGE_CODE=Jika Anda ingin agar beberapa teks dalam PDF Anda digandakan dalam 2 bahasa berbeda dalam PDF yang dihasilkan sama, Anda harus mengatur di sini bahasa kedua ini sehingga PDF yang dihasilkan akan berisi 2 bahasa berbeda di halaman yang sama, yang dipilih saat membuat PDF dan yang ini ( hanya beberapa templat PDF yang mendukung ini). Biarkan kosong untuk 1 bahasa per PDF. -PDF_USE_A=Hasilkan dokumen PDF dengan format PDF/A, bukan format default PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Masukkan di sini kode ikon FontAwesome. Jika Anda tidak tahu apa itu FontAwesome, Anda dapat menggunakan fa-address-book nilai umum. RssNote=Catatan: Setiap definisi umpan RSS menyediakan widget yang harus Anda aktifkan agar tersedia di dasbor JumpToBoxes=Langsung ke Pengaturan -> Widget @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index e57732dfd95..67d4229dc0f 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=I parametri devono essere ObjectName:Classpath
Sintassi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) LibraryToBuildPDF=Libreria utilizzata per generare PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter su clean value (COMPANY_DIGITARIA_CLE DuplicateForbidden=Vietata la duplicazione RemoveSpecialWords=Pulisci alcune parole durante la generazione di sottoconti per clienti o fornitori RemoveSpecialWordsHelp=Specificare le parole da pulire prima di calcolare il conto cliente o fornitore. Usare un ";" tra ogni parola -GDPRContact=DPO (Data Protection Officer) o in italiano RPD (Responsabile della Protezione dei Dati) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Se memorizzi dati personali nel tuo Sistema Informativo, puoi nominare qui il contatto responsabile del Regolamento generale sulla protezione dei dati HelpOnTooltip=Testo di aiuto da mostrare come tooltip HelpOnTooltipDesc=Inserisci qui il testo o una chiave di traduzione affinché il testo sia mostrato nel tooltip quando questo campo appare in un form @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome di terze parti: alias di terze parti ALIAS_THIRDPARTY=Alias di terze parti: nome di terze parti PDFIn2Languages=Mostra le etichette nel PDF in 2 lingue diverse (questo funzionalità potrebbe non funzionare per alcune lingue) PDF_USE_ALSO_LANGUAGE_CODE=Se vuoi avere alcuni testi nel tuo PDF duplicato in 2 lingue diverse nello stesso PDF generato, devi impostare qui la seconda lingua in modo che il PDF generato contenga 2 lingue diverse nella stessa pagina, quella scelta durante la generazione del PDF e questa ( solo pochi modelli PDF supportano questa opzione). Mantieni vuoto per 1 lingua per PDF. -PDF_USE_A=Genera documenti PDF con formato PDF/A anziché default formato PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Inserisci qui il codice di un'icona FontAwesome. Se non sai cos'è FontAwesome, puoi utilizzare il valore generico fa-address-book. RssNote=Nota: ogni definizione di feed RSS fornisce un widget che è necessario abilitare per renderlo disponibile nella dashboard JumpToBoxes=Vai a Setup -> Widget @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index c5afb93e8ed..128816037f1 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=値のリストは、 key,value形式 (key は '0' 以 ExtrafieldParamHelpcheckbox=値のリストは、 key,value形式 (key は '0' 以外) の行であること

例 :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=値のリストは、 key,value形式 (key は '0' 以外) の行であること

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=値のリストはテーブルから取得される
構文: table_name:label_field:id_field::filtersql
例: c_typent:libelle:id::filtersql

- id_field は必ず主 int キーだ
- filtersql は条件だ。USF 構文を使用する必要がある。例: (active:=:1) はアクティブな値のみを表示する
また、フィルターでは現在のオブジェクトの現在の ID である $ID$ を使用することもできる
extrafields でフィルターする場合は、構文 extra.fieldcode=... を使用する (fieldcode は extrafield の コード )

別の補完属性リストに依存するリストを作成するには:
c_typent:libelle:id:parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=値のリストはテーブルから取得される
構文: table_name:label_field:id_field::filtersql
例: c_typent:libelle:id::filtersql

フィルターは簡単なテストにすることができる (例: active=1 はアクティブな値のみを表示する)
フィルターでは、現在のオブジェクトの現在の ID である $ID$ を使用することもできる
フィルターで SELECT を実行するには、$SEL$ を使用する
extrafields でフィルターする場合は、構文 extra.fieldcode=... を使用する (フィールド コード は、extrafield の コード です)

リストを別の補完属性リストに依存させるには:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

リストを別のリストに依存させるには:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=パラメータはObjectName:Classpathでなければならない
構文:ObjectName:Classpath ExtrafieldParamHelpSeparator=単純なセパレーターの場合は空のままにする
折りたたみセパレーターの場合はこれを1に設定する ( 新規セッションの場合はデフォルトで開き、ユーザセッションごとに状態が保持される )
折りたたみセパレーターの場合はこれを2に設定する ( 新規セッションの場合はデフォルトで折りたたむ。状態は各ユーザセッションの間保持される ) LibraryToBuildPDF=PDF生成に使用されるライブラリ @@ -514,15 +513,15 @@ ModuleCompanyCodeCustomerDigitaria=%sの後に、文字数で切り捨てられ ModuleCompanyCodeSupplierDigitaria=%sの後に、文字数で切り捨てられたサプライヤ名が続く。サプライヤ会計コードの場合は%s。 Use3StepsApproval=デフォルトでは、購買発注は2人の異なるユーザによって作成および承認される必要がある ( 作成する1つのステップ/ユーザと承認する1つのステップ/ユーザ。ユーザが作成と承認の両方の権限を持っている場合は、1つのステップ/ユーザで十分 ) 。金額が専用の値よりも高い場合は、このオプションを使用して3番目のステップ/ユーザ承認を導入するように依頼できる ( したがって、3つのステップが必要になる:1 =検証、2 =最初の承認、3 =金額が十分な場合は2番目の承認 ) 。
1つの承認 ( 2ステップ ) で十分な場合はこれを空に設定し、2番目の承認 ( 3ステップ ) が常に必要な場合は非常に低い値 ( 0.1 ) に設定する。 UseDoubleApproval=金額 ( 税抜き ) が...より高い場合は、3段階の承認を使用すること。 -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=注意: アプリケーションからメールを送信するための設定では、デフォルトの汎用設定 (「%s」と呼ばれる) が使用される。この選択には、技術的な知識や特別な設定は必要ない。
ただし、多くの場合、送信メールをデフォルトの設定に代えて、発信メール設定を別のやり方(「%s」と呼ばれる)、メールサービスプロバイダのメール サーバ を使用するように設定することをお勧めする。これにはいくつかの理由がある: WarningPHPMailA=- メール サービス プロバイダのサーバ を使用すると、メールの信頼性が高まり、スパムとしてフラグ付けされることなく配信率が向上する -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- メールのドメイン (mymaildomain.com から myname@mymaildomain.com までの部分) が SPF + DMARC レコードで保護されている場合、送信者のドメイン (mymaildomain.com) の DNS ゾーンに定義されている DMARC ルールでは一般的な送信者としての送信が許可されていないため、メールが SPAM としてフラグ付けされる可能性がある。このような場合は、ドメインの DMARC を無効にする (または @gmail.com のように p=none に設定する) 必要がある。または、技術的な知識がある場合は、自分のメール プロバイダーの SMTP サーバ を使用してメールを送信する別の方法を使用することをお勧めする。 WarningPHPMailC=-独自の電子メールサービスプロバイダーのSMTPサーバーを使用して電子メールを送信することも興味深いので、アプリケーションから送信される全電子メールもメールボックスの「送信済」ディレクトリに保存される。 WarningPHPMailD=したがって、電子メールの送信方法を値「SMTP」に変更することをお勧めする。 WarningPHPMailDbis=メールを送信するデフォルトの「PHP」メソッドを本当に維持したい場合は、この警告を無視するか、%sここをクリック%sして削除すること。 WarningPHPMail2=電子メールSMTPプロバイダーが電子メールクライアントをいくつかのIPアドレスに制限する必要がある場合 ( 非常にまれ ) 、これはERP CRMアプリケーションのメールユーザエージェント ( MUA ) のIPアドレス : %s。 -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +WarningPHPMailSPF=送信者のメール アドレスのドメイン名が SPF レコードで保護されている場合 (ドメイン名登録者に問い合わせること)、ドメインの DNS の SPF レコードに次の IP またはエントリを追加する必要がある: %s。 +WarningPHPMailSPFDMARC=送信者のメール アドレスのドメイン名が p=none 以外の DMARC レコードで保護されている場合 (ドメイン名登録業者に問合せ)、DMARC レコードを削除するか、@gmail.com のように p=none に設定)するか、別の送信方法を使用する必要がある。 SPFAndDMARCInformation=メインメールアドレスの SPF および DMARC DNS レコード ActualMailDNSRecordFound=実際の %s レコードが見つかった (メール %s 用): %s ClickToShowDescription=クリックして説明を表示 @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=値をクリーンアップするための正規 DuplicateForbidden=重複禁止 RemoveSpecialWords=顧客またはサプライヤーのサブアカウントを生成するときに特定の単語を削除する RemoveSpecialWordsHelp=顧客または仕入先の勘定科目を計算する前に、クリーニングする単語を指定する。 ";" で単語を区切る -GDPRContact=データ保護責任者 ( DPO、データプライバシーまたはGDPRの連絡先 ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=個人データを情報システムに保存する場合は、ここで一般データ保護規則の責任者を指名できる HelpOnTooltip=ツールチップに表示するヘルプテキスト HelpOnTooltipDesc=このフィールドがフォームに表示されたときにツールチップに表示されるテキストのテキストまたは翻訳キーをここに入力する @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=取引先名 - 取引先エイリアス ALIAS_THIRDPARTY=取引先エイリアス - 取引先名 PDFIn2Languages=PDF 内のラベルを 2 つの異なる言語で表示する (この機能はいくつかの言語では機能しない場合がある) PDF_USE_ALSO_LANGUAGE_CODE=PDF内の一部のテキストを同じ生成PDFで2つの異なる言語で複製する場合は、ここでこの2番目の言語を設定して、生成されたPDFに同じページに2つの異なる言語が含まれるようにする必要がある。1つはPDFの生成時に選択され、もう1つは ( これをサポートしているPDFテンプレートはごくわずか ) 。 PDFごとに1つの言語を空のままにする。 -PDF_USE_A=デフォルト形式の PDF ではなく PDF/A 形式で PDF ドキュメントを生成する +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesomeアイコンのコードをここに入力する。 FontAwesomeとは何かわからない場合は、一般的な値fa-address-bookを使用できる。 RssNote=注:各RSSフィード定義は、ダッシュボードで使用できるようにするために有効化の必要があるウィジェットを提供する JumpToBoxes=【設定】-> 【ウィジェット】にジャンプする @@ -2555,3 +2554,8 @@ MenuDict=辞書 AddMoreParams=接続のパラメータを追加する (Cookie、トークンなど)
例: token : value token ParamName=パラメータ名 ParamValue=パラメータの値 +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/kk_KZ/admin.lang b/htdocs/langs/kk_KZ/admin.lang index fec9da36d29..34a476a51e5 100644 --- a/htdocs/langs/kk_KZ/admin.lang +++ b/htdocs/langs/kk_KZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Мәндер тізімі формат кілті ба ExtrafieldParamHelpcheckbox=Мәндер тізімі формат кілті бар жолдар болуы керек, мән (мұнда кілт '0' болмауы керек)

1, мән1
2, мән2 a0342fccff319f03 ExtrafieldParamHelpradio=Мәндер тізімі формат кілті бар жолдар болуы керек, мән (мұнда кілт '0' болмауы керек)

1, мән1
2, мән2 a0342fccff319f03 ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметрлер ObjectName болуы керек: Classpath
Синтаксис: ObjectName: Classpath ExtrafieldParamHelpSeparator=Қарапайым сепаратор үшін бос ұстаңыз күй әр пайдаланушы сеансы алдында сақталады) LibraryToBuildPDF=PDF құру үшін пайдаланылатын кітапхана @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Регекс сүзгісі таза мәнге (C DuplicateForbidden=Көшірме жасауға тыйым салынады RemoveSpecialWords=Тұтынушылар немесе жеткізушілер үшін қосалқы шоттарды жасау кезінде белгілі бір сөздерді тазалаңыз RemoveSpecialWordsHelp=Тұтынушы немесе жеткізушінің шотын есептеу алдында тазартылатын сөздерді көрсетіңіз. «;» пайдаланыңыз әр сөз арасында -GDPRContact=Деректерді қорғау жөніндегі қызметкер (DPO, деректердің құпиялылығы немесе GDPR байланысы) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Жеке деректерді Ақпараттық жүйеңізде сақтасаңыз, Деректерді қорғаудың жалпы ережесіне жауапты контактіні осы жерде атай аласыз HelpOnTooltip=Мәтінді құралдар тақтасында көрсетуге көмектесіңіз HelpOnTooltipDesc=Мәтін немесе аударма кілтін осы өріс пішінде пайда болған кезде құралдар кеңесінде көрсету үшін осында қойыңыз @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Үшінші тарап аты - Үшінші тарап бүр ALIAS_THIRDPARTY=Үшінші тарап бүркеншік аты - Үшінші тарап аты PDFIn2Languages=PDF форматындағы белгілерді 2 түрлі тілде көрсету (бұл мүмкіндік кейбір бірнеше тілде жұмыс істемеуі мүмкін) PDF_USE_ALSO_LANGUAGE_CODE=Егер сіз PDF -тегі кейбір мәтіндерді бір PDF форматында 2 түрлі тілде қайталағыңыз келсе, мұнда осы екінші тілді орнатуыңыз керек, осылайша жасалған PDF бір бетте 2 түрлі тілді қамтиды, PDF жасау кезінде таңдалған және осы PDF -тің бірнеше үлгілері ғана қолдайды). PDF үшін 1 тіл үшін бос қалдырыңыз. -PDF_USE_A=Әдепкі PDF пішімінің орнына PDF/A пішімі бар PDF құжаттарын жасаңыз +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Мұнда FontAwesome белгішесінің кодын енгізіңіз. Егер сіз FontAwesome деген не екенін білмесеңіз, fa-address-book жалпы мәнін пайдалана аласыз. RssNote=Ескерту: RSS арнасының әр анықтамасы бақылау тақтасында қол жетімді болуы үшін оны қосу қажет виджетті қамтамасыз етеді JumpToBoxes=Орнату -> виджеттерге өтіңіз @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/km_KH/admin.lang b/htdocs/langs/km_KH/admin.lang index 8b4ad5a1180..6508afdfbe8 100644 --- a/htdocs/langs/km_KH/admin.lang +++ b/htdocs/langs/km_KH/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=ប៉ារ៉ាម៉ែត្រត្រូវតែជា ObjectName:Classpath
វាក្យសម្ព័ន្ធ៖ ObjectName:Classpath ExtrafieldParamHelpSeparator=ទុកទទេសម្រាប់សញ្ញាបំបែកសាមញ្ញ
កំណត់វាទៅជា 1 សម្រាប់សញ្ញាបំបែកដែលដួលរលំ (បើកតាមលំនាំដើមសម្រាប់វគ្គថ្មី បន្ទាប់មកស្ថានភាពត្រូវបានរក្សាទុកសម្រាប់សម័យអ្នកប្រើប្រាស់នីមួយៗ)
កំណត់វាទៅជា 2 សម្រាប់សញ្ញាបំបែកដែលដួលរលំ (ដួលរលំតាមលំនាំដើមសម្រាប់វគ្គថ្មី បន្ទាប់មកស្ថានភាពត្រូវបានរក្សាទុកសម្រាប់សម័យអ្នកប្រើប្រាស់នីមួយៗ) LibraryToBuildPDF=បណ្ណាល័យប្រើសម្រាប់ការបង្កើត PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=តម្រង Regex ដើម្បីសម្ DuplicateForbidden=ហាមចម្លង RemoveSpecialWords=សម្អាតពាក្យជាក់លាក់នៅពេលបង្កើតគណនីរងសម្រាប់អតិថិជន ឬអ្នកផ្គត់ផ្គង់ RemoveSpecialWordsHelp=បញ្ជាក់ពាក្យដែលត្រូវសម្អាតមុនពេលគណនាគណនីអតិថិជន ឬអ្នកផ្គត់ផ្គង់។ ប្រើ ";" រវាងពាក្យនីមួយៗ -GDPRContact=មន្ត្រីការពារទិន្នន័យ (DPO, ឯកជនភាពទិន្នន័យ ឬទំនាក់ទំនង GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=ប្រសិនបើអ្នករក្សាទុកទិន្នន័យផ្ទាល់ខ្លួននៅក្នុងប្រព័ន្ធព័ត៌មានរបស់អ្នក អ្នកអាចដាក់ឈ្មោះទំនាក់ទំនងដែលទទួលខុសត្រូវចំពោះបទប្បញ្ញត្តិការពារទិន្នន័យទូទៅនៅទីនេះ HelpOnTooltip=អត្ថបទជំនួយដើម្បីបង្ហាញនៅលើព័ត៌មានជំនួយ HelpOnTooltipDesc=ដាក់អត្ថបទ ឬគន្លឹះបកប្រែនៅទីនេះសម្រាប់អត្ថបទដើម្បីបង្ហាញនៅក្នុងព័ត៌មានជំនួយ នៅពេលដែលវាលនេះបង្ហាញក្នុងទម្រង់មួយ។ @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=ឈ្មោះភាគីទីបី - ឈ្មោះភា ALIAS_THIRDPARTY=ឈ្មោះភាគីទីបី - ឈ្មោះភាគីទីបី PDFIn2Languages=បង្ហាញស្លាកនៅក្នុង PDF ជា 2 ភាសាផ្សេងគ្នា (លក្ខណៈពិសេសនេះប្រហែលជាមិនដំណើរការសម្រាប់ពីរបីភាសាទេ) PDF_USE_ALSO_LANGUAGE_CODE=ប្រសិនបើអ្នកចង់ឱ្យអត្ថបទមួយចំនួននៅក្នុង PDF របស់អ្នកស្ទួនជា 2 ភាសាផ្សេងគ្នានៅក្នុង PDF ដែលបានបង្កើតដូចគ្នា អ្នកត្រូវតែកំណត់នៅទីនេះជាភាសាទីពីរនេះ ដូច្នេះ PDF ដែលត្រូវបានបង្កើតនឹងមាន 2 ភាសាផ្សេងគ្នានៅក្នុងទំព័រតែមួយ ដែលជាភាសាដែលត្រូវបានជ្រើសរើសនៅពេលបង្កើត PDF និងមួយ ( មានតែគំរូ PDF មួយចំនួនប៉ុណ្ណោះដែលគាំទ្រវា) ។ ទុកទទេសម្រាប់ 1 ភាសាក្នុងមួយ PDF ។ -PDF_USE_A=បង្កើតឯកសារ PDF ជាទម្រង់ PDF/A ជំនួសឱ្យទម្រង់ PDF លំនាំដើម +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=បញ្ចូលកូដនៃរូបតំណាង FontAwesome នៅទីនេះ។ ប្រសិនបើអ្នកមិនដឹងថាអ្វីជា FontAwesome អ្នកអាចប្រើតម្លៃទូទៅ fa-address-book ។ RssNote=ចំណាំ៖ និយមន័យមតិព័ត៌មាន RSS នីមួយៗផ្តល់នូវធាតុក្រាហ្វិកដែលអ្នកត្រូវតែបើកដើម្បីឱ្យវាមាននៅក្នុងផ្ទាំងគ្រប់គ្រង JumpToBoxes=លោតទៅការដំឡើង -> ធាតុក្រាហ្វិក @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index 3331840596d..c4882c77b67 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=ບັນຊີລາຍຊື່ຂອງຄ່າຕ ExtrafieldParamHelpcheckbox=ລາຍການຄ່າຕ້ອງເປັນແຖວທີ່ມີລະຫັດຮູບແບບ, ຄ່າ (ບ່ອນທີ່ກະແຈບໍ່ສາມາດເປັນ '0')

ຕົວຢ່າງ:
1, value1
2, value2
3, value3 a0cc2 ... ExtrafieldParamHelpradio=ລາຍການຄ່າຕ້ອງເປັນແຖວທີ່ມີລະຫັດຮູບແບບ, ຄ່າ (ບ່ອນທີ່ກະແຈບໍ່ສາມາດເປັນ '0')

ຕົວຢ່າງ:
1, value1
2, value2
3, value3 a0cc2 ... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=ພາຣາມິເຕີຕ້ອງເປັນ ObjectName: Classpath
Syntax: ObjectName: Classpath ExtrafieldParamHelpSeparator=ຮັກສາຫວ່າງເປົ່າສໍາລັບຕົວແຍກແບບງ່າຍ simple
ຕັ້ງອັນນີ້ເປັນ 1 ສໍາລັບຕົວແຍກຕົວຫຍໍ້ (ເປີດຕາມຄ່າເລີ່ມຕົ້ນສໍາລັບຊ່ວງເວລາເຂົ້າໃ,່, ຈາກນັ້ນສະຖານະຈະຖືກເກັບໄວ້ສໍາລັບແຕ່ລະຊ່ວງເວລາຂອງຜູ້ໃຊ້)
ກໍານົດອັນນີ້ເປັນ 2 ສໍາລັບຕົວແຍກການຫຍໍ້ (ຫຍໍ້ລົງຕາມຄ່າເລີ່ມຕົ້ນສໍາລັບເຊດຊັນໃ,່, ຈາກນັ້ນ ສະຖານະພາບໄດ້ຖືກເກັບຮັກສາໄວ້ໃນແຕ່ລະກອງປະຊຸມຜູ້ໃຊ້) LibraryToBuildPDF=ຫ້ອງສະusedຸດໃຊ້ ສຳ ລັບສ້າງ PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ຕົວກອງ Regex ເພື່ອເຮັ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ເຮັດຄວາມສະອາດຄໍາທີ່ແນ່ນອນໃນເວລາທີ່ສ້າງບັນຊີຍ່ອຍສໍາລັບລູກຄ້າຫຼືຜູ້ສະຫນອງ RemoveSpecialWordsHelp=ລະບຸຄໍາທີ່ຕ້ອງເຮັດຄວາມສະອາດກ່ອນທີ່ຈະຄິດໄລ່ບັນຊີລູກຄ້າຫຼືຜູ້ສະຫນອງ. ໃຊ້ ";" ລະຫວ່າງແຕ່ລະຄໍາ -GDPRContact=ເຈົ້າ ໜ້າ ທີ່ປົກປ້ອງຂໍ້ມູນ (DPO, ຄວາມເປັນສ່ວນຕົວຂອງຂໍ້ມູນຫຼືການຕິດຕໍ່ GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=ຖ້າທ່ານເກັບຂໍ້ມູນສ່ວນຕົວຢູ່ໃນລະບົບຂໍ້ມູນຂອງທ່ານ, ທ່ານສາມາດຕັ້ງຊື່ຜູ້ຕິດຕໍ່ຜູ້ທີ່ຮັບຜິດຊອບຕໍ່ກົດລະບຽບການປົກປ້ອງຂໍ້ມູນທົ່ວໄປຢູ່ທີ່ນີ້ HelpOnTooltip=ຂໍ້ຄວາມຊ່ວຍເຫຼືອເພື່ອສະແດງຢູ່ໃນຄໍາແນະນໍາ HelpOnTooltipDesc=ວາງຕົວ ໜັງ ສືຫຼືກະແຈການແປຢູ່ບ່ອນນີ້ເພື່ອໃຫ້ຂໍ້ຄວາມສະແດງຢູ່ໃນ ຄຳ ແນະ ນຳ ເມື່ອຊ່ອງຂໍ້ມູນນີ້ປະກົດຂຶ້ນໃນແບບຟອມ @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=ຊື່ພາກສ່ວນທີສາມ - ນາມແຝ ALIAS_THIRDPARTY=ນາມແຝງພາກສ່ວນທີສາມ - ຊື່ພາກສ່ວນທີສາມ PDFIn2Languages=ສະແດງປ້າຍຊື່ໃນ PDF ເປັນ 2 ພາສາທີ່ແຕກຕ່າງກັນ (ຄຸນສົມບັດນີ້ອາດຈະບໍ່ເຮັດວຽກກັບບາງພາສາ) PDF_USE_ALSO_LANGUAGE_CODE=ຖ້າເຈົ້າຕ້ອງການໃຫ້ມີຕົວ ໜັງ ສືບາງອັນຢູ່ໃນ PDF ຂອງເຈົ້າຊໍ້າກັນຢູ່ໃນ 2 ພາສາທີ່ແຕກຕ່າງກັນຢູ່ໃນ PDF ທີ່ສ້າງຂຶ້ນອັນດຽວກັນ, ເຈົ້າຕ້ອງຕັ້ງເປັນພາສາທີສອງຢູ່ທີ່ນີ້ເພື່ອໃຫ້ PDF ທີ່ສ້າງຂຶ້ນຈະມີ 2 ພາສາແຕກຕ່າງກັນຢູ່ໃນ ໜ້າ ດຽວ, ອັນທີ່ເລືອກເມື່ອສ້າງ PDF ແລະອັນນີ້ ( ມີພຽງແຕ່ແມ່ແບບ PDF ບາງອັນທີ່ສະ ໜັບ ສະ ໜູນ ອັນນີ້). ຮັກສາຫວ່າງເປົ່າສໍາລັບ 1 ພາສາຕໍ່ PDF. -PDF_USE_A=ສ້າງເອກະສານ PDF ທີ່ມີຮູບແບບ PDF/A ແທນທີ່ຈະເປັນຮູບແບບ PDF ເລີ່ມຕົ້ນ +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=ໃສ່ທີ່ນີ້ລະຫັດຂອງໄອຄອນ FontAwesome. ຖ້າເຈົ້າບໍ່ຮູ້ວ່າ FontAwesome ແມ່ນຫຍັງ, ເຈົ້າສາມາດໃຊ້ຄ່າທົ່ວໄປ fa-address-book. RssNote=Noteາຍເຫດ: ແຕ່ລະນິຍາມອາຫານ RSS ໃຫ້ widget ທີ່ເຈົ້າຕ້ອງເປີດໃຊ້ເພື່ອໃຫ້ມັນມີຢູ່ໃນ dashboard JumpToBoxes=ໄປຫາການຕັ້ງຄ່າ -> ວິດເຈັດ @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index a7e61ee79ee..b0a6770577e 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -365,17 +365,17 @@ UpdateServerOffline=Atjaunināšanas serveris bezsaistē WithCounter=Pārvaldīt skaitītāju GenericMaskCodes=Jūs varat ievadīt jebkuru numerācijas masku. Šajā maskā var izmantot šādus tagus:
{000000} atbilst skaitlim, kas tiks palielināts katrā %s. Ievadiet tik daudz nulles, cik vēlamais skaitītāja garums. Skaitītāju aizpildīs ar nulli no kreisās puses, lai tajā būtu tikpat daudz nulles kā maskā.
{000000 + 000} tāds pats kā iepriekšējais, bet nobīde, kas atbilst skaitlim pa labi no zīmes +, tiek piemērota, sākot ar pirmo %s.
{000000 @ x} tāds pats kā iepriekšējais, bet skaitītājs tiek atiestatīts uz nulli, kad ir sasniegts mēnesis x (x no 1 līdz 12, vai 0, lai izmantotu jūsu konfigurācijā definētos fiskālā gada sākuma mēnešus, vai no 99 līdz katru mēnesi atiestatīt uz nulli). Ja tiek izmantota šī opcija un x ir 2 vai lielāks, ir nepieciešama arī secība {yy} {mm} vai {gggg} {mm}.
{dd} diena (no 01 līdz 31).
{mm} mēnesis (no 01 līdz 12).
{yy} , {yyyy} vai {y} a09a4b
GenericMaskCodes2= {cccc} klienta kods uz n rakstzīmēm
{cccc000} a09a4b739f17fz Šis klientam veltītais skaitītājs tiek atiestatīts vienlaikus ar globālo skaitītāju.
{tttt} Trešās puses tipa kods uz n rakstzīmēm (skatiet izvēlni Sākums - Iestatīšana - Vārdnīca - Trešo personu veidi). Ja pievienosit šo tagu, katram trešās puses tipam skaitītājs būs atšķirīgs.
-GenericMaskCodes2b={uuuu} the n first characters of the lastname of the user that creates the object (n is number of "u"). +GenericMaskCodes2b={uuuu} tā lietotāja uzvārda n pirmās rakstzīmes izveido objektu (n ir "u" skaitlis). GenericMaskCodes3=Visas citas rakstzīmes masku paliks neskartas.
Atstarpes nav atļautas.
GenericMaskCodes3EAN=Visas pārējās maskas rakstzīmes paliks neskartas (izņemot * vai? EAN13 13. pozīcijā).
Atstarpes nav atļautas.
EAN13, pēdējam rakstzīmei pēc pēdējā} 13. pozīcijā jābūt * vai? . To aizstās aprēķinātā atslēga.
GenericMaskCodes4a=Piemērs par trešās puses TheCompany 99. piemēru %s ar datumu 2023. 01.31.:
GenericMaskCodes4b=Example on third party created on 2023-01-31:
GenericMaskCodes4c=Piemērs par produktu, kas izveidots 2023.01.31.:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX -GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} will give IN2301-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' +GenericMaskCodes5=ABC{yy}{mm}-{000000} sniegs b0aee833650ABC2301-000099
}-ZZZ/{dd}/XXX
sniegs 0199-ZZZ/31/XXX +GenericMaskCodes5b=IN{yy}{mm}-8dza358d453 -{t} sniegs IN230-1- A, ja uzņēmuma veids ir “Atbildīgs Inscripto” ar tipa kodu “A_RI” GenericNumRefModelDesc=Atgriež pielāgojamu numuru atbilstoši noteiktajai maskai. -DateStartThatModel=Disable use of this numbering rule for all thirdparties created before -DateStartThatModelHelp=You can disable elephant numbering rule for thirdparties created before a date (for example, because they were imported by a migration, from another software using a different rule). Let that field empty to have the rule applied on all thirdparties. +DateStartThatModel=Atspējot šīs numerācijas kārtulas izmantošanu visām iepriekš izveidotajām trešajām pusēm +DateStartThatModelHelp=Varat atspējot ziloņu numerācijas kārtulu trešajām pusēm, kas izveidotas pirms datuma (piemēram, tāpēc, ka tās tika importētas migrācijas rezultātā, no citas programmatūras, izmantojot citu kārtulu). Ļaujiet šim laukam iztukšot, lai kārtula tiktu piemērota visām trešajām pusēm. ServerAvailableOnIPOrPort=Serveris ir pieejams adresē %s ports %s ServerNotAvailableOnIPOrPort=Serveris nav pieejams adresē %s ports %s DoTestServerAvailability=Pārbaudīt servera savienojumu @@ -458,9 +458,9 @@ ExtrafieldSelect=Izvēlēties sarakstu ExtrafieldSelectList=Izvēlieties kādu no tabulas ExtrafieldSeparator=Atdalītājs (nevis lauks) ExtrafieldPassword=Parole -ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) -ExtrafieldCheckBoxFromList=Select from table (n choices) +ExtrafieldRadio=Radio pogas (tikai 1 izvēle) +ExtrafieldCheckBox=Atlasīt sarakstu (n izvēles) +ExtrafieldCheckBoxFromList=Atlasīt no tabulas (n izvēles) ExtrafieldLink=Saite uz objektu ExtrafieldPointGeo=Ģeometriskais punkts ExtrafieldMultiPointGeo=Ģeometriski daudzpunktu @@ -474,8 +474,7 @@ ExtrafieldParamHelpPassword=Ja atstājat šo lauku tukšu, šī vērtība tiks s ExtrafieldParamHelpselect=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
kods3, vērtība3 < br> ...

Lai saraksts būtu atkarīgs no cita papildinošā atribūtu saraksta:
1, vērtība1 | opcijas_ vecāku_līmeņa kods : vecāku_skava
2, vērtība2 | opcijas_ vecāku saraksts_code : parent_key

Lai saraksts būtu atkarīgs no cita saraksta:
1, vērtība1 | vecāku saraksts_code : vecāku_skava
2, vērtība2 | vecāku saraksts_code : vecāku_poga ExtrafieldParamHelpcheckbox=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... ExtrafieldParamHelpradio=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... -ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpsellist=Vērtību saraksts nāk no tabulas
Sintakse: table_name:label_field:id_field::filtersql
Piemērs: c_idtypent:libelle ::filtersql

 — lauks id_field noteikti ir primārā int atslēgab0342fccfda
Varat arī izmantot $ID$ filtrā, kas ir pašreizējā objekta pašreizējais ID.
Ja vēlaties filtrēt papildu laukus, izmantojiet sintaksi extra.fieldcode=... (kur lauka kods ir ekstralauka kods)

Lai saraksts būtu atkarīgs no cita papildu atribūtu saraksta:
c_typent:libelle:id:options_b049271fcze0818 parent_list_code|parent_column:filter
b0342fccfda19bz secībā lai saraksts būtu atkarīgs no cita saraksta:
c_typent:libelle:id:parent_list_code |parent_column:filter ExtrafieldParamHelplink=Parametriem jābūt ObjectName: Classpath
Sintakse: ObjectName: Classpath ExtrafieldParamHelpSeparator=Vienkārša atdalītāja atstāšana tukša
Iestatiet to uz 1 sabrūkošajam atdalītājam (pēc noklusējuma atveriet jaunu sesiju, pēc tam katras lietotāja sesijai tiek saglabāts statuss)
Iestatiet to uz 2 sabrukušajam atdalītājam (jaunajai sesijai pēc noklusējuma sabrūk, pēc tam katras lietotāja sesijas laikā tiek saglabāts statuss) LibraryToBuildPDF=Bibliotēka, ko izmanto PDF veidošanai @@ -514,17 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s, kam seko saīsināts klienta nosaukums ar ModuleCompanyCodeSupplierDigitaria=%s, kam seko saīsināts piegādātāja nosaukums ar rakstzīmju skaitu: %s piegādātāja grāmatvedības kodam. Use3StepsApproval=Pēc noklusējuma ir jābūt veidotam un apstiprinātam Pirkšanas pasūtījumam no 2 dažādiem lietotājiem (viens solis / lietotājs, lai izveidotu un viens solis / lietotājs apstiprinātu. Ņemiet vērā, ka, ja lietotājam ir gan atļauja izveidot un apstiprināt, viens solis / lietotājs būs pietiekams) . Ar šo opciju varat prasīt trešās pakāpes / lietotāja apstiprinājumu, ja summa ir lielāka par īpašo vērtību (tādēļ būs nepieciešami 3 soļi: 1 = validācija, 2 = pirmais apstiprinājums un 3 = otrais apstiprinājums, ja summa ir pietiekama).
Iestatiet, ka tas ir tukšs, ja pietiek vienam apstiprinājumam (2 pakāpieniem), ja tam vienmēr ir nepieciešams otrais apstiprinājums (3 pakāpieni). UseDoubleApproval=Izmantojiet 3 pakāpju apstiprinājumu, ja summa (bez nodokļiem) ir lielāka par ... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=PAZIŅOJUMS. Iestatījumā e-pasta ziņojumu sūtīšanai no lietojumprogrammas tiek izmantota noklusējuma vispārīgā iestatīšana (ko sauc par "%s"). Šai izvēlei nav vajadzīgas tehniskas zināšanas un īpaša iestatīšana.
Tomēr bieži vien labāk ir iestatīt izejošos e-pastus, lai izmantotu citu metodi (ko sauc par %s"), lai izmantotu sava e-pasta pakalpojumu sniedzēja e-pasta serveri, nevis noklusējuma iestatījumu vairāku iemeslu dēļ. WarningPHPMailA=- E-pasta pakalpojumu sniedzēja servera izmantošana palielina jūsu e-pasta uzticamību, tāpēc tas palielina piegādes iespējas, neatzīmējot to kā surogātpastu. -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Ja jūsu e-pasta domēns (daļa mymaildomain.com uz myname@mymaildomain.com) ir aizsargāts ar SPF + DMARC ierakstu, jūsu e-pasts var tikt atzīmēts kā SPAM, jo jūsu DMARC noteikums ir definēts domēna domēna DNS zonā. sūtītājs (mymaildomain.com) neļauj sūtīt kā vispārējs sūtītājs. Šādā gadījumā jums ir jāatspējo domēna DMARC (vai jāiestata uz p=none, kā to izdarīja @gmail.com) vai, labāk, ja jums ir tehniskās zināšanas, izmantojiet citu metodi, lai nosūtītu e-pastus, izmantojot SMTP. sava e-pasta pakalpojumu sniedzēja serveri. WarningPHPMailC=- Arī sava e-pasta pakalpojumu sniedzēja SMTP servera izmantošana e-pasta ziņojumu sūtīšanai ir interesanta, tāpēc visi no lietojumprogrammas nosūtītie e-pasta ziņojumi tiks saglabāti arī jūsu pastkastes direktorijā Nosūtītie. WarningPHPMailD=Tāpēc ir ieteicams mainīt e-pasta sūtīšanas metodi uz vērtību "SMTP". WarningPHPMailDbis=Ja patiešām vēlaties saglabāt noklusējuma "PHP" metodi e-pasta sūtīšanai, vienkārši ignorējiet šo brīdinājumu vai noņemiet to, %snoklikšķinot šeit%s. WarningPHPMail2=Ja jūsu e-pasta SMTP pakalpojumu sniedzējs ierobežo e-pasta klientus uz dažām IP adresēm (ļoti reti), tad jūsu ERP CRM lietojumprogrammas e-pasta lietotāja aģenta (MUA) IP adrese ir: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. -SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses -ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s +WarningPHPMailSPF=Ja domēna nosaukums jūsu sūtītāja e-pasta adresē ir aizsargāts ar SPF ierakstu (jautājiet savam domēna vārda reģistratoram), jums ir jāpievieno šādi IP vai ieraksts sava domēna DNS SPF ierakstā: %s. +WarningPHPMailSPFDMARC=Ja domēna nosaukumu jūsu sūtītāja e-pasta adresē aizsargā DMARC ieraksts, kas atšķiras no p=none (jautājiet savam domēna vārda reģistratoram), jums ir jānoņem savs DMARC ieraksts vai jāiestata uz p=none, piemēram, @gmail.com) vai izmantojiet citu sūtīšanas metodi. +SPFAndDMARCInformation=SPF un DMARC DNS ieraksts galvenajām e-pasta adresēm +ActualMailDNSRecordFound=Atrasts faktiskais %s ieraksts (e-pastam %s): %s ClickToShowDescription=Noklikšķiniet, lai parādītu aprakstu DependsOn=Šim modulim nepieciešams modulis(-i) RequiredBy=Šis modulis nepieciešams modulim (-ļiem) @@ -668,7 +667,7 @@ Module2200Desc=Izmantojiet matemātikas izteiksmes cenu automātiskai ģenerēš Module2300Name=Plānotie darbi Module2300Desc=Plānotais darbavietu vadība (alias cron vai chrono galds) Module2400Name=Pasākumi / darba kārtība -Module2400Desc=Manage manual and automatic events. Use the calendar to record events manually. Log also events automatically for tracking purposes or record manual events or meetings. This is the principal module for good Customer and/or Vendor Relationship Management. +Module2400Desc=Pārvaldiet manuālus un automātiskus notikumus. Izmantojiet kalendāru, lai manuāli ierakstītu notikumus. Reģistrējiet notikumus arī automātiski, lai izsekotu vai ierakstītu manuālus notikumus vai sanāksmes. Šis ir galvenais modulis labas klientu un/vai pārdevēju attiecību pārvaldībai. Module2430Name=Tiešsaistes tikšanās plānošana Module2430Desc=Nodrošina tiešsaistes tikšanās rezervēšanas sistēmu. Tādējādi ikviens var rezervēt tikšanās vietas atbilstoši iepriekš noteiktam diapazonam vai pieejamībai. Module2500Name=DMS / ECM @@ -869,7 +868,7 @@ Permission255=Mainīt citu lietotāju paroli Permission256=Izdzēst vai bloķēt citus lietotājus Permission262=Paplašiniet piekļuvi visām trešajām personām UN to objektiem (ne tikai trešajām personām, kurām lietotājs ir piesaistīts kā tirdzniecības pārstāvis). Permission262b=Nav efektīva ārējiem lietotājiem (vienmēr tikai paši priekšlikumiem, pasūtījumiem, rēķiniem, līgumiem utt.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). +Permission262c=Nav spēkā projektiem (svarīgi ir tikai noteikumi par projektu atļaujām, redzamību un lietotāju piešķiršanu). Permission263=Paplašiniet piekļuvi visām trešajām pusēm BEZ viņu objektiem (ne tikai trešajām personām, kuru lietotājs ir pārdošanas pārstāvis).
Nav efektīvs ārējiem lietotājiem (vienmēr tikai un vienīgi attiecībā uz priekšlikumiem, pasūtījumiem, rēķiniem, līgumiem utt.)
Nav spēkā projektiem (tikai noteikumi par projekta atļaujām, redzamību un piešķiršanas jautājumiem). Permission271=Lasīt CA Permission272=Lasīt rēķinus @@ -946,7 +945,7 @@ Permission776=Apmaksāt izdevumu pārskatus Permission777=Lasīt visus izdevumu pārskatus (arī lietotāja, kas nav padotie) Permission778=Izveidojiet / mainiet visu izdevumu pārskatus Permission779=Eksportēt izdevumu atskaites -Permission1001=Read warehouses and stocks +Permission1001=Izlasiet noliktavas un krājumus Permission1002=Izveidot/labot noliktavas Permission1003=Dzēst noliktavas Permission1004=Lasīt krājumu pārvietošanas @@ -1063,7 +1062,7 @@ Permission54001=Drukāt Permission55001=Lasīt aptaujas Permission55002=Izveidot/labot aptaujas Permission59001=Read commercial margins -Permission59002=Define commercial margins +Permission59002=Definējiet komerciālās normas Permission59003=Read every user margin Permission63001=Lasīt resursus Permission63002=Izveidot/labot resursus @@ -1240,7 +1239,7 @@ CompanyObject=Uzņēmuma objekts IDCountry=ID valsts Logo=Logotips LogoDesc=Galvenais uzņēmuma logotips. Tiks izmantots ģenerētajos dokumentos (PDF, ...) -LogoSquarred=Logotips (kvadrātā) +LogoSquarred=Logotips (kvadrātveida) LogoSquarredDesc=Jābūt kvadrāta ikonai (platums = augstums). Šis logotips tiks izmantots kā iecienītākā ikona vai cita nepieciešamība, piemēram, augšējā izvēlnes joslā (ja displeja iestatījumos tas nav atspējots). DoNotSuggestPaymentMode=Neieteikt NoActiveBankAccountDefined=Nav definēts aktīvs bankas konts @@ -1249,7 +1248,7 @@ BankModuleNotActive=Bankas kontu modulis nav ieslēgts ShowBugTrackLink=Rādīt saiti " %s " ShowBugTrackLinkDesc=Turiet tukšu, lai nerādītu šo saiti, izmantojiet vērtību “github” saitei uz projektu Dolibarr vai tieši definējiet URL “https: // ...” Alerts=Brīdinājumi -DelaysOfToleranceBeforeWarning=Tiek rādīts brīdinājuma brīdinājums... +DelaysOfToleranceBeforeWarning=Tiek rādīts brīdinājums par... DelaysOfToleranceDesc=Iestatiet aizkavi pirms brīdinājuma ikonas %s parādīšanas ekrānā par novēloto elementu. Delays_MAIN_DELAY_ACTIONS_TODO=Plānotie notikumi (darba kārtības notikumi) nav pabeigti Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Projekts nav slēgts laikā @@ -1298,7 +1297,7 @@ SystemInfoDesc=Sistēmas informācija ir dažādi tehniskā informācija jums ti SystemAreaForAdminOnly=Šī sadaļa ir pieejama tikai administratora lietotājiem. Dolibarr lietotāja atļaujas nevar mainīt šo ierobežojumu. CompanyFundationDesc=Rediģējiet sava uzņēmuma / organizācijas informāciju. Kad tas ir izdarīts, noklikšķiniet uz pogas "%s" lapas apakšā. MoreNetworksAvailableWithModule=Iespējojot moduli "Sociālie tīkli", var būt pieejami vairāk sociālo tīklu. -AccountantDesc=Ja jums ir ārējais grāmatvedis / grāmatvedis, varat rediģēt šeit savu informāciju. +AccountantDesc=Ja jums ir ārējais grāmatvedis / grāmatvedis, varat rediģēt šeit informāciju. AccountantFileNumber=Grāmatveža kods DisplayDesc=Šeit var mainīt parametrus, kas ietekmē lietojumprogrammas izskatu un noformējumu. AvailableModules=Pieejamās progrmma / moduļi @@ -1459,7 +1458,7 @@ HRMSetup=HRM moduļa iestatīšana CompanySetup=Uzņēmuma moduļa uzstādīšana CompanyCodeChecker=Klienta/pārdevēja kodu automātiskās ģenerēšanas iespējas AccountCodeManager=Klienta / pārdevēja grāmatvedības kodu automātiskās ģenerēšanas iespējas -NotificationsDesc=Email notifications can be sent automatically on certain events.
Recipients of notifications can be defined: +NotificationsDesc=E-pasta paziņojumus var nosūtīt automātiski par noteiktiem notikumiem.
Paziņojumu saņēmējus var definēt: NotificationsDescUser=* katram lietotājam (lietotāja cilnē "Paziņojumi") NotificationsDescContact=* par trešās puses kontaktpersonām (trešās puses cilnē "Paziņojumi") NotificationsDescGlobal=* vai iestatot globālās e-pasta adreses (moduļa iestatīšanas lapā). @@ -1483,7 +1482,7 @@ BillsNumberingModule=Rēķinu un kredītu piezīmes numerācijas modelis BillsPDFModules=Rēķina dokumentu modeļi BillsPDFModulesAccordindToInvoiceType=Rēķinu dokumentu modeļi atbilstoši rēķina veidam PaymentsPDFModules=Maksājumu dokumentu paraugi -ForceInvoiceDate=Force rēķina datumu apstiprināšanas datuma +ForceInvoiceDate=Rēķina datums kā pārbaudes datums SuggestedPaymentModesIfNotDefinedInInvoice=Ierosinātais maksājuma režīms rēķinā pēc noklusējuma, ja tas nav definēts rēķinā SuggestPaymentByRIBOnAccount=Iesakiet norēķinu ar norēķinu kontu SuggestPaymentByChequeToAddress=Ieteikt maksājumu ar čeku uz @@ -1498,16 +1497,16 @@ InvoiceOptionCategoryOfOperations=Rēķinā parādiet norādi "operāciju katego InvoiceOptionCategoryOfOperationsHelp=Atkarībā no situācijas minējums tiks parādīts šādā formā:
- Darbību kategorija: Preču piegāde
- Darbību kategorija: Pakalpojumu sniegšana
- Darbību kategorija: Jaukts - Preču piegāde un pakalpojumi InvoiceOptionCategoryOfOperationsYes1=Jā, zem adreses bloka InvoiceOptionCategoryOfOperationsYes2=Jā, apakšējā kreisajā stūrī -InvoiceClassifyBilledSupplierOrderWithoutInvoice=Disallow the classification of an order as billed without invoice. -InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=An order can be classified as billed by default. If this conf is set to true, it will be not. +InvoiceClassifyBilledSupplierOrderWithoutInvoice=Neatļaut pasūtījuma klasificēšanu kā rēķinu bez rēķina. +InvoiceClassifyBilledSupplierOrderWithoutInvoiceHelp=Pasūtījumu pēc noklusējuma var klasificēt kā rēķinu. Ja šī konf. ir iestatīta uz patiesu, tā nebūs. ##### Supplier Orders ##### -SupplierOrderClassifyBilledWithoutInvoice=Disallow the classification of a purchase order as billed without invoice. -SupplierOrderClassifyBilledWithoutInvoiceHelp=A supplier order can be classified as billed by default. If this conf is set to true, it will be not. +SupplierOrderClassifyBilledWithoutInvoice=Neatļaut pirkuma pasūtījuma klasificēšanu kā tādu, par kuru rēķins ir bez rēķina. +SupplierOrderClassifyBilledWithoutInvoiceHelp=Piegādātāja pasūtījumu pēc noklusējuma var klasificēt kā rēķinu. Ja šī konf. ir iestatīta uz patiesu, tā nebūs. ##### Proposals ##### PropalSetup=Commercial priekšlikumi modulis uzstādīšana ProposalsNumberingModules=Komerciālie priekšlikumu numerācijas modeļi ProposalsPDFModules=Komerciālie priekšlikumu dokumentu modeļi -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payment mode by default if not defined on the proposal +SuggestedPaymentModesIfNotDefinedInProposal=Ieteicamais maksājuma veids pēc noklusējuma, ja priekšlikumā nav definēts FreeLegalTextOnProposal=Brīvais teksts komerciālajos priekšlikumos WatermarkOnDraftProposal=Ūdenszīme projektu komerciālo priekšlikumiem (nav ja tukšs) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal @@ -1549,8 +1548,8 @@ MemberCodeChecker=Iespējas automātiskai dalībnieku kodu ģenerēšanai AdherentLoginRequired=Pārvaldiet katra dalībnieka pieteikumvārdu/paroli AdherentLoginRequiredDesc=Pievienojiet dalībnieka failam pieteikumvārda un paroles vērtību. Ja dalībnieks ir saistīts ar lietotāju, atjauninot dalībnieka pieteikumvārdu un paroli, tiks atjaunināts arī lietotāja pieteikumvārds un parole. AdherentMailRequired=Lai izveidotu jaunu dalībnieku, nepieciešams e-pasts -MemberSendInformationByMailByDefault=The checkbox to send an email confirmation to members (validation or new subscription) is on by default -MemberCreateAnExternalUserForSubscriptionValidated=Create automatically an external user (with a login to connect to the application) after an online payment of a membership subscription +MemberSendInformationByMailByDefault=Pēc noklusējuma ir ieslēgta izvēles rūtiņa, lai dalībniekiem nosūtītu apstiprinājumu e-pastā (validācija vai jauns abonements). +MemberCreateAnExternalUserForSubscriptionValidated=Pēc dalības abonementa tiešsaistes maksājuma automātiski izveidojiet ārēju lietotāju (ar pieteikšanos, lai izveidotu savienojumu ar lietojumprogrammu). VisitorCanChooseItsPaymentMode=Apmeklētājs var izvēlēties kādu no pieejamajiem maksāšanas veidiem MEMBER_REMINDER_EMAIL=Iespējot automātisku atgādinājumu pa e-pastu par beidzies abonementi. Piezīme. Modulim %s jābūt iespējotai un pareizi iestatītai, lai nosūtītu atgādinājumus. MembersDocModules=Dokumentu veidnes dokumentiem, kas ģenerēti no dalībnieku ieraksta @@ -1877,8 +1876,8 @@ AgendaSetup = Notikumi un kārtības modulis uzstādīšana AGENDA_DEFAULT_FILTER_TYPE = Šādu pasākumu automātiski iestatīt darba kārtības skatā meklēšanas filtūrā AGENDA_DEFAULT_FILTER_STATUS = Automātiski iestatīt šo statusu notikumu skatīšanai darba filtru meklēšanas filtūrā AGENDA_DEFAULT_VIEW = Kuru skatu vēlaties atvērt pēc noklusējuma, izvēloties izvēlni Agenda -AGENDA_EVENT_PAST_COLOR = Pagājušā pasākuma krāsa -AGENDA_EVENT_CURRENT_COLOR = Pašreizējā pasākuma krāsa +AGENDA_EVENT_PAST_COLOR = Pagājuša pasākuma krāsa +AGENDA_EVENT_CURRENT_COLOR = Pašreizēja pasākuma krāsa AGENDA_EVENT_FUTURE_COLOR = Nākotnes pasākuma krāsa AGENDA_REMINDER_BROWSER = Iespējojiet notikuma atgādinājumu lietotāja pārlūkprogrammā (Kad ir atgādinājuma datums, pārlūkprogramma parāda uznirstošo logu. Katrs lietotājs var atspējot šādus paziņojumus pārlūka paziņojumu iestatījumos). AGENDA_REMINDER_BROWSER_SOUND = Iespējot skaņas paziņojumu @@ -1995,10 +1994,10 @@ ExpenseReportsRulesSetup=Moduļa Expense Reports iestatīšana - noteikumi ExpenseReportNumberingModules=Izdevumu pārskatu numerācijas modulis NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. YouMayFindNotificationsFeaturesIntoModuleNotification=Varat atrast e-pasta paziņojumu iespējas, iespējot un konfigurējot moduli "Paziņošana". -TemplatesForNotifications=Emails templates for notifications +TemplatesForNotifications=Paziņojumu e-pasta veidnes ListOfNotificationsPerUser=Automātisko paziņojumu saraksts katram lietotājam* ListOfNotificationsPerUserOrContact=Iespējamo automātisko paziņojumu (par biznesa notikumu) saraksts, kas pieejams katram lietotājam* vai kontaktam** -ListOfFixedNotifications=Global recipients emails for automatic email notifications +ListOfFixedNotifications=Globālie adresātu e-pasta ziņojumi automātiskiem e-pasta paziņojumiem GoOntoUserCardToAddMore=Atveriet lietotāja cilni "Paziņojumi", lai pievienotu vai noņemtu paziņojumus lietotājiem GoOntoContactCardToAddMore=Lai pievienotu vai noņemtu kontaktpersonu / adrešu paziņojumus, dodieties uz trešās puses cilni “Paziņojumi” Threshold=Slieksnis @@ -2034,7 +2033,7 @@ MinimumNoticePeriod=Minimum notice period (Your leave request must be done befor NbAddedAutomatically=Number of days added to counters of users (automatically) each month EnterAnyCode=Šajā laukā ir norāde, lai identificētu līniju. Ievadiet jebkuru izvēlēto vērtību, bet bez īpašām rakstzīmēm. Enter0or1=Ievadiet 0 vai 1 -EnterYesOrNo=Enter Yes or No +EnterYesOrNo=Ievadiet Jā vai Nē UnicodeCurrency=Ievadiet šeit starp aplikācijām, baitu skaitļu sarakstu, kas attēlo valūtas simbolu. Piemēram: attiecībā uz $ ievadiet [36] - Brazīlijas reālajam R $ [82,36] - par € ievadiet [8364] ColorFormat=RGB krāsa ir HEX formātā, piemēram: FF0000 PictoHelp=Ikonas nosaukums šādā formātā:
- image.png attēla failam pašreizējā motīva direktorijā
- image.png@module ja fails atrodas moduļa direktorijā /img/
- fa-xxx FontAwesome fa-xxx picto
- fontawesome_xxx_fa_color_size FontAwesome fa-xxx attēlam (ar prefiksu, krāsu un izmēru komplektu) @@ -2128,7 +2127,7 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Kolonnas platums, ja līnijām ir pievienots a MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Slēpt vienības cenas kolonnu piedāvājuma pieprasījumos MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Slēpt kopējās cenas kolonnu piedāvājuma pieprasījumos MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Slēpt vienības cenas kolonnu pirkšanas pasūtījumos -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Slēpt kopējās cenas kolonnu pirkšanas pasūtījumos MAIN_PDF_NO_SENDER_FRAME=Slēpt adresāta rāmja robežas MAIN_PDF_NO_RECIPENT_FRAME=Paslēpt adresāta adreses rāmja robežas MAIN_PDF_HIDE_CUSTOMER_CODE=Paslēpt klienta kodu @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filtrs, lai notīrītu vērtību (COMPANY_DI DuplicateForbidden=Dublikāts aizliegts RemoveSpecialWords=Izveidojot klientu vai piegādātāju apakškontus, notīriet noteiktus vārdus RemoveSpecialWordsHelp=Pirms klienta vai piegādātāja konta aprēķināšanas norādiet vārdus, kas jātīra. Lieto ";" starp katru vārdu -GDPRContact=Datu aizsardzības inspektors (DPO, datu konfidencialitāte vai GDPR kontakts) +GDPRContact=Datu aizsardzības speciālists (DPO, datu privātuma vai GDPR kontaktpersona, ...) GDPRContactDesc=Ja glabājat personas datus savā Informācijas sistēmā, šeit varat nosaukt kontaktpersonu, kas ir atbildīga par Vispārīgo datu aizsardzības regulu HelpOnTooltip=Palīdzības teksts tiek parādīts rīka padomā HelpOnTooltipDesc=Ievietojiet tekstu vai tulkošanas atslēgu šeit, lai teksts tiktu rādīts rīkā, kad šis lauks parādās formā @@ -2220,7 +2219,7 @@ CreateCandidature=Izveidot darba pieteikumu FormatZip=Pasta indekss MainMenuCode=Izvēlnes ievades kods (mainmenu) ECMAutoTree=Rādīt automātisko ECM koku -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a new line to extract or set several properties. +OperationParamDesc=Definējiet kārtulas, kas jāizmanto, lai izvilktu dažus darbības datus vai iestatītu vērtības.

Piemērs virknes izvilkšanai no e-pasta. galvene, tēma vai pamatteksts pagaidu mainīgajā:
tmp_var1=EXTRACT:HEADER:Mans regulārais izteiksme ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Mans atsauce ([^\n]*)
tmp_var3=EXTRACT:BODY:Mans regex ([^\n]*)

Piemēri izveidojamā objekta rekvizītu iestatīšanai:
objproperty1=SET: stingri kodēta vērtība
objproperty2=SET:__tmp_var__
objvalue:3=aIFEMP ir iestatīts tikai tad, ja rekvizīts vēl nav definēts)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My uzņēmuma nosaukums ir\\ s([^\\s]*)

Izmantojiet jaunu rindiņu, lai izvilktu vai iestatītu vairākus rekvizītus. OpeningHours=Darba laiks OpeningHoursDesc=Ievadiet šeit sava uzņēmuma pastāvīgo darba laiku. ResourceSetup=Resursu moduļa konfigurēšana @@ -2266,7 +2265,7 @@ LargerThan=Lielāks nekā IfTrackingIDFoundEventWillBeLinked=Ņemiet vērā: ja e-pastā tiek atrasts objekta izsekošanas ID vai ja e-pasts ir atbilde uz e-pasta ziņojumu, kas jau ir savākts un saistīts ar objektu, izveidotais notikums tiks automātiski saistīts ar zināmo saistīto objektu. WithGMailYouCanCreateADedicatedPassword=Ja esat iespējojis 2 pakāpju validāciju, izmantojot Gmail kontu, ieteicams lietojumprogrammai izveidot īpašu otro paroli, nevis izmantot sava konta paroli vietnē https://myaccount.google.com/. EmailCollectorTargetDir=Var būt vēlama e-pasta pārvietošana uz citu tagu/direktoriju, kad tas tika veiksmīgi apstrādāts. Vienkārši iestatiet šeit direktorija nosaukumu, lai izmantotu šo funkciju (NELIETOJIET speciālās rakstzīmes nosaukumā). Ņemiet vērā, ka jums ir jāizmanto arī lasīšanas/rakstīšanas pieteikšanās konts. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Varat izmantot šo darbību, lai izmantotu e-pasta saturu, lai atrastu un ielādētu esošu trešo pusi savā datu bāzē (meklēšana tiks veikta definētajā rekvizītā starp 'id', 'name', 'name_alias', 'email'). Atrastā (vai izveidotā) trešā puse tiks izmantota šādām darbībām, kurām tā ir nepieciešama.
Piemēram, ja vēlaties izveidot trešo pusi ar nosaukumu, kas izvilkts no virknes " Nosaukums: meklējamais vārds' ir iekļauts pamattekstā, izmantojiet sūtītāja e-pasta adresi kā e-pastu, parametra lauku varat iestatīt šādi:
'email=EXTRACT:HEADER:^No: (.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Brīdinājums: daudzi e-pasta serveri (piemēram, Gmail), meklējot virknē, veic pilnu vārdu meklēšanu un neatgriezīs rezultātu, ja virkne tiks atrasta tikai daļēji. Arī šī iemesla dēļ speciālo rakstzīmju izmantošana meklēšanas kritērijos tiks ignorēta, ja tie nav daļa no esošajiem vārdiem.
Lai veiktu vārda izslēgšanu (ja vārds tiks nosūtīts atpakaļ e-pastā nav atrasts), varat izmantot ! rakstzīme pirms vārda (var nedarboties dažos pasta serveros). EndPointFor=Beigu punkts %s: %s DeleteEmailCollector=Dzēst e-pasta kolekcionāru @@ -2274,14 +2273,14 @@ ConfirmDeleteEmailCollector=Vai tiešām vēlaties dzēst šo e-pasta kolekcion RecipientEmailsWillBeReplacedWithThisValue=Adresātu e-pasti vienmēr tiks aizstāti ar šo vērtību AtLeastOneDefaultBankAccountMandatory=Jādefinē vismaz 1 noklusējuma bankas konts RESTRICT_ON_IP=Atļaut API piekļuvi tikai noteiktiem klientu IP adresēm (aizstājējzīme nav atļauta, izmantojiet atstarpi starp vērtībām). Tukšs nozīmē, ka var piekļūt katrs klients. -StaticIPsOfUsers=If applicable, list of all static IPs of users +StaticIPsOfUsers=Ja piemērojams, visu statisko lietotāju IP saraksts IPListExample=127.0.0.1 192.168.0.2 [:: 1] BaseOnSabeDavVersion=Balstīts uz bibliotēkas SabreDAV versiju NotAPublicIp=Nav publiskā IP MakeAnonymousPing=Izveidojiet anonīmu Ping '+1' Dolibarr pamata serverim (to veic tikai vienu reizi pēc instalēšanas), lai fonds varētu uzskaitīt Dolibarr instalācijas skaitu. FeatureNotAvailableWithReceptionModule=Funkcija nav pieejama, ja ir iespējota moduļa uztveršana EmailTemplate=E-pasta veidne -EmailTemplateHelp=You can create emails templates from menu %s - %s +EmailTemplateHelp=E-pasta veidnes varat izveidot izvēlnē %s - %s EMailsWillHaveMessageID=E-pastiem būs galvene "Ziņojuma ID", kas atbilst šai sintaksei PDF_SHOW_PROJECT=Parādīt projektu dokumentā ShowProjectLabel=Projekta etiķete @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Trešās puses nosaukums — trešās puses aizstājvārds ALIAS_THIRDPARTY=Trešās puses aizstājvārds — trešās puses nosaukums PDFIn2Languages=Rādīt PDF faila iezīmes 2 dažādās valodās (šī funkcija var nedarboties dažās valodās) PDF_USE_ALSO_LANGUAGE_CODE=Ja vēlaties, lai daži PDF faili tiktu dublēti 2 dažādās valodās tajā pašā ģenerētajā PDF failā, jums šeit ir jāiestata šī otrā valoda, lai ģenerētais PDF saturētu vienā un tajā pašā lappusē 2 dažādas valodas, vienu izvēloties, ģenerējot PDF, un šo ( tikai dažas PDF veidnes to atbalsta). Vienā PDF formātā atstājiet tukšumu 1 valodā. -PDF_USE_A=Ģenerējiet PDF dokumentus PDF/A formātā, nevis noklusējuma formātā PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Šeit ievadiet FontAwesome ikonas kodu. Ja jūs nezināt, kas ir FontAwesome, varat izmantot vispārīgo vērtību fa-adrešu grāmata. RssNote=Piezīme. Katra RSS plūsmas definīcija nodrošina logrīku, kas jums jāiespējo, lai tas būtu pieejams informācijas panelī JumpToBoxes=Pāriet uz Iestatīšana -> logrīki @@ -2397,8 +2396,8 @@ INVOICE_ADD_EPC_QR_CODEMore=Šī funkcija ļauj rēķiniem pievienot vai noņemt INVOICE_ADD_EPC_QR_CODEPay=Skenējiet šo QR kodu, lai norēķinātos ar viedtālruni, kas atbalsta maksājumu ar EPC QR kodu. INVOICE_SHOW_SHIPPING_ADDRESS=Rādīt piegādes adresi INVOICE_SHOW_SHIPPING_ADDRESSMore=Obligāta norāde dažās valstīs (Francijā, ...) -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Rādīt norēķinu kontaktpersonu priekšlikumā +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Pēc noklusējuma kontaktpersona tiek rādīta tikai norēķiniem UrlSocialNetworksDesc=Sociālā tīkla URL saite. Mainīgajai daļai, kas satur sociālā tīkla ID, izmantojiet {socialid}. IfThisCategoryIsChildOfAnother=Ja šī kategorija ir citas kategorijas bērns DarkThemeMode=Tumšā motīva režīms @@ -2432,7 +2431,7 @@ CssOnEdit=CSS rediģēšanas lapās CssOnView=CSS skata lapās CssOnList=CSS sarakstos HelpCssOnEditDesc=CSS, kas izmantots, rediģējot lauku.
Piemērs: "minwiwdth100 maxwidth500 widthcentpercentminusx" -HelpCssOnViewDesc=The CSS used when viewing the field.
Example: "longmessagecut" +HelpCssOnViewDesc=CSS, ko izmanto, skatot lauku.
Piemērs: "longmessagecut" HelpCssOnListDesc=CSS, ko izmanto, ja lauks atrodas saraksta tabulā.
Piemērs: "tdoverflowmax200" RECEPTION_PDF_HIDE_ORDERED=Slēpt pasūtīto daudzumu uz ģenerētajiem pieņemšanas dokumentiem MAIN_PDF_RECEPTION_DISPLAY_AMOUNT_HT=Parādiet cenu uz ģenerētajiem pieņemšanas dokumentiem @@ -2489,8 +2488,8 @@ ExportUseForceHelp=Piespiedu kārtā turpināt eksportēšanu pat tad, ja tiek a CustomPrompt=Pielāgotas uzvednes AiDescription=AI (mākslīgā intelekta) funkcijas AiDescriptionLong=Nodrošina AI (mākslīgā intelekta) funkcijas dažādās lietojumprogrammas daļās. Nepieciešama ārēja AI API. -AI_API_KEY=AI api atslēga -AI_API_URL=Endpoint URL for AI api +AI_API_KEY=AI api atslēga +AI_API_URL=AI API galapunkta URL AI_API_SERVICE=Pakalpojums, ko izmantot AI funkcijām AiSetup=AI moduļa iestatīšana AiCustomPrompt=AI pielāgota uzvedne @@ -2498,7 +2497,7 @@ AI_CONFIGURATIONS_PROMPT=Pielāgota uzvedne TextGeneration=Teksta ģenerēšana ImageGeneration=Attēlu ģenerēšana VideoGeneration=Video ģenerēšana -AudioGeneration=Audio generation +AudioGeneration=Audio ģenerēšana AIPromptForFeatures=AI pielāgotas funkcijas EnterAnIP=Ievadiet IP adresi ConvertInto=Pārvērst par @@ -2519,39 +2518,44 @@ SendToUrl=Sūtīt uz URL WebsiteTemplateWasCopied=Vietnes veidne(-es) "%s", ko nodrošina šis modulis, ir saglabātas vietņu veidņu direktorijā (/doctemplates/websites) un ir gatavas importēšanai kā jauna tīmeklī. vietne. EnabledByDefaultAtInstall=Pēc noklusējuma ir iespējots instalēšanas laikā VulnerableToRCEAttack=Jūs esat neaizsargāts pret RCE uzbrukumiem, izmantojot pielāgoto funkciju dol_json_decode -OpenIDconnectSetup=Configuration of the OpenID Connect module -MainAuthenticationOidcClientIdName=Client ID -MainAuthenticationOidcClientIdDesc=OpenID Connect Client ID -MainAuthenticationOidcClientSecretName=Client secret -MainAuthenticationOidcClientSecretDesc=OpenID Connect Client Secret -MainAuthenticationOidcScopesName=Scopes -MainAuthenticationOidcScopesDesc=OpenID scopes to allow access to user information -MainAuthenticationOidcAuthorizeUrlName=Authorize URL -MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) -MainAuthenticationOidcTokenUrlName=Token URL -MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) -MainAuthenticationOidcUserinfoUrlName=User info URL -MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) -MainAuthenticationOidcLogoutUrlName=Logout URL -MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) -MainAuthenticationOidcRedirectUrlName=Redirect URL -MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side -MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL -MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side -MainAuthenticationOidcLoginClaimName=Login claim -MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email -BlackListWords=Black list of words -AddBlackList=Add to black list -FediverseSetup=Configuration of fediverse section -ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse -Fediverse=Fediverse -NewSocialNetwork=New Fediverse social network -SocialNetworkUrl=Fediverse API URL -SocialNetworksNote=Each social network definition provides a widget that you must enable to have it available in dashboard -ConfirmDeleteSocialNetwork= Are you sure want to delete this record ? -AnOwnerMustBeSetIfEmailTemplateIsPrivate=An owner must be set if the email template is set as private -ContactsDefaultRoles=For third parties of the "individual" type, a contact can be created simultaneously. Define here the roles that will be systematically assigned to this contact. -MenuDict=Dictionary -AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token -ParamName=Name of parameter -ParamValue=Value of parameter +OpenIDconnectSetup=OpenID Connect moduļa konfigurācija +MainAuthenticationOidcClientIdName=Klienta ID +MainAuthenticationOidcClientIdDesc=OpenID Connect klienta ID +MainAuthenticationOidcClientSecretName=Klienta noslēpums +MainAuthenticationOidcClientSecretDesc=OpenID Connect klienta noslēpums +MainAuthenticationOidcScopesName=Darbības jomas +MainAuthenticationOidcScopesDesc=OpenID darbības jomas, lai nodrošinātu piekļuvi lietotāja informācijai +MainAuthenticationOidcAuthorizeUrlName=Autorizēt URL +MainAuthenticationOidcAuthorizeUrlDesc=(piemērs: https://example.com/oauth2/authorize) +MainAuthenticationOidcTokenUrlName=Token URL +MainAuthenticationOidcTokenUrlDesc=(piemērs: https://example.com/oauth2/token) +MainAuthenticationOidcUserinfoUrlName=Lietotāja informācijas URL +MainAuthenticationOidcUserinfoUrlDesc=(piemērs: https://example.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Atteikšanās URL +MainAuthenticationOidcLogoutUrlDesc=(piemērs: https://example.com/oauth2/logout) +MainAuthenticationOidcRedirectUrlName=Novirzīt URL +MainAuthenticationOidcRedirectUrlDesc=Novirzīt URL, lai autorizētu OpenID nodrošinātāja pusē +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr atteikšanās URL +MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr atteikšanās URL, lai autorizētu OpenID nodrošinātāja pusē +MainAuthenticationOidcLoginClaimName=Pieteikšanās prasība +MainAuthenticationOidcLoginClaimDesc=OpenID Connect pretenzija, kas atbilst Dolibarr lietotāja pieteikuminformācijai. Ja tas nav iestatīts vai ir tukšs, pēc noklusējuma tiek rādīts e-pasts +BlackListWords=Melnais vārdu saraksts +AddBlackList=Pievienot melnajam sarakstam +FediverseSetup=Fediversās sadaļas konfigurācija +ConfigImportSocialNetwork=Ar Fediverse saderīgu sociālo tīklu konfigurācija +Fediverse=Fediverss +NewSocialNetwork=Jauns Fediverse sociālais tīkls +SocialNetworkUrl=Fediverse API URL +SocialNetworksNote=Katra sociālā tīkla definīcija nodrošina logrīku, kas ir jāiespējo, lai tas būtu pieejams informācijas panelī +ConfirmDeleteSocialNetwork= Vai tiešām vēlaties dzēst šo ierakstu? +AnOwnerMustBeSetIfEmailTemplateIsPrivate=Ja e-pasta veidne ir iestatīta kā privāta, ir jāiestata īpašnieks +ContactsDefaultRoles=Trešajām "individuālā" tipa personām kontaktu var izveidot vienlaikus. Šeit definējiet lomas, kas tiks sistemātiski piešķirtas šim kontaktam. +MenuDict=Vārdnīca +AddMoreParams=Pievienojiet papildu savienojuma parametrus (sīkfailus, pilnvaras, ...)
Piemērs: marķieris : vērtības marķieris +ParamName=Parametra nosaukums +ParamValue=Parametra vērtība +ConfirmDeleteParamOfSocialNetwork=Vai tiešām vēlaties dzēst šo parametru? +HelpMariaDBToGetPossibleValues=Varat iegūt iespējamo vērtību sarakstu, izpildot šādu SQL komandu: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/mk_MK/admin.lang b/htdocs/langs/mk_MK/admin.lang index fa462d1540f..f67f2b869e1 100644 --- a/htdocs/langs/mk_MK/admin.lang +++ b/htdocs/langs/mk_MK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметрите мора да бидат ObjectName:Classpath
Синтакса: ObjectName:Classpath ExtrafieldParamHelpSeparator=Чувајте го празно за едноставен сепаратор
Поставете го ова на 1 за разделувач што се собира (отворен стандардно за нова сесија, а потоа статусот се задржува за секоја корисничка сесија)
Поставете го ова на 2 за сепаратор што се собира (стандардно се собира за нова сесија, а потоа статусот се задржува за секоја корисничка сесија) LibraryToBuildPDF=Библиотека која се користи за генерирање PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Регекс филтер до чиста вред DuplicateForbidden=Забрането е дупликат RemoveSpecialWords=Исчистете одредени зборови кога генерирате под-сметки за клиенти или добавувачи RemoveSpecialWordsHelp=Наведете ги зборовите што треба да се исчистат пред да ја пресметате сметката на клиентот или добавувачот. Користи ";" помеѓу секој збор -GDPRContact=Службеник за заштита на податоци (DPO, приватност на податоци или контакт со GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ако складирате лични податоци во вашиот информативен систем, можете да го наведете контактот кој е одговорен за Општата регулатива за заштита на податоците овде HelpOnTooltip=Текст за помош за да се прикаже на советот за алатка HelpOnTooltipDesc=Ставете текст или клуч за превод овде за текстот да се прикаже во совет за алатка кога ова поле ќе се појави во форма @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Име на трета страна - алијас од тре ALIAS_THIRDPARTY=Алијас од трета страна - Име на трета страна PDFIn2Languages=Прикажи етикети во PDF на 2 различни јазици (оваа функција може да не работи на неколку јазици) PDF_USE_ALSO_LANGUAGE_CODE=Ако сакате да имате некои текстови во вашиот PDF дупликат на 2 различни јазици во истиот генериран PDF, мора да го поставите овде овој втор јазик така генериран PDF ќе содржи 2 различни јазици на истата страница, оној избран при генерирање PDF и овој ( само неколку PDF шаблони го поддржуваат ова). Чувајте празно за 1 јазик по PDF. -PDF_USE_A=Генерирајте PDF документи со формат PDF/A наместо стандарден формат PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Внесете го овде кодот на иконата FontAwesome. Ако не знаете што е FontAwesome, можете да ја користите генеричката вредност фа-адрес-книга. RssNote=Забелешка: Секоја дефиниција за RSS довод обезбедува графичка контрола што мора да ја овозможите за да ја имате достапна во контролната табла JumpToBoxes=Скокни до Поставување -> Додатоци @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index 8bf1055ad30..9cef76a1fdc 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Liste over verdier må være linjer med formatet nøkk ExtrafieldParamHelpcheckbox=Liste over verdier må være linjer med formatet nøkkel,verdi (hvor nøkkelen ikke kan være '0')

for eksempel:
1,verdi1
2,verdi2
3,verdi3
... ExtrafieldParamHelpradio=Liste over verdier må være linjer med formatet nøkkel,verdi (hvor nøkkelen ikke kan være '0')

for eksempel:
1,verdi1
2,verdi2
3,verdi3
... ExtrafieldParamHelpsellist=Liste over verdier kommer fra en tabell
Syntaks: table_name:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

- id_field er nødvendigvis en primær int-nøkkel
- filtersql er en betingelse. Den må bruke USF-syntaksen. Eksempel: (active:=:1) for å vise bare aktiv verdi
Du kan også bruke $ID$ i filter som er gjeldende ID for gjeldende objekt
Hvis du vil filtrere på ekstrafelt, bruk syntaks extra.fieldcode=... (der feltkode er koden til ekstrafelt)

For å ha listen avhengig av en annen komplementær attributtliste:
libellec:typent id:options_parent_list_code|parent_column:filter

For å ha listen avhengig av en annen liste:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Liste over verdier kommer fra en tabell
Syntaks: table_name:label_field:id_field::filtersql
Eksempel: c_idtypent:libelle: ::filtersql

filter kan være en enkel test (f.eks. active=1 for å bar vise aktiv verdi)
Du kan også bruke $ID$ i filter som er gjeldende ID for gjeldende objekt
For å gjøre et SELECT i filter, bruk $SEL$
hvis du vil filtrere på ekstrafelt, bruk syntaks extra.fieldcode=... (der feltkode er koden til extrafield)

For å ha listen avhengig av en annen komplementær attributtliste:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

For å ha listen avhengig av en annen liste:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametere må være ObjectName:Classpath
Syntaks: ObjectName:Classpath ExtrafieldParamHelpSeparator=Hold tomt for en enkel separator
Sett dette til 1 for en kollaps-separator (åpnes som standard for ny økt, da beholdes status for hver brukerøkt)
Sett dette til 2 for en kollaps-separator (kollapset som standard for ny økt, da holdes status foran hver brukerøkt) LibraryToBuildPDF=Bibliotek brukt for PDF-generering @@ -521,8 +520,8 @@ WarningPHPMailC=- Ved å bruke SMTP-serveren til din egen e-posttjenesteleverand WarningPHPMailD=Det anbefales derfor å endre sendemetoden for e-post til verdien "SMTP". WarningPHPMailDbis=Hvis du virkelig ønsker å beholde standard "PHP"-metoden for å sende e-poster, bare ignorer denne advarselen, eller fjern den ved å %sklikke her%s. WarningPHPMail2=Hvis din epost-SMTP-leverandør må begrense epostklienten til noen IP-adresser (svært sjelden), er dette IP-adressen til epost-brukeragenten (MUA) for ERP CRM-programmet: %s . -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +WarningPHPMailSPF=Hvis domenenavnet i avsenderens epost-adresse er beskyttet av en SPF-post (spør domenenavnsregistratoren), må du legge til følgende IP-er eller oppføring i SPF-posten til DNS av domenet ditt: %s. +WarningPHPMailSPFDMARC=Hvis domenenavnet i epost-adressen til avsenderen din er beskyttet av en annen DMARC-post enn p=none (spør domenenavnsregistratoren), må du fjerne DMARC-posten din, eller angi p=none på samme måte som @gmail.com, eller bruk send med en annen metode. SPFAndDMARCInformation=SPF og DMARC DNS-post for epost hovedadresser ActualMailDNSRecordFound=Faktisk %s-post funnet (for epost %s) : %s ClickToShowDescription=Klikk for å vise beskrivelse @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter til ren verdi (COMPANY_DIGITARIA_CLEA DuplicateForbidden=Duplikat forbudt RemoveSpecialWords=Rengjør visse ord når du genererer underkontoer for kunder eller leverandører RemoveSpecialWordsHelp=Angi ordene som skal renses før du beregner kunde- eller leverandørkontoen. Bruk en ";" mellom hvert ord -GDPRContact=Databeskyttelsesansvarlig (DPO, Data Privacy eller GDPR kontakt) +GDPRContact=Databeskyttelsesansvarlig (DPO, personvern eller GDPR-kontakt, ...) GDPRContactDesc=Hvis du lagrer personopplysninger i ditt informasjonssystem, kan du navngi kontakten som er ansvarlig for GDPR her HelpOnTooltip=Hjelpetekst til å vise på verktøytips HelpOnTooltipDesc=Sett tekst eller en oversettelsesnøkkel her for at teksten skal vises i et verktøytips når dette feltet vises i et skjema @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjeparts navn – Tredjeparts alias ALIAS_THIRDPARTY=Tredjeparts alias – Tredjeparts navn PDFIn2Languages=Vis etiketter i PDF-en på 2 forskjellige språk (denne funksjonen fungerer kanskje ikke for noen få språk) PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil at tekst i PDF-en din skal dupliseres på 2 forskjellige språk i samme genererte PDF, må du angi dette andre språket, slik at generert PDF vil inneholde 2 forskjellige språk på samme side, det som er valgt når du genererer PDF og dette ( bare få PDF-maler støtter dette). Hold tom for ett språk per PDF. -PDF_USE_A=Generer PDF-dokumenter med formatet PDF/A i stedet for standardformatet PDF +PDF_USE_A=PDF-dokumenter format FafaIconSocialNetworksDesc=Skriv inn koden til et FontAwesome-ikon. Hvis du ikke vet hva som er FontAwesome, kan du bruke den generelle verdien fa-adresseboken. RssNote=Merk: Hver definisjon av RSS-feed gir en widget som du må aktivere for å ha den tilgjengelig i dashbordet JumpToBoxes=Gå til Setup -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Ordbok AddMoreParams=Legg til flere parametere for tilkobling (informasjonskapsler, token, ...)
Eksempel: token : tokenverdi ParamName=Navn på parameter ParamValue=Verdi på parameter +ConfirmDeleteParamOfSocialNetwork=Er du sikker på at du vil slette denne parameteren? +HelpMariaDBToGetPossibleValues=Du kan få en liste over mulige verdier ved å kjøre følgende SQL-kommando: %s +Captcha=Captcha +CaptchaDesc=Hvis du vil beskytte påloggingssiden din med en Captcha, kan du velge hvilken du skal bruke her +DolibarrStandardCaptcha=En captcha generert av Dolibarr diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index 96fc8dd2cff..959ce75b46b 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lijst met waarden moeten regels zijn met opmaaksleutel ExtrafieldParamHelpcheckbox=Lijst met waarden moeten regels zijn met opmaaksleutel, waarde (waar sleutel niet '0' kan zijn)

bijvoorbeeld:
1, waarde1
2, value2
3, waarde3
... ExtrafieldParamHelpradio=Lijst met waarden moeten regels zijn met opmaaksleutel, waarde (waar sleutel niet '0' kan zijn)

bijvoorbeeld:
1, waarde1
2, value2
3, waarde3
... ExtrafieldParamHelpsellist=Lijst met waarden komt uit een tabel
Syntaxis: tabelnaam:labelveld:id_veld::filtersql
Voorbeeld: c_typent:libelle:id::filtersql

- id_veld is noodzakelijkerwijs een primaire int-sleutel
- filtersql is een voorwaarde. Het moet de USF-syntaxis gebruiken. Voorbeeld: (active:=:1) om alleen de actieve waarde weer te geven
U kunt ook $ID$ gebruiken in het filter, wat de huidige id is van het huidige object
Als u wilt filteren op extravelden, gebruikt u de syntaxis extra.fieldcode=... (waarbij fieldcode de code is van het extraveld)

In Bestelling om de lijst afhankelijk te maken van een andere aanvullende kenmerklijst:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In Bestelling om de lijst afhankelijk te maken van een andere lijst:
c_typent:libelle:id:ouder_lijst_code|ouder_kolom:filter -ExtrafieldParamHelpchkbxlst=Lijst met waarden komt uit een tabel
Syntaxis: tabelnaam:labelveld:id_veld::filtersql
Voorbeeld: c_typent:libelle:id::filtersql

filter kan een eenvoudige test zijn (bijv. active=1 om alleen de actieve waarde weer te geven)
U kunt ook $ID$ gebruiken in filter, wat de huidige id is van het huidige object
Om een SELECT in een filter uit te voeren, gebruikt u $SEL$
als u wilt filteren op extravelden, gebruikt u de syntaxis extra.fieldcode=... (waarbij veldcode de code van het extraveld is)

In Bestelling om de lijst afhankelijk te maken van een andere aanvullende kenmerklijst:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In Bestelling om de lijst afhankelijk te maken van een andere lijst:
c_typent:libelle:id:parent_list_code|ouderkolom:filter ExtrafieldParamHelplink=Parameters moeten Objectnaam: Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Blijf leeg voor een eenvoudig scheidingsteken
Stel dit in op 1 voor een samenvouwend scheidingsteken (standaard geopend voor nieuwe sessie, dan wordt de status behouden voor elke gebruikerssessie)
Stel dit in op 2 voor een samenvouwend scheidingsteken (standaard samengevouwen voor nieuwe sessie, dan wordt de status behouden voor elke gebruikerssessie) LibraryToBuildPDF=Gebruikte library voor generen PDF @@ -514,17 +513,17 @@ ModuleCompanyCodeCustomerDigitaria=%s gevolgd door de ingekorte klantnaam door h ModuleCompanyCodeSupplierDigitaria=%s gevolgd door de ingekorte leveranciersnaam met het aantal tekens: %s voor de boekhoudcode van de leverancier. Use3StepsApproval=Bestellingen moeten standaard worden gemaakt en goedgekeurd door 2 verschillende gebruikers (één stap / gebruiker om te maken en één stap / gebruiker goed te keuren. Merk op dat als gebruiker zowel toestemming heeft om te maken en goed te keuren, één stap / gebruiker volstaat) . U kunt met deze optie vragen om een ​​derde stap / gebruikersgoedkeuring in te voeren, als het bedrag hoger is dan een speciale waarde (dus 3 stappen zijn nodig: 1 = validatie, 2 = eerste keer goedkeuren en 3 = tweede keer goedkeuren als het bedrag voldoende is).
Stel deze optie in op leeg als één goedkeuring (2 stappen) voldoende is, stel deze in op een zeer lage waarde (0,1) als een tweede goedkeuring (3 stappen) altijd vereist is. UseDoubleApproval=Gebruik een goedkeuring in 3 stappen als het bedrag (zonder belasting) hoger is dan ... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=OPMERKING: De instelling om e-mails te verzenden vanuit de toepassing maakt gebruik van de standaard generieke instelling (genaamd "%s"). Voor deze keuze is geen technische kennis of specifieke instelling vereist.
Het is echter vaak beter om uitgaande e-mails in te stellen op de andere methode (genaamd "%s") om de e-mailserver van uw e-mailprovider te gebruiken in plaats van de standaardinstelling om verschillende redenen: WarningPHPMailA=- Het gebruik van de server van de e-mailserviceprovider verhoogt de betrouwbaarheid van uw e-mail, waardoor de bezorgbaarheid toeneemt zonder dat deze als SPAM wordt gemarkeerd -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Als het domein van uw e-mail (het deel mymaildomain.com in myname@mymaildomain.com) wordt beschermd door een SPF + een DMARC-record, kan uw e-mail worden gemarkeerd als SPAM omdat uw DMARC-regel die is gedefinieerd in de DNS-zone van het domein van de afzender (mymaildomain.com) het verzenden als een generieke afzender niet toestaat. In een dergelijk geval moet u de DMARC voor het domein uitschakelen (of instellen op p=none zoals gedaan door @gmail.com) of, beter, als u de technische kennis hebt, de andere methode gebruiken om e-mails te verzenden met behulp van de SMTP-server van uw eigen e-mailprovider. WarningPHPMailC=- Het gebruik van de SMTP-server van uw eigen e-mailserviceprovider om e-mails te verzenden is ook interessant, dus alle e-mails die vanuit de toepassing worden verzonden, worden ook opgeslagen in uw "Verzonden" -map van uw mailbox. WarningPHPMailD=Het is daarom aan te raden om de verzendmethode van e-mails te wijzigen in de waarde "SMTP". WarningPHPMailDbis=Als u echt de standaard "PHP"-methode voor het verzenden van e-mails wilt behouden, negeert u deze waarschuwing of verwijdert u deze door %shier te klikken%s. WarningPHPMail2=Als uw e-mail SMTP-provider de e-mailclient moet beperken tot bepaalde IP-adressen (zeer zeldzaam), is dit het IP-adres van de mail user agent (MUA) voor uw ERP CRM-toepassing: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. -SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses -ActualMailDNSRecordFound=Actual %s record found (for email %s) : %s +WarningPHPMailSPF=Als de domeinnaam in uw afzender-e-mailadres wordt beschermd door een SPF-record (vraag dit na bij uw domeinnaamregistrar), moet u de volgende IP's of vermeldingen toevoegen aan het SPF-record van de DNS van uw domein: %s. +WarningPHPMailSPFDMARC=Als de domeinnaam in uw verzend-e-mailadres wordt beschermd door een DMARC-record dat anders is dan p=none (vraag dit na bij uw domeinnaamregistrar), moet u uw DMARC-record verwijderen of instellen op p=none (zoals do@gmail.com) of een andere verzendmethode gebruiken. +SPFAndDMARCInformation=SPF- en DMARC-DNS-record voor hoofd-e-mailadressen +ActualMailDNSRecordFound=Werkelijke %s-record gevonden (voor e-mail %s): %s ClickToShowDescription=Klik voor omschrijving DependsOn=Deze module heeft de module(s) nodig RequiredBy=Deze module is vereist bij module(s) @@ -869,7 +868,7 @@ Permission255=Wachtwoord andere gebruikers wijzigen Permission256=Andere gebruikers verwijderen of uitschakelen Permission262=Verleng de toegang tot alle derde partijen EN hun objecten (niet alleen derde partijen waarvoor de gebruiker als verkoopvertegenwoordiger is gekoppeld). Permission262b=Niet effectief voor externe gebruikers (altijd beperkt tot zichzelf voor voorstellen, bestellingen, Facturen, contracten, etc.). -Permission262c=Not effective for projects (only rules on project permissions, visibility and users assignment matter). +Permission262c=Niet effectief voor projecten (alleen regels over projectmachtigingen, zichtbaarheid en toewijzing van gebruikers zijn van belang). Permission263=Verleng de toegang tot alle derden ZONDER hun objecten (niet alleen derden waarvoor de gebruiker een verkoopvertegenwoordiger is).
Niet effectief voor externe gebruikers (altijd beperkt tot zichzelf voor voorstellen, bestellingen, facturen, contracten, enz.).
Niet effectief voor projecten (alleen regels voor projectmachtigingen, zichtbaarheid en toewijzingskwesties). Permission271=Lees CA Permission272=Facturen inzien @@ -946,7 +945,7 @@ Permission776=Betalen onkostennota's Permission777=Lees alle onkostennota's (zelfs die van ondergeschikten niet van gebruiker) Permission778=Aanmaken/wijzigen onkostendeclaraties van iedereen Permission779=Export onkostennota's -Permission1001=Read warehouses and stocks +Permission1001=Lees Warenhuizen en aandelen Permission1002=Toevoegen/wijzigen van een magazijn Permission1003=Verwijder magazijnen Permission1004=Bekijk voorraad-verplaatsingen @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter om waarde op te schonen (COMPANY_DIGI DuplicateForbidden=Dupliceren verboden RemoveSpecialWords=Reinig bepaalde woorden bij het genereren van subaccounts voor klanten of leveranciers RemoveSpecialWordsHelp=Geef de woorden op die moeten worden opgeschoond voordat de klant- of leveranciersrekening wordt berekend. Gebruik een ";" tussen elk woord -GDPRContact=Functionaris voor gegevensbescherming (DPO, gegevensprivacy of GDPR-contact) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Als u persoonsgegevens opslaat in uw Informatiesysteem, kunt u hier de contactpersoon noemen die verantwoordelijk is voor de Algemene Verordening Gegevensbescherming HelpOnTooltip=Help-tekst om op knopinfo weer te geven HelpOnTooltipDesc=Plaats hier tekst of een vertaalsleutel zodat de tekst in een knopinfo kan worden weergegeven wanneer dit veld in een formulier wordt weergegeven @@ -2220,7 +2219,7 @@ CreateCandidature=Maak een sollicitatie FormatZip=Zip MainMenuCode=Menu toegangscode (hoofdmenu) ECMAutoTree=Toon automatische ECM-structuur -OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a string from email header, subject or body into a temporary variable:
tmp_var1=EXTRACT:HEADER:My regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:My refex ([^\n]*)
tmp_var3=EXTRACT:BODY:My regex ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a new line to extract or set several properties. +OperationParamDesc=Definieer de regels die moeten worden gebruikt om bepaalde gegevens te extraheren of stel waarden in die moeten worden gebruikt voor de bewerking.

Voorbeeld om een tekenreeks uit de koptekst, het onderwerp of de hoofdtekst van een e-mail te extraheren naar een tijdelijke variabele:
tmp_var1=EXTRACT:HEADER:Mijn regex ([^\n]*)
tmp_var2=EXTRACT:SUBJECT:Mijn refex ([^\n]*)
tmp_var3=EXTRACT:BODY:Mijn regex ([^\n]*)

Voorbeelden om de eigenschappen van een object in te stellen dat moet worden gemaakt:
objproperty1=SET:een hard gecodeerde waarde
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:een waarde (waarde wordt alleen ingesteld als de eigenschap nog niet is gedefinieerd)
objproperty4=EXTRACT:HEADER:X-Mijnheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mijn bedrijf naam is\\s([^\\s]*)

Gebruik een nieuwe regel om meerdere eigenschappen te extraheren of in te stellen. OpeningHours=Openingstijden OpeningHoursDesc=Voer hier de reguliere openingstijden van uw bedrijf in. ResourceSetup=Configuratie van bronmodule @@ -2266,7 +2265,7 @@ LargerThan=Groter dan IfTrackingIDFoundEventWillBeLinked=Houd er rekening mee dat als een tracking-ID van een object in een e-mail wordt gevonden, of als de e-mail een antwoord is op een e-mail die al is verzameld en aan een object is gekoppeld, de gemaakte gebeurtenis automatisch wordt gekoppeld aan het bekende gerelateerde object. WithGMailYouCanCreateADedicatedPassword=Als u met een Gmail-account de validatie in twee stappen heeft ingeschakeld, wordt het aanbevolen om een speciaal tweede wachtwoord voor de applicatie te maken in plaats van uw eigen accountwachtwoord van https://myaccount.google.com/ te gebruiken. EmailCollectorTargetDir=Het kan wenselijk zijn om de e-mail naar een andere Label/map te verplaatsen nadat deze met succes is verwerkt. Stel hier gewoon de naam van de map in om deze functie te gebruiken (gebruik GEEN speciale tekens in de naam). Houd er rekening mee dat u ook een lees-/schrijfaanmeldingsaccount moet gebruiken. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing third party in your database (search will be done on the defined property among 'id','name','name_alias','email'). The found (or created) third party will be used for following actions that need it.
For example, if you want to create a third party with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EmailCollectorLoadThirdPartyHelp=Met deze actie kunt u de e-mailinhoud gebruiken om een bestaande derde partij in uw database te vinden en te laden (er wordt gezocht op de gedefinieerde eigenschap 'id','name','name_alias','email'). De gevonden (of gemaakte) derde partij wordt gebruikt voor de volgende acties waarvoor deze nodig is.
Als u bijvoorbeeld een derde partij wilt maken met een naam die is geëxtraheerd uit een tekenreeks 'Naam: te vinden naam' in de hoofdtekst, gebruikt u het e-mailadres van de afzender als e-mail. U kunt het parameterveld als volgt instellen:
'email=EXTRACT:HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
FilterSearchImapHelp=Waarschuwing: veel e-mailservers (zoals Gmail) zoeken op volledige woorden wanneer ze zoeken op een tekenreeks en zullen geen resultaat retourneren als de tekenreeks slechts gedeeltelijk in een woord wordt gevonden. Ook om deze reden wordt het gebruik van speciale tekens in een zoekcriterium genegeerd als ze geen deel uitmaken van bestaande woorden.
Om een zoekopdracht uit te sluiten op een woord (retourneer een e-mail als het woord niet wordt gevonden), kunt u de ! teken voor het woord (werkt mogelijk niet op sommige mailservers). EndPointFor=Eindpunt voor %s: %s DeleteEmailCollector=E-mailverzamelaar verwijderen @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Naam van derden: alias van derden ALIAS_THIRDPARTY=Alias van derden: naam van derden PDFIn2Languages=Toon labels in de PDF in 2 verschillende talen (deze functie werkt mogelijk niet voor sommige talen) PDF_USE_ALSO_LANGUAGE_CODE=Als u wilt dat sommige teksten in uw PDF worden gedupliceerd in 2 verschillende talen in dezelfde gegenereerde PDF, moet u hier deze tweede taal instellen, zodat de gegenereerde PDF 2 verschillende talen op dezelfde pagina bevat, degene die is gekozen bij het genereren van PDF en deze ( slechts enkele PDF-sjablonen ondersteunen dit). Voor 1 taal per pdf leeg houden. -PDF_USE_A=Genereer PDF-documenten met het formaat PDF/A in plaats van het standaardformaat PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Voer hier de code van een FontAwesome-pictogram in. Als je niet weet wat FontAwesome is, kun je het generieke waarde fa-adresboek gebruiken. RssNote=Opmerking: elke RSS-feeddefinitie biedt een widget die u moet inschakelen om deze beschikbaar te hebben in het dashboard JumpToBoxes=Ga naar Setup -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Woordenboek AddMoreParams=Voeg meer parameters toe voor de verbinding (cookies, tokens, ...)
Voorbeeld: token : waarde token ParamName=Naam van parameter ParamValue=Waarde van parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=U kunt een lijst met mogelijke waarden verkrijgen door de volgende SQL-opdracht uit te voeren: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 6d71c0ae379..c7601810e89 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista wartości musi być liniami z kluczem formatu, w ExtrafieldParamHelpcheckbox=Lista wartości musi być liniami z kluczem formatu, wartością (gdzie klucz nie może mieć wartości '0')

na przykład:
1, wartość1
2, wartość2
3, wartość3 ... ExtrafieldParamHelpradio=Lista wartości musi być liniami z kluczem formatu, wartością (gdzie klucz nie może mieć wartości '0')

na przykład:
1, wartość1
2, wartość2
3, wartość3 ... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametry muszą być parametrami ObjectName: Classpath
Składnia: ObjectName: Classpath ExtrafieldParamHelpSeparator=Pozostaw puste dla prostego separatora
Ustaw na 1 dla zwijanego separatora (domyślnie otwarty dla nowej sesji, a następnie status jest zachowany dla każdej sesji użytkownika)
Ustaw na 2 dla zwijanego separatora (domyślnie zwinięty dla nowej sesji, a następnie status jest zachowywany przed każdą sesją użytkownika) LibraryToBuildPDF=Biblioteka używana do generowania plików PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtr Regex do czyszczenia wartości (COMPANY_DIGI DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Wyczyść określone słowa podczas generowania subkont dla klientów lub dostawców RemoveSpecialWordsHelp=Określ słowa, które mają zostać oczyszczone przed obliczeniem konta klienta lub dostawcy. Użyć ";" pomiędzy każdym słowem -GDPRContact=Inspektor ochrony danych osobowych (kontakt do spraw ochrony danych lub RODO) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Jeśli przechowujesz dane osobowe w swoim Systemie Informatycznym, możesz tutaj wskazać osobę kontaktową odpowiedzialną za Ogólne rozporządzenie o ochronie danych HelpOnTooltip=Tekst pomocy do wyświetlenia w podpowiedzi HelpOnTooltipDesc=Umieść tutaj tekst lub klucz do tłumaczenia, aby tekst był wyświetlany w etykiecie narzędzia, gdy to pole pojawi się w formularzu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nazwa strony trzeciej — alias strony trzeciej ALIAS_THIRDPARTY=Alias strony trzeciej — nazwa strony trzeciej PDFIn2Languages=Pokaż etykiety w pliku PDF w 2 różnych językach (ta funkcja może nie działać w przypadku niektórych języków) PDF_USE_ALSO_LANGUAGE_CODE=Jeśli chcesz, aby niektóre teksty w pliku PDF zostały skopiowane w 2 różnych językach w tym samym wygenerowanym pliku PDF, musisz ustawić tutaj ten drugi język, aby wygenerowany plik PDF zawierał 2 różne języki na tej samej stronie, ten wybrany podczas generowania pliku PDF i ten ( tylko kilka szablonów PDF to obsługuje). Pozostaw puste dla 1 języka na plik PDF. -PDF_USE_A=Generuj dokumenty PDF w formacie PDF/A zamiast w domyślnym formacie PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Wpisz tutaj kod ikony FontAwesome. Jeśli nie wiesz, co to jest FontAwesome, możesz użyć ogólnej wartości fa-address-book. RssNote=Uwaga: każda definicja źródła danych RSS zawiera widżet, który należy włączyć, aby był dostępny na pulpicie nawigacyjnym JumpToBoxes=Przejdź do Ustawienia -> Widżety @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index 94041091622..4058e9baf0c 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista de valores devem ser linhas com chave de formato ExtrafieldParamHelpcheckbox=A lista de valores deve ser composta por linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, valor1
2, valor2
19bz3, valor3 ExtrafieldParamHelpradio=A lista de valores deve ser composta por linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, valor1
2, valor2
19bz3, valor3 ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Os parâmetros devem ser ObjectName:Classpath
Sintaxe: ObjectName:Classpath ExtrafieldParamHelpSeparator=Mantenha vazio para um separador simples
Defina como 1 para um separador recolhível (abrir por padrão para uma nova sessão, então o status é mantido para cada sessão utilizador)
Defina como 2 para um separador recolhido (recolhido por padrão para uma nova sessão, então o status é mantido antes de cada sessão utilizador) LibraryToBuildPDF=Biblioteca utilizada para gerar PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para limpar valor (COMPANY_DIGITARIA_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Limpe certas palavras ao gerar subcontas para clientes ou fornecedores RemoveSpecialWordsHelp=Especifique as palavras a serem limpas antes de calcular o cliente ou fornecedor conta. Use um ";" entre cada palavra -GDPRContact=Responsável pela proteção de dados (DPO, Privacidade de dados ou contato GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Caso guarde dados pessoais no seu Sistema de Informação, poderá indicar aqui o contacto responsável pelo Regulamento Geral de Proteção de Dados HelpOnTooltip=Texto de ajuda para mostrar na dica de ferramenta HelpOnTooltipDesc=Coloque aqui o texto ou uma chave de tradução para que o texto seja exibido em uma dica de ferramenta quando este campo aparecer em um formulário @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Nome de terceiro – alias de terceiro ALIAS_THIRDPARTY=Alias de terceiros – Nome de terceiros PDFIn2Languages=Mostrar rótulos no PDF em 2 idiomas diferentes (esse recurso pode não funcionar em alguns idiomas) PDF_USE_ALSO_LANGUAGE_CODE=Se você deseja que alguns textos do seu PDF sejam duplicados em 2 idiomas diferentes no mesmo PDF gerado, você deve definir aqui este segundo idioma para que o PDF gerado contenha 2 idiomas diferentes na mesma página, aquele escolhido na geração do PDF e este (apenas alguns modelos de PDF suportam isso). Mantenha em branco para 1 idioma por PDF. -PDF_USE_A=Gere documentos PDF com formato PDF/A em vez do formato padrão PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Insira aqui o Código de um ícone FontAwesome. Se você não sabe o que é FontAwesome, pode usar o valor genérico fa-address-book. RssNote=Observação: cada definição de feed RSS fornece um Widget que você deve ativar para disponibilizá-lo em painel JumpToBoxes=Vá para Configuração -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 7aef030dd92..057e585336c 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista de valori trebuie să fie linii cu formatul chei ExtrafieldParamHelpcheckbox=Lista de valori trebuie să fie linii cu formatul cheie,valoare (unde cheia nu poate fi "0")

de exemplu:
1,valoare1
2,valoare2
3,valoare3
... ExtrafieldParamHelpradio=Lista de valori trebuie să fie linii cu formatul cheie,valoare (unde cheia nu poate fi '0')

de exemplu:
1,valoare1
2,valoare2
3,valoare3
... ExtrafieldParamHelpsellist=Lista de valori provine dintr-un tabel
Sintaxă: table_name:label_field:id_field::filtersql
Exemplu: c_typent:libelle:id::filtersql

- id_field este neapărat o cheie int primară
- filtersql este o condiție. Trebuie să folosească sintaxa USF. Exemplu: (activ:=:1) pentru a afișa numai valoarea activă.
De asemenea, poți utiliza $ID$ în filtru, care este id-ul curent al obiectului.
Dacă vrei să filtrezi pe extracâmpuri, utilizează sintaxa extra.fieldcode=... (unde fieldcode este codul extracâmpului)

Pentru ca lista să depindă de un alt atribut listă:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pentru ca lista să depindă de altă listă:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=Lista de valori provine dintr-o tabelă
Sintaxă: table_name:label_field:id_field::filtersql
Exemplu: c_typent:libelle:id::filtersql

filter poate fi un test simplu (de exemplu, activ=1 pentru a afișa numai valoarea activă)
De asemenea, poți utiliza $ID$ în filtru care este id-ul curent al obiectului curent
Pentru a face un SELECT în filtru, utilizează $SEL$
dacă vrei să filtrezi pe extracâmpuri, utilizează sintaxa extra.fieldcode=... (unde codul câmpului este codul extracâmpului)

Pentru a avea lista în funcție de pe o altă listă de atribute complementare:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

Pentru ca lista să depindă de altă listă:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrii trebuie să fie ObjectName:Classpath
Sintaxă: ObjectName: Classpath ExtrafieldParamHelpSeparator=Păstrați liber pentru un separator simplu
Setați acest lucru la 1 pentru un separator care se prăbușește (deschis în mod implicit pentru o nouă sesiune, apoi starea este păstrată pentru fiecare sesiune de utilizator)
Setați acest lucru la 2 pentru un separator care se prăbușește (se prăbușește implicit pentru o nouă sesiune, apoi starea este păstrată pentru fiecare sesiune a utilizatorului) LibraryToBuildPDF=Bibliotecă utilizată pentru generarea PDF-urilor @@ -514,16 +513,16 @@ ModuleCompanyCodeCustomerDigitaria=%s urmat de numele clientului trunchiat la nu ModuleCompanyCodeSupplierDigitaria=%s urmată de numele furnizorului trunchiat la numărul de caractere: %s pentru codul contabil al furnizorului. Use3StepsApproval=În mod implicit, comenzile de achiziţie trebuie să fie create și aprobate de 2 utilizatori diferiți (un pas/utilizator de creat și un pas/utilizator de aprobat. Rețineți că, dacă utilizatorul are atât permisiunea de a crea și de a aproba, va fi suficient un pas/un utilizator). Puteți solicita această opțiune pentru a introduce un al treilea pas/aprobare pentru utilizatori, dacă suma este mai mare decât o valoare dedicată (astfel încât vor fi necesari 3 pași: 1 = validare, 2 = prima aprobare și 3 = o a doua aprobare dacă suma este suficientă).
Setați acest lucru la gol, dacă este suficientă o aprobare (2 pași), setați-o la o valoare foarte mică (0,1) dacă este întotdeauna necesară o a doua aprobare (3 pași). UseDoubleApproval=Utilizați o aprobare în 3 pași atunci când suma (fără taxă) este mai mare decât... -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=NOTĂ: Configurarea pentru a trimite email-uri din aplicație utilizează configurația generică implicită (numită "%s"). Această alegere nu necesită cunoștințe tehnice și nicio configurare specială.
Cu toate acestea, este adesea mai bine să configurezi email-urile trimise pentru a utiliza cealaltă metodă (numită "%s") pentru a utiliza server-ul de email al furnizorului tău, în loc de configurarea implicită, din mai multe motive. : WarningPHPMailA=- Utilizarea serverului Furnizorului de servicii de email crește încrederea în emailul tău, astfel încât crește capacitatea de livrare fără a fi semnalat ca SPAM -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- Dacă domeniul tău de email (partea mymaildomain.com în myname@mymaildomain.com) este protejat de un SPF + o înregistrare DMARC, email-ul tău poate fi marcat ca SPAM deoarece regula dvs. DMARC este definită în zona DNS a domeniului expeditor (mymaildomain.com) nu permite trimiterea ca expeditor generic. Într-un astfel de caz, trebuie să dezactivezi DMARC pentru domeniu (sau să îl setezi la p=none așa cum a făcut @gmail.com) sau, mai bine, dacă ai cunoștințe tehnice, utilizează cealaltă metodă pentru a trimite email-uri folosind server-ul SMTP propriu de la furnizor. WarningPHPMailC=- Utilizând serverul SMTP al furnizorului de servicii email pentru a trimite email-uri este, de asemenea, interesantă, astfel încât toate email-urile trimise din aplicație vor fi, de asemenea, salvate în directorul "Trimise" al cutiei poștale. WarningPHPMailD=Prin urmare, este recomandat să schimbi metoda de trimitere a email-urilor la valoarea "SMTP". WarningPHPMailDbis=Dacă vrei cu adevărat să păstrezi metoda implicită "PHP" pentru a trimite email-uri, ignoră acest avertisment sau elimină-l făcând %sclic aici%s. WarningPHPMail2=Dacă furnizorul dvs. de e-mail SMTP trebuie să restricționeze clientul de email la unele adrese IP (foarte rar), aceasta este adresa IP a agentului utilizator de email (MUA) pentru aplicația ERP CRM: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. -SPFAndDMARCInformation=SPF and DMARC DNS record for main email addresses +WarningPHPMailSPF=Dacă numele de domeniu din adresa ta de email expeditorului este protejat de o înregistrare SPF (adresează-te registratorului numelui de domeniu), trebuie să adaugi următoarele IP-uri sau înregistrarea SPF DNS pentru tău. %s. +WarningPHPMailSPFDMARC=Dacă numele de domeniu din adresa ta de email de expeditor este protejat de o înregistrare DMARC diferită de p=none (întreabă-l pe registarul numelui de domeniu), trebuie să elimini înregistrarea DMARC sau să o setezi la p=none, cum ar fi @gmail.com) sau folosește trimiterea printr-o altă metodă. +SPFAndDMARCInformation=Înregistrare DNS SPF și DMARC pentru adresele de email principale ActualMailDNSRecordFound=Înregistrarea SPF reală %s găsită (pentru email %s): %s ClickToShowDescription=Faceți clic pentru a afișa descrierea DependsOn=Acest modul are nevoie de modulul(lele) @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Flitru Regex pentru curăţarea valorii (COMPANY_D DuplicateForbidden=Duplicare interzisă RemoveSpecialWords=Curățare anumite cuvinte atunci când se generează sub-conturi pentru clienți sau furnizori RemoveSpecialWordsHelp=Specifică cuvintele de curățat înainte de a calcula contul de client sau furnizor. Folosește ";" între cuvinte -GDPRContact=Responsabilul cu protecția datelor (DPO, confidențialitatea datelor sau contact GDPR ) +GDPRContact=Responsabil cu protecția datelor (DPO, Data Privacy sau contact GDPR, ...)  GDPRContactDesc=Dacă stochezi date cu caracter personal în Sistemul tău informațional, poți specifica aici persoana de contact care este responsabilă pentru GDPR HelpOnTooltip=Text de ajutor care să apară pe butonul de sugestii HelpOnTooltipDesc=Puneți un text sau o cheie de traducere aici pentru ca textul să apară într-o sugestie atunci când acest câmp apare într-un formular @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Denumire terț - Alias terț ALIAS_THIRDPARTY=Alias terț - Denumire terț PDFIn2Languages=Afișare etichete în PDF în 2 limbi diferite (este posibil ca această funcție să nu funcționeze pentru anumite limbi)  PDF_USE_ALSO_LANGUAGE_CODE=Dacă doriți să aveți unele texte duplicate în PDF-ul în 2 limbi diferite în același PDF generat, trebuie să setați aici această a doua limbă, astfel încât PDF-ul generat va conține 2 limbi diferite în aceeași pagină, cea aleasă la generarea PDF-ului și aceasta ( doar câteva șabloane PDF acceptă acest lucru). Păstrați gol pentru 1 limbă pentru fiecare PDF. -PDF_USE_A=Generare documente PDF cu formatul PDF/A în loc de formatul implicit PDF +PDF_USE_A=Format documente PDF FafaIconSocialNetworksDesc=Introduceți aici codul unei pictograme FontAwesome. Dacă nu știți ce este FontAwesome, puteți utiliza valoarea generică fa-address-book. RssNote=Notă: Fiecare definiție de flux RSS oferă un widget pe care trebuie să îl activați pentru a-l avea disponibil în tabloul de bord JumpToBoxes=Mergi la Setări -> Widget-uri @@ -2555,3 +2554,8 @@ MenuDict=Dicționar AddMoreParams=Adăugare mai mulți parametri pentru conexiune (cookie-uri, jetoane, ...)
Exemplu: token : valoare token ParamName=Nume parametru ParamValue=Valoare parametru +ConfirmDeleteParamOfSocialNetwork=Ești sigur că vrei să ștergi acest parametru? +HelpMariaDBToGetPossibleValues=Poți obține o listă de valori posibile rulând următoarea comandă SQL: %s +Captcha=Captcha +CaptchaDesc=Dacă vrei să-ți protejezi pagina de autentificare cu un cod Captcha, poți alege pe cel care să-l utilizezi aici +DolibarrStandardCaptcha=Un captcha nativ generat de Dolibarr diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 9e0707fd35c..3d9bd9d8e2e 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Список значений должен быть с ExtrafieldParamHelpcheckbox=Список значений должен быть строками с форматом: ключ, значение (где ключ не может быть равен 0)

например:
1, значение1
2, значение2
3, значение3
... ExtrafieldParamHelpradio=Список значений должен быть строками с форматом: ключ, значение (где ключ не может быть равен 0)

например:
1, значение1
2, значение2
3, значение3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметры должны быть ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Оставить пустым для простого разделителя
Установите для этого разделителя значение 1 (по умолчанию открыто для нового сеанса, затем статус сохраняется для каждого сеанса пользователя)
Установите значение 2 для сжимающегося разделителя (по умолчанию свернуто для нового сеанса, затем статус сохраняется для каждой пользовательской сессии) LibraryToBuildPDF=Библиотека используемая для создания PDF-файлов @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Фильтр регулярных выражени DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Удалите определенные слова при создании субаккаунтов для клиенты или Поставщики RemoveSpecialWordsHelp=Укажите слова, которые необходимо очистить перед расчетом учетной записи клиент или поставщик. Использовать ";" между каждым словом -GDPRContact=Сотрудник по защите данных (контактное лицо DPO, Data Privacy или GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Если вы храните личные данные в своей информационной системе, здесь вы можете указать контактное лицо, ответственное за Общее положение о защите данных. HelpOnTooltip=Текст справки для отображения во всплывающей подсказке HelpOnTooltipDesc=Поместите здесь текст или ключ перевода, чтобы текст отображался во всплывающей подсказке, когда это поле появляется в форме @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Стороннее имя – сторонний псевдо ALIAS_THIRDPARTY=Сторонний псевдоним – стороннее имя. PDFIn2Languages=Метки Показать в PDF-файле на двух разных языках (этот особенность может не работать для некоторых языков) PDF_USE_ALSO_LANGUAGE_CODE=Если вы хотите, чтобы некоторые тексты в вашем PDF-файле были продублированы на 2 разных языках в одном сгенерированном PDF-файле, вы должны установить здесь этот второй язык, чтобы сгенерированный PDF-файл содержал 2 разных языка на одной странице: один, выбранный при создании PDF, и этот ( только несколько шаблонов PDF поддерживают это). Оставьте пустым для 1 языка в PDF-файле. -PDF_USE_A=Создавайте PDF-документы в формате PDF/A вместо по умолчанию формата PDF. +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Введите здесь код значка FontAwesome. Если вы не знаете, что такое FontAwesome, вы можете использовать общее значение fa-address-book. RssNote=Примечание. Каждое определение RSS-канала предоставляет виджет, который необходимо включить, чтобы он был доступен на панели управления. JumpToBoxes=Перейти к настройке -> Виджеты @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index c429806c41f..5dc606e01b9 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametre musia byť ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Ponechajte prázdne pre jednoduchý oddeľovač
Nastavte toto na 1 pre zbalený oddeľovač (predvolene otvorený pre novú reláciu, potom sa stav zachová pre každú reláciu používateľa)
Nastavte toto na 2 pre zbalený oddeľovač (predvolene zbalený pre novú reláciu, potom sa stav zachová pre každú reláciu používateľa) LibraryToBuildPDF=Knižnica používaná pre generovanie PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filter regulárneho výrazu na vyčistenie hodnoty DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Pri vytváraní podúčtov pre zákazníkov alebo dodávateľov očistite určité slová RemoveSpecialWordsHelp=Pred výpočtom účtu zákazníka alebo dodávateľa zadajte slová, ktoré sa majú vyčistiť. Použite znak ";" medzi každým slovom -GDPRContact=Poverenec pre ochranu údajov (DPO, kontakt na ochranu osobných údajov alebo GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ak vo svojom Informačnom systéme uchovávate osobné údaje, môžete tu uviesť kontakt, ktorý je zodpovedný za všeobecné nariadenie o ochrane údajov HelpOnTooltip=Text pomocníka, ktorý sa zobrazí v popise HelpOnTooltipDesc=Sem vložte text alebo kľúč prekladu, aby sa text zobrazil v popise, keď sa toto pole objaví vo formulári @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Názov tretej strany – Alias tretej strany ALIAS_THIRDPARTY=Alias tretej strany – názov tretej strany PDFIn2Languages=Zobraziť štítky v PDF v 2 rôznych jazykoch (táto funkcia nemusí fungovať v niektorých jazykoch) PDF_USE_ALSO_LANGUAGE_CODE=Ak chcete, aby boli niektoré texty vo vašom PDF duplikované v 2 rôznych jazykoch v rovnakom vygenerovanom PDF, musíte tu nastaviť tento druhý jazyk, aby vygenerovaný PDF obsahoval 2 rôzne jazyky na tej istej stránke, jeden zvolený pri generovaní PDF a tento ( podporuje to iba niekoľko šablón PDF). Ponechajte prázdne pre 1 jazyk na PDF. -PDF_USE_A=Generujte dokumenty PDF vo formáte PDF/A namiesto predvoleného formátu PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Tu zadajte kód ikony FontAwesome. Ak neviete, čo je FontAwesome, môžete použiť generickú hodnotu fa-address-book. RssNote=Poznámka: Každá definícia informačného kanála RSS obsahuje miniaplikáciu, ktorú musíte povoliť, aby bola dostupná na informačnom paneli JumpToBoxes=Prejdite na Nastavenie -> Widgety @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index 35d630dca5b..61dc3b2a397 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=Seznam vrednosti mora biti vrstic z obliko ključ,vrednost (kjer ključ ne sme biti '0')

na primer:
1,vrednost1
2,vrednost2
3,vrednost3 a0342fccfda19b ExtrafieldParamHelpradio=Seznam vrednosti mora biti vrstic z obliko ključ,vrednost (kjer ključ ne sme biti '0')

na primer:
1,vrednost1
2,vrednost2
3,vrednost3 a0342fccfda19b ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametri morajo biti ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Naj ostane prazno za preprosto ločilo
Nastavite to na 1 za strnjeno ločilo (privzeto odprto za novo sejo, nato se status ohrani za vsako uporabniško sejo)
Nastavite to na 2 za strnjeno ločilo (privzeto strnjeno za novo sejo, nato status se hrani za vsako uporabniško sejo) LibraryToBuildPDF=Knjižnica, ki se uporablja za ustvarjanje PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filter regularnih izrazov za čiščenje vrednosti DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Očistite določene besede pri ustvarjanju podračunov za stranke ali dobavitelje RemoveSpecialWordsHelp=Določite besede, ki jih je treba očistiti, preden izračunate račun stranke ali dobavitelja. Uporabi ";" med vsako besedo -GDPRContact=Pooblaščenec za varstvo podatkov (DPO, kontakt za zasebnost podatkov ali GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Če v svojem Informacijskem sistemu shranjujete osebne podatke, lahko tukaj navedete kontakt, ki je odgovoren za Splošno uredbo o varstvu podatkov HelpOnTooltip=Besedilo pomoči za prikaz v opisu orodja HelpOnTooltipDesc=Tukaj vnesite besedilo ali ključ za prevod, da se besedilo prikaže v opisu orodja, ko se to polje prikaže v obrazcu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Ime tretje osebe - vzdevek tretje osebe ALIAS_THIRDPARTY=Vzdevek tretje osebe – ime tretje osebe PDFIn2Languages=Pokaži oznake v PDF-ju v dveh različnih jezikih (ta funkcija morda ne bo delovala v nekaterih jezikih) PDF_USE_ALSO_LANGUAGE_CODE=Če želite imeti nekatera besedila v vašem PDF-ju podvojena v 2 različnih jezikih v istem ustvarjenem PDF-ju, morate tukaj nastaviti ta drugi jezik, tako da bo ustvarjeni PDF vseboval 2 različna jezika na isti strani, tistega, izbranega pri ustvarjanju PDF-ja, in tega ( to podpira le nekaj predlog PDF). Pustite prazno za 1 jezik na PDF. -PDF_USE_A=Ustvarite dokumente PDF s formatom PDF/A namesto s privzetim formatom PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Tukaj vnesite kodo ikone FontAwesome. Če ne veste, kaj je FontAwesome, lahko uporabite generično vrednost fa-adress-book. RssNote=Opomba: vsaka definicija vira RSS ponuja gradnik, ki ga morate omogočiti, da bo na voljo na nadzorni plošči JumpToBoxes=Pojdite na Nastavitve -> Pripomočki @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sq_AL/admin.lang b/htdocs/langs/sq_AL/admin.lang index a23bff05ac5..3973a8884f1 100644 --- a/htdocs/langs/sq_AL/admin.lang +++ b/htdocs/langs/sq_AL/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=List of values must be lines with format key,value (wh ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrat duhet të jenë ObjectName:Classpath
Sintaksa: ObjectName:Classpath ExtrafieldParamHelpSeparator=Mbajeni bosh për një ndarës të thjeshtë
Vendoseni këtë në 1 për një ndarës në kolaps (i hapur si parazgjedhje për sesionin e ri, më pas statusi mbahet për çdo sesion përdoruesi)
Cakto këtë në 2 për një ndarës në kolaps (i palosur si parazgjedhje për sesionin e ri, më pas statusi mbahet për çdo sesion përdoruesi) LibraryToBuildPDF=Biblioteka e përdorur për gjenerimin e PDF-ve @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Filtri Regex në vlerë të pastër (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Pastroni fjalë të caktuara kur krijoni nën-llogari për klientët ose furnitorët RemoveSpecialWordsHelp=Specifikoni fjalët që duhen pastruar përpara se të llogaritni llogarinë e klientit ose furnizuesit. Perdor nje ";" mes çdo fjale -GDPRContact=Oficeri i Mbrojtjes së të Dhënave (DPO, Privatësia e të Dhënave ose kontakti GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Nëse ruani të dhëna personale në Sistemin tuaj të Informacionit, mund të emërtoni kontaktin që është përgjegjës për Rregulloren e Përgjithshme të Mbrojtjes së të Dhënave këtu HelpOnTooltip=Teksti i ndihmës për t'u shfaqur në këshillën e veglave HelpOnTooltipDesc=Vendosni tekstin ose një çelës përkthimi këtu që teksti të shfaqet në një këshillë mjeti kur kjo fushë shfaqet në një formë @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Emri i palës së tretë - pseudonimi i palës së tretë ALIAS_THIRDPARTY=Pseudonimi i palës së tretë - Emri i palës së tretë PDFIn2Languages=Shfaq etiketat në PDF në 2 gjuhë të ndryshme (ky funksion mund të mos funksionojë për disa gjuhë) PDF_USE_ALSO_LANGUAGE_CODE=Nëse dëshironi që disa tekste në PDF-në tuaj të dublikuara në 2 gjuhë të ndryshme në të njëjtin PDF të gjeneruar, duhet të vendosni këtu këtë gjuhë të dytë të krijuar në këtë mënyrë PDF-ja do të përmbajë 2 gjuhë të ndryshme në të njëjtën faqe, atë të zgjedhur gjatë krijimit të PDF-së dhe këtë ( vetëm disa shabllone PDF e mbështesin këtë). Mbajeni bosh për 1 gjuhë për PDF. -PDF_USE_A=Gjeneroni dokumente PDF me formatin PDF/A në vend të formatit të paracaktuar PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Futni këtu kodin e një ikone FontAwesome. Nëse nuk e dini se çfarë është FontAwesome, mund të përdorni vlerën e përgjithshme fa-address-book. RssNote=Shënim: Çdo përkufizim i furnizimit RSS ofron një miniaplikacion që duhet ta aktivizoni për ta pasur të disponueshëm në panelin e kontrollit JumpToBoxes=Shko te Konfigurimi -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 3749e27cff3..de6373e2f42 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Lista över värden måste vara rader med formatet nyc ExtrafieldParamHelpcheckbox=Lista över värden måste vara rader med formatet nyckel,värde (där nyckel inte kan vara '0')

till exempel:
1,värde1
2,värde2
3,värde3
... ExtrafieldParamHelpradio=Lista över värden måste vara rader med formatet nyckel,värde (där nyckel inte kan vara '0')

till exempel:
1,värde1
2,värde2
3,värde3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrar måste vara ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Håll tomt för en enkel separator
Ange detta till 1 för en kollapsande separator (öppnas som standard för en ny session, sedan behålls status för varje användarsession)
Ange detta till 2 för en kollapsande separator (kollapsad som standard för ny session, sedan status hålls för varje användarsession) LibraryToBuildPDF=Bibliotek som används för PDF-generering @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter för att rensa värdet (COMPANY_DIGIT DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Ta bort vissa ord när du skapar underkonton för kunder eller leverantörer RemoveSpecialWordsHelp=Ange orden som ska tas bort innan du beräknar kund- eller leverantörskontot. Använd ett ; mellan varje ord -GDPRContact=Dataskyddsansvarig (DPO, Data Privacy eller GDPR-kontakt) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Om du lagrar personuppgifter i ditt informationssystem kan du här nämna den kontakt som är ansvarig för den allmänna dataskyddsförordningen HelpOnTooltip=Hjälptext att visa i verktygstips HelpOnTooltipDesc=Lägg text eller en översättning här för att texten ska visas i ett verktygstips när detta fält visas i ett formulär @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Tredjepartsnamn - Tredjepartsalias ALIAS_THIRDPARTY=Tredje parts alias - Tredje parts namn PDFIn2Languages=Visa etiketter i PDF-filen på 2 olika språk (den här funktionen kanske inte fungerar för ett par språk) PDF_USE_ALSO_LANGUAGE_CODE=Om du vill att några texter i din PDF ska dupliceras på två olika språk i samma genererade PDF, måste du ställa in det här andra språket så att genererad PDF kommer att innehålla 2 olika språk på samma sida, det som du valt när du skapar PDF och det här ( endast få PDF-mallar stöder detta). Håll tomt för 1 språk per PDF. -PDF_USE_A=Generera PDF-dokument med formatet PDF/A istället för standardformatet PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ange här koden för en FontAwesome-ikon. Om du inte vet vad som är FontAwesome kan du använda det allmänna värdet fa-adressbok. RssNote=Obs! Varje RSS-feeddefinition ger en widget som du måste aktivera för att ha den tillgänglig i instrumentpanelen JumpToBoxes=Hoppa till Setup -> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/sw_SW/admin.lang b/htdocs/langs/sw_SW/admin.lang index 49a00e0db63..2c41f1f6f80 100644 --- a/htdocs/langs/sw_SW/admin.lang +++ b/htdocs/langs/sw_SW/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Orodha ya thamani lazima iwe mistari yenye ufunguo wa ExtrafieldParamHelpcheckbox=Orodha ya thamani lazima iwe mistari yenye ufunguo wa umbizo, thamani (ambapo ufunguo hauwezi kuwa '0')

kwa mfano:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=Orodha ya thamani lazima iwe mistari yenye ufunguo wa umbizo, thamani (ambapo ufunguo hauwezi kuwa '0')

kwa mfano:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Vigezo lazima ziwe ObjectName:Classpath
Sintaksia: Jina la Kitu: Njia ya darasa ExtrafieldParamHelpSeparator=Weka tupu kwa kitenganishi rahisi
Weka hii iwe 1 kwa kitenganishi kinachokunjwa (hufunguliwa kwa chaguomsingi kwa kipindi kipya, kisha hali huwekwa kwa kila kipindi cha mtumiaji)
Weka hii kuwa 2 kwa kitenganishi kinachoporomoka (kilichoporomoka kwa chaguo-msingi kwa kipindi kipya, kisha hali inawekwa mbele ya kila kipindi cha mtumiaji) LibraryToBuildPDF=Maktaba inayotumika kutengeneza PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Kichujio cha Regex ili kusafisha thamani (COMPANY_ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Safisha maneno fulani unapotengeneza akaunti ndogo za wateja au wasambazaji RemoveSpecialWordsHelp=Bainisha maneno yatakayosafishwa kabla ya kukokotoa akaunti ya mteja au mgavi. Tumia ";" kati ya kila neno -GDPRContact=Afisa wa Ulinzi wa Data (DPO, Faragha ya Data au mawasiliano ya GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Ukihifadhi data ya kibinafsi katika Mfumo wako wa Taarifa, unaweza kumtaja mwasiliani ambaye anawajibika kwa Udhibiti wa Jumla wa Ulinzi wa Data hapa HelpOnTooltip=Nakala ya usaidizi ionekane kwenye kidokezo HelpOnTooltipDesc=Weka maandishi au ufunguo wa kutafsiri hapa ili maandishi yaonekane kwenye kidokezo cha zana wakati sehemu hii inaonekana katika fomu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Onyesha lebo katika PDF katika lugha 2 tofauti (kipengele hiki kinaweza kisifanye kazi kwa baadhi ya lugha kadhaa) PDF_USE_ALSO_LANGUAGE_CODE=Iwapo ungependa kuwa na baadhi ya maandishi katika PDF yako yaliyonakiliwa katika lugha 2 tofauti katika PDF iliyozalishwa sawa, lazima uweke hapa lugha hii ya pili ili PDF itakayozalishwa iwe na lugha 2 tofauti katika ukurasa mmoja, ile iliyochaguliwa wakati wa kutengeneza PDF na hii (violezo vichache tu vya PDF vinavyounga mkono hili). Weka tupu kwa lugha 1 kwa kila PDF. -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Ingiza hapa msimbo wa ikoni ya FontAwesome. Ikiwa hujui ni nini FontAwesome, unaweza kutumia fa-address-book ya thamani ya jumla. RssNote=Kumbuka: Kila ufafanuzi wa mipasho ya RSS hutoa wijeti ambayo ni lazima uwashe ili ipatikane kwenye dashibodi JumpToBoxes=Rukia kwa Kuweka -> Wijeti @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ta_IN/admin.lang b/htdocs/langs/ta_IN/admin.lang index ebbc77e6315..8647715b238 100644 --- a/htdocs/langs/ta_IN/admin.lang +++ b/htdocs/langs/ta_IN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=மதிப்புகள் பட்டியல ExtrafieldParamHelpcheckbox=மதிப்புகளின் பட்டியல் வடிவமைப்பு விசை, மதிப்பு (விசை '0' ஆக இருக்க முடியாது) கொண்ட கோடுகளாக இருக்க வேண்டும். ExtrafieldParamHelpradio=மதிப்புகளின் பட்டியல் வடிவமைப்பு விசை, மதிப்பு (விசை '0' ஆக இருக்க முடியாது) கொண்ட கோடுகளாக இருக்க வேண்டும். ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=அளவுருக்கள் கண்டிப்பாக ObjectName:Classpath
தொடரியல்: ObjectName:Classpath ExtrafieldParamHelpSeparator=ஒரு எளிய பிரிப்பானுக்காக காலியாக இருங்கள்
சரிந்து வரும் பிரிப்பானுக்கு இதை 1 ஆக அமைக்கவும் (புதிய அமர்வுக்கு இயல்புநிலையாகத் திறக்கவும், பின்னர் ஒவ்வொரு பயனர் அமர்வுக்கும் நிலை வைக்கப்படும்)
ஒரு சரியும் பிரிப்பானுக்கு இதை 2 ஆக அமைக்கவும் (புதிய அமர்வுக்கு இயல்புநிலையாகச் சுருக்கப்பட்டது. ஒவ்வொரு பயனர் அமர்வுக்கும் நிலை வைக்கப்படும்) LibraryToBuildPDF=நூலகம் PDF உருவாக்கப் பயன்படுகிறது @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ரீஜெக்ஸ் ஃபில்டர் DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Clean certain words when generating sub-accounts for customers or suppliers RemoveSpecialWordsHelp=Specify the words to be cleaned before calculating the customer or supplier account. Use a ";" between each word -GDPRContact=தரவு பாதுகாப்பு அதிகாரி (DPO, தரவு தனியுரிமை அல்லது GDPR தொடர்பு) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=உதவிக்குறிப்பில் உரையைக் காட்ட உதவும் HelpOnTooltipDesc=இந்தப் புலம் படிவத்தில் தோன்றும் போது, டூல்டிப்பில் உரையைக் காட்ட, உரை அல்லது மொழிபெயர்ப்பு விசையை இங்கே வைக்கவும் @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Third-party name - Third-party alias ALIAS_THIRDPARTY=Third-party alias - Third-party name PDFIn2Languages=Show labels in the PDF in 2 different languages (this feature may not work for some couple of languages) PDF_USE_ALSO_LANGUAGE_CODE=உங்கள் PDF இல் உள்ள சில உரைகளை ஒரே மாதிரியான PDF இல் 2 வெவ்வேறு மொழிகளில் நகல் எடுக்க விரும்பினால், நீங்கள் இந்த இரண்டாவது மொழியை இங்கே அமைக்க வேண்டும், எனவே உருவாக்கப்பட்ட PDF ஆனது ஒரே பக்கத்தில் 2 வெவ்வேறு மொழிகளைக் கொண்டிருக்கும், PDF ஐ உருவாக்கும் போது தேர்ந்தெடுக்கப்பட்ட மொழி மற்றும் இது ( சில PDF வார்ப்புருக்கள் மட்டுமே இதை ஆதரிக்கின்றன). ஒரு PDFக்கு 1 மொழிக்கு காலியாக இருங்கள். -PDF_USE_A=Generate PDF documents with format PDF/A instead of default format PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=FontAwesome ஐகானின் குறியீட்டை இங்கே உள்ளிடவும். FontAwesome என்றால் என்னவென்று உங்களுக்குத் தெரியாவிட்டால், FA-address-book என்ற பொதுவான மதிப்பைப் பயன்படுத்தலாம். RssNote=குறிப்பு: ஒவ்வொரு RSS ஊட்ட வரையறையும் ஒரு விட்ஜெட்டை வழங்குகிறது, அதை நீங்கள் டாஷ்போர்டில் கிடைக்கச் செய்ய வேண்டும் JumpToBoxes=அமைவு -> விட்ஜெட்டுகளுக்கு செல்லவும் @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/tg_TJ/admin.lang b/htdocs/langs/tg_TJ/admin.lang index e3a2d724d6c..79453eb810f 100644 --- a/htdocs/langs/tg_TJ/admin.lang +++ b/htdocs/langs/tg_TJ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Рӯйхати арзишҳо бояд сатрҳо б ExtrafieldParamHelpcheckbox=Рӯйхати арзишҳо бояд сатрҳо бо калиди формат бошад, ки арзиш (дар он калид '0' буда наметавонад)

масалан:
1, value1
2, value2 a0342fccfda3b33 ExtrafieldParamHelpradio=Рӯйхати арзишҳо бояд сатрҳо бо калиди формат бошад, ки арзиш (дар он калид '0' буда наметавонад)

масалан:
1, value1
2, value2 a0342fccfda3b33 ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметрҳо бояд ObjectName бошанд: Classpath
Синтаксис: ObjectName: Classpath ExtrafieldParamHelpSeparator=Барои ҷудосози оддӣ холӣ нигоҳ доред
Инро барои ҷудосози фурӯпошанда ба 1 таъин кунед (бо нобаёнӣ барои сессияи нав кушода мешавад, пас мақом барои ҳар як сеанси корбар нигоҳ дошта мешавад)
Инро барои ҷудосози фурӯпошанда ба 2 муқаррар кунед (бо нобаёнӣ барои ҷаласаи нав, мақом пеш аз ҳар як ҷаласаи корбар нигоҳ дошта мешавад) LibraryToBuildPDF=Китобхона барои насли PDF истифода мешавад @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Филтри Regex ба арзиши тоза (COM DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Ҳангоми тавлиди зерҳисобҳо барои муштариён ё таъминкунандагон калимаҳои муайянро тоза кунед RemoveSpecialWordsHelp=Пеш аз ҳисоб кардани ҳисоби муштарӣ ё молрасон калимаҳоеро, ки бояд тоза карда шаванд, муайян кунед. Истифодаи ";" байни ҳар як калима -GDPRContact=Корманди ҳифзи маълумот (DPO, Privacy Data or GDPR тамос) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Агар шумо маълумоти шахсиро дар Системаи иттилоотии худ нигоҳ доред, шумо метавонед дар ин ҷо алоқаеро номбар кунед, ки барои Қоидаҳои умумии ҳифзи маълумот масъул аст HelpOnTooltip=Матни кӯмак барои нишон додан дар лавҳаи асбобҳо HelpOnTooltipDesc=Матн ё калиди тарҷумаро дар ин ҷо гузоред, то матн дар лавҳаи асбобҳо нишон дода шавад, вақте ки ин майдон дар шакл пайдо мешавад @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Номи тарафи сеюм - тахаллуси тараф ALIAS_THIRDPARTY=Номи шахси сеюм - Номи тарафи сеюм PDFIn2Languages=Нишон додани тамғакоғазҳо дар PDF бо 2 забони гуногун (ин хусусият метавонад барои баъзе забонҳо кор накунад) PDF_USE_ALSO_LANGUAGE_CODE=Агар шумо хоҳед, ки баъзе матнҳо дар PDF -и худ бо 2 забони гуногун дар як PDF -и тавлидшуда такрор карда шаванд, шумо бояд ин забони дуввумро муқаррар кунед, то PDF -и тавлидшуда дар як саҳифа 2 забони гуногунро дар бар гирад, ки ҳангоми тавлиди PDF интихоб шудааст ва ин ( Танҳо чанд қолаби PDF инро дастгирӣ мекунанд). Барои 1 забон барои як PDF холӣ бошед. -PDF_USE_A=Ҳуҷҷатҳои PDF-ро бо формати PDF/A ба ҷои формати пешфарз PDF эҷод кунед +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Дар ин ҷо рамзи тасвири FontAwesomeро ворид кунед. Агар шумо намедонед, ки FontAwesome чист, шумо метавонед арзиши умумии fa-address-book -ро истифода баред. RssNote=Эзоҳ: Ҳар як таърифи хати RSS виҷетеро пешкаш мекунад, ки шумо бояд онро дар панели идоракунӣ дастрас кунед JumpToBoxes=Гузаштан ба Танзимот -> Виджетҳо @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index 01dad9301c4..1ae2f55e46f 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=รายการค่าต้องเป็นบ ExtrafieldParamHelpcheckbox=รายการค่าต้องเป็นบรรทัดที่มีรูปแบบคีย์ ค่า (โดยที่คีย์ไม่สามารถเป็น '0')

เป็นต้น :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=รายการค่าต้องเป็นบรรทัดที่มีรูปแบบคีย์ ค่า (โดยที่คีย์ไม่สามารถเป็น '0')

เป็นต้น :
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=พารามิเตอร์ต้องเป็น ObjectName:Classpath
ไวยากรณ์: ObjectName:Classpath ExtrafieldParamHelpSeparator=เว้นว่างไว้สำหรับตัวคั่นแบบง่าย
ตั้งค่านี้เป็น 1 สำหรับตัวคั่นแบบยุบ (เปิดโดยค่าเริ่มต้นสำหรับเซสชันใหม่ จากนั้นสถานะจะถูกเก็บไว้สำหรับเซสชันผู้ใช้แต่ละเซสชัน)
ตั้งค่านี้เป็น 2 สำหรับตัวแยกการยุบ (ยุบโดยค่าเริ่มต้นสำหรับเซสชันใหม่ จากนั้นสถานะจะถูกเก็บไว้ก่อนแต่ละเซสชันของผู้ใช้) LibraryToBuildPDF=ไลบรารีที่ใช้สำหรับการสร้าง PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=ตัวกรอง Regex เพื่อล้ DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=ทำความสะอาดคำบางคำเมื่อสร้างบัญชีย่อยสำหรับลูกค้าหรือซัพพลายเออร์ RemoveSpecialWordsHelp=ระบุคำที่ต้องการล้างก่อนคำนวณบัญชีลูกค้าหรือซัพพลายเออร์ ใช้ ";" ระหว่างแต่ละคำ -GDPRContact=เจ้าหน้าที่คุ้มครองข้อมูล (DPO, ความเป็นส่วนตัวของข้อมูล หรือการติดต่อ GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=หากคุณจัดเก็บข้อมูลส่วนบุคคลไว้ในระบบข้อมูลของคุณ คุณสามารถตั้งชื่อผู้ติดต่อที่รับผิดชอบตามกฎการคุ้มครองข้อมูลทั่วไปได้ที่นี่ HelpOnTooltip=ข้อความช่วยเหลือที่จะแสดงบนคำแนะนำเครื่องมือ HelpOnTooltipDesc=ใส่ข้อความหรือคีย์การแปลที่นี่เพื่อให้ข้อความแสดงในคำแนะนำเครื่องมือเมื่อฟิลด์นี้ปรากฏในแบบฟอร์ม @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=ชื่อบุคคลที่สาม - นามแฝ ALIAS_THIRDPARTY=นามแฝงบุคคลที่สาม - ชื่อบุคคลที่สาม PDFIn2Languages=แสดงป้ายกำกับในรูปแบบ PDF ใน 2 ภาษาที่แตกต่างกัน (ฟีเจอร์นี้อาจใช้ไม่ได้กับบางภาษา) PDF_USE_ALSO_LANGUAGE_CODE=หากคุณต้องการให้ข้อความบางส่วนใน PDF ของคุณซ้ำกันใน 2 ภาษาที่แตกต่างกันใน PDF ที่สร้างขึ้นเดียวกัน คุณต้องตั้งค่าภาษาที่สองนี้ที่นี่ ดังนั้น PDF ที่สร้างขึ้นจะมี 2 ภาษาที่แตกต่างกันในหน้าเดียวกัน ภาษาที่เลือกเมื่อสร้าง PDF และภาษานี้ ( มีเทมเพลต PDF เพียงไม่กี่แบบเท่านั้นที่รองรับสิ่งนี้) เว้นว่างไว้ 1 ภาษาต่อ PDF -PDF_USE_A=สร้างเอกสาร PDF ด้วยรูปแบบ PDF/A แทนรูปแบบ PDF เริ่มต้น +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=ป้อนรหัสของไอคอน FontAwesome ที่นี่ หากคุณไม่รู้ว่า FontAwesome คืออะไร คุณสามารถใช้ค่า fa-address-book ทั่วไปได้ RssNote=หมายเหตุ: ข้อกำหนดฟีด RSS แต่ละรายการมีวิดเจ็ตที่คุณต้องเปิดใช้งานเพื่อให้พร้อมใช้งานในแดชบอร์ด JumpToBoxes=ข้ามไปที่การตั้งค่า -> วิดเจ็ต @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index fe92239e0cf..bbaf5888519 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -459,7 +459,7 @@ ExtrafieldSelectList=Tablodan seç ExtrafieldSeparator=Ayırıcı (bir alan değil) ExtrafieldPassword=Parola ExtrafieldRadio=Radio buttons (1 choice only) -ExtrafieldCheckBox=Select list (n choices) +ExtrafieldCheckBox=Seçim listesi (seçeneklerde) ExtrafieldCheckBoxFromList=Select from table (n choices) ExtrafieldLink=Bir nesneye bağlantı ExtrafieldPointGeo=Geometrik Nokta @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Değerlerin listesi, biçim anahtarı ve değeri olan ExtrafieldParamHelpcheckbox=Değerler listesi, biçim anahtarı ve değeri olan satırlar olmalıdır (burada anahtar '0' olamaz)

örneğin:
1, değer1
2,değer2
3,değer3
... ExtrafieldParamHelpradio=Değerler listesi, biçim anahtarı ve değeri olan satırlar olmalıdır (burada anahtar '0' olamaz)

örneğin:
1,değer1
2,değer2
3,değer3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametreler NesneAdı olmalıdır: Sınıfyolu
Sözdizimi:NesneAdı:Sınıfyolu ObjectName:Classpath ExtrafieldParamHelpSeparator=Basit bir ayırıcı için boş tut
Daraltılan ayırıcı için bunu 1 olarak ayarlayın (yeni oturum için varsayılan olarak açılır, ardından her kullanıcı oturumu için durum tutulur)
Daraltılan ayırıcı için bunu 2 olarak ayarlayın (varsayılan olarak daraltıldı yeni oturum, ardından durum her kullanıcı oturumu için tutulur) LibraryToBuildPDF=PDF oluşturmada kullanılan kütüphane @@ -2034,7 +2033,7 @@ MinimumNoticePeriod=Enaz bildirim süresi (İzin isteğiniz bu süreden önce ya NbAddedAutomatically=Her ay (otomatik olarak) bu kullanıcının sayacına eklenen gün sayısı EnterAnyCode=Bu alan, çizgiyi tanımlamak için bir referans içerir. Seçtiğiniz herhangi bir değeri, ancak özel karakterler olmadan girin. Enter0or1=0 veya 1 girin -EnterYesOrNo=Enter Yes or No +EnterYesOrNo=Evet veya Hayır girin UnicodeCurrency=Buraya parantezlerin arasına para birimi sembolünü temsil eden bayt numaralarının listesini girin. Örneğin: $ için [36] girin - Türk Lirası TL [84,76] - € için [8364] girin ColorFormat=RGB rengi HEX formatındadır, örn: FF0000 PictoHelp=Şu biçimde simge adı:
- geçerli tema dizinindeki bir resim dosyası için image.png
- image.png@module dosya bir modülün /img/ dizinindeyse
- FontAwesome fa-xxx picto için fa-xxx
- FontAwesome fa-xxx resmi için fontawesome_xxx_fa_color_size (ön ek, renk ve boyut ayarlı) @@ -2128,7 +2127,7 @@ MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Satırlara resim eklenmesi halinde sütunun ge MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_UNIT_PRICE=Teklif taleplerinde birim fiyat sütununu gizle MAIN_GENERATE_DOCUMENTS_SUPPLIER_PROPOSAL_WITHOUT_TOTAL_COLUMN=Teklif taleplerinde toplam fiyat sütununu gizle MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_UNIT_PRICE=Satınalma siparişlerinde birim fiyat sütununu gizle -MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Hide the total price column on purchase orders +MAIN_GENERATE_DOCUMENTS_PURCHASE_ORDER_WITHOUT_TOTAL_COLUMN=Satınalma siparişlerinde toplam fiyat sütununu gizle MAIN_PDF_NO_SENDER_FRAME=Gönderen adresi çerçevesindeki sınırları gizle MAIN_PDF_NO_RECIPENT_FRAME=Alıcı adres çerçevesindeki kenarlıkları gizle MAIN_PDF_HIDE_CUSTOMER_CODE=Müşteri kodunu gizle @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Değeri temizlemek için normal ifade filtresi (CO DuplicateForbidden=Kopyalanması yasaktır RemoveSpecialWords=Müşteriler veya tedarikçiler için alt hesaplar oluştururken belirli kelimeleri temizleyin RemoveSpecialWordsHelp=Müşteri veya tedarikçi hesabını hesaplamadan önce temizlenmesi gereken kelimeleri belirtin. Kullanın ";" her kelimenin arasında -GDPRContact=Veri Koruma Görevlisi (DPO, Veri Gizliliği veya GDPR kişisi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Kişisel verilerinizi Bilgi Sisteminizde saklıyorsanız, Genel Veri Koruma Yönetmeliği'nden sorumlu olan kişinin adını buradan verebilirsiniz. HelpOnTooltip=Araç ipucunda gösterilecek yardım metni HelpOnTooltipDesc=Bu alan bir formda göründüğünde metnin bir araç ipucunda gösterilmesi için buraya metin veya çeviri anahtarı koyun @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Üçüncü taraf adı - Üçüncü taraf takma adı ALIAS_THIRDPARTY=Üçüncü taraf takma adı - Üçüncü taraf adı PDFIn2Languages=PDF'deki etiketleri 2 farklı dilde göster (bu özellik bazı dillerde çalışmayabilir) PDF_USE_ALSO_LANGUAGE_CODE=PDF'nizdeki bazı metinlerin aynı oluşturulan PDF'de 2 farklı dilde çoğaltılmasını istiyorsanız, burada bu ikinci dili ayarlamanız gerekir, böylece oluşturulan PDF aynı sayfada 2 farklı dil içerir, biri PDF oluşturulurken seçilir ve bu ( yalnızca birkaç PDF şablonu bunu destekler). PDF başına 1 dil için boş bırakın. -PDF_USE_A=Varsayılan format PDF yerine PDF/A formatında PDF belgeleri oluşturun +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Buraya FontAwesome simgesinin kodunu girin. FontAwesome'ın ne olduğunu bilmiyorsanız, fa-address-book genel değerini kullanabilirsiniz. RssNote=Not: Her RSS akışı tanımı, gösterge tablosunda mevcut olması için etkinleştirmeniz gereken bir pencere öğesi sağlar. JumpToBoxes=Kuruluma Atla -> Widget'lar @@ -2397,8 +2396,8 @@ INVOICE_ADD_EPC_QR_CODEMore=Bu özellik, faturalarınıza otomatik SEPA kredi tr INVOICE_ADD_EPC_QR_CODEPay=EPC QR koduyla ödemeyi destekleyen bir akıllı telefonla ödeme yapmak için bu QR kodunu tarayın. INVOICE_SHOW_SHIPPING_ADDRESS=Teslimat adresini göster INVOICE_SHOW_SHIPPING_ADDRESSMore=Bazı ülkelerde zorunlu gösterge (Fransa, ...) -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Show billing contact on proposal -SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=By default the contact only appears for billing +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACT=Teklifte fatura ilgilisini göster +SUPPLIER_PROPOSAL_ADD_BILLING_CONTACTMore=Varsayılan olarak ilgili kişi yalnızca faturalandırma için görünür UrlSocialNetworksDesc=Sosyal ağın URL bağlantısı. Sosyal ağ kimliğini içeren değişken kısmı için {socialid} kullanın. IfThisCategoryIsChildOfAnother=Bu kategori başka bir kategorinin çocuğu ise DarkThemeMode=Koyu tema modu @@ -2530,18 +2529,18 @@ MainAuthenticationOidcAuthorizeUrlName=Authorize URL MainAuthenticationOidcAuthorizeUrlDesc=(example: https://example.com/oauth2/authorize) MainAuthenticationOidcTokenUrlName=Token URL MainAuthenticationOidcTokenUrlDesc=(example: https://example.com/oauth2/token) -MainAuthenticationOidcUserinfoUrlName=User info URL -MainAuthenticationOidcUserinfoUrlDesc=(example: https://example.com/oauth2/userinfo) -MainAuthenticationOidcLogoutUrlName=Logout URL -MainAuthenticationOidcLogoutUrlDesc=(example: https://example.com/oauth2/logout) +MainAuthenticationOidcUserinfoUrlName=Kullanıcı bilgisi URL'si +MainAuthenticationOidcUserinfoUrlDesc=(örneğin: https://orneksite.com/oauth2/userinfo) +MainAuthenticationOidcLogoutUrlName=Oturum kapatma URL'si +MainAuthenticationOidcLogoutUrlDesc=(örneğin: https://orneksite.com/oauth2/logout) MainAuthenticationOidcRedirectUrlName=yönlendirme bağlantısı MainAuthenticationOidcRedirectUrlDesc=Redirect URL to authorize on the OpenID provider side -MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr logout URL +MainAuthenticationOidcLogoutRedirectUrlName=Dolibarr oturum kapatma URL'si MainAuthenticationOidcLogoutRedirectUrlDesc=Dolibarr logout URL to authorize on the OpenID provider side MainAuthenticationOidcLoginClaimName=Login claim MainAuthenticationOidcLoginClaimDesc=OpenID Connect claim matching the Dolibarr user login. If not set or empty, defaults to email -BlackListWords=Black list of words -AddBlackList=Add to black list +BlackListWords=Kelime kara listesi +AddBlackList=Kara listeye ekle FediverseSetup=Configuration of fediverse section ConfigImportSocialNetwork=Configuration of social networks compatible with Fediverse Fediverse=Fediverse @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index 569d48ea70f..4c9f70e2e9f 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Список значень складається з ExtrafieldParamHelpcheckbox=Список значень повинен складатися з рядків з форматом ключ,значення (де ключ не може бути "0")

, наприклад:
1,значення1
2,значення2
3,значення3
... ExtrafieldParamHelpradio=Список значень повинен складатися з рядків з форматом ключ,значення (де ключ не може бути "0")

, наприклад:
1,значення1
2,значення2
3,значення3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Параметри мають бути ObjectName:Classpath
Синтаксис: ObjectName:Classpath ExtrafieldParamHelpSeparator=Залиште пустим для простого роздільника
Встановіть значення 1 для роздільника, що згортається (відкривається за замовчуванням для нового сеансу, потім статус зберігається для кожного сеансу користувача)
Встановіть значення 2 для роздільника, що згортається (згорнутий за замовчуванням для нового сеансу, потім статус зберігається для кожного сеансу користувача) LibraryToBuildPDF=Бібліотека, яка використовується для генерації PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Фільтр регулярних виразів DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Очистіть певні слова під час створення субрахунків для клієнтів або постачальників RemoveSpecialWordsHelp=Укажіть слова, які потрібно очистити перед розрахунком рахунку клієнта або постачальника. Використовуйте ";" між кожним словом -GDPRContact=Офіцер із захисту даних (DPO, конфіденційність даних або GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Якщо ви зберігаєте персональні дані у своїй інформаційній системі, тут ви можете назвати контактну особу, відповідальну за Загальний регламент захисту даних HelpOnTooltip=Текст довідки для відображення у підказці HelpOnTooltipDesc=Введіть тут текст або ключ перекладу, щоб текст відображався у підказці, коли це поле з’явиться у формі @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Ім'я контрагент - псевдонім контра ALIAS_THIRDPARTY=контрагент псевдонім - контрагент ім'я PDFIn2Languages=Показувати мітки у PDF-файлі двома різними мовами (ця функція може не працювати для кількох мов) PDF_USE_ALSO_LANGUAGE_CODE=Якщо ви хочете, щоб деякі тексти у вашому PDF-файлі були продубльовані двома різними мовами в одному згенерованому PDF-файлі, ви повинні встановити тут цю другу мову, щоб згенерований PDF-файл містив 2 різні мови на одній сторінці, одну, вибрану під час створення PDF-файлу, і цю ( лише кілька шаблонів PDF підтримують це). Залиште порожнім для 1 мови для PDF. -PDF_USE_A=Створюйте документи PDF у форматі PDF/A замість стандартного формату PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Введіть тут код значка FontAwesome. Якщо ви не знаєте, що таке FontAwesome, ви можете використовувати загальне значення fa-address-book. RssNote=Примітка. Кожне визначення RSS-каналу містить віджет, який потрібно ввімкнути, щоб він був доступним на інформаційній панелі JumpToBoxes=Перейдіть до Налаштування -> Віджети @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/ur_PK/admin.lang b/htdocs/langs/ur_PK/admin.lang index 2ea7d51edb4..d92b54bc44f 100644 --- a/htdocs/langs/ur_PK/admin.lang +++ b/htdocs/langs/ur_PK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=اقدار کی فہرست شکل کلید کے سات ExtrafieldParamHelpcheckbox=اقدار کی فہرست فارمیٹ کلید کے ساتھ لائنوں میں ہونی چاہیے، ویلیو (جہاں کلید '0' نہیں ہو سکتی)

مثال کے طور پر:
1,value1

a0342fda19bz0 2,342fdavalue... ExtrafieldParamHelpradio=اقدار کی فہرست فارمیٹ کلید کے ساتھ لائنوں میں ہونی چاہیے، ویلیو (جہاں کلید '0' نہیں ہو سکتی)

مثال کے طور پر:
1,value1

a0342fda19bz0 2,342fdavalue... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=پیرامیٹرز کا ہونا ضروری ہے ObjectName:Classpath
نحو: ObjectName:Classpath ExtrafieldParamHelpSeparator=ایک سادہ سیپریٹر کے لیے خالی رکھیں اسٹیٹس کو ہر صارف کے سیشن کے لیے رکھا جاتا ہے) LibraryToBuildPDF=لائبریری PDF جنریشن کے لیے استعمال ہوتی ہے۔ @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=کلین ویلیو کے لیے ریجیکس فل DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=گاہکوں یا سپلائرز کے لیے ذیلی اکاؤنٹس بناتے وقت کچھ الفاظ صاف کریں۔ RemoveSpecialWordsHelp=گاہک یا سپلائر کے اکاؤنٹ کا حساب لگانے سے پہلے صاف کیے جانے والے الفاظ کی وضاحت کریں۔ استعمال کریں "؛" ہر لفظ کے درمیان -GDPRContact=ڈیٹا پروٹیکشن آفیسر (ڈی پی او، ڈیٹا پرائیویسی یا جی ڈی پی آر رابطہ) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=اگر آپ اپنے انفارمیشن سسٹم میں ذاتی ڈیٹا اسٹور کرتے ہیں، تو آپ اس رابطہ کا نام دے سکتے ہیں جو یہاں جنرل ڈیٹا پروٹیکشن ریگولیشن کے لیے ذمہ دار ہے۔ HelpOnTooltip=ٹول ٹپ پر دکھانے کے لیے متن کی مدد کریں۔ HelpOnTooltipDesc=جب یہ فیلڈ فارم میں ظاہر ہوتا ہے تو ٹول ٹپ میں متن دکھانے کے لیے متن یا ترجمہ کی کلید یہاں رکھیں @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=تھرڈ پارٹی کا نام - تھرڈ پارٹی عرف ALIAS_THIRDPARTY=تھرڈ پارٹی عرف - تھرڈ پارٹی کا نام PDFIn2Languages=پی ڈی ایف میں لیبلز کو 2 مختلف زبانوں میں دکھائیں (ہو سکتا ہے یہ فیچر کچھ زبانوں کے لیے کام نہ کرے) PDF_USE_ALSO_LANGUAGE_CODE=اگر آپ چاہتے ہیں کہ آپ کی پی ڈی ایف میں کچھ متن ایک ہی جنریٹڈ پی ڈی ایف میں 2 مختلف زبانوں میں ڈپلیکیٹ ہوں، تو آپ کو یہاں یہ دوسری زبان سیٹ کرنی ہوگی تاکہ جنریٹ کی گئی پی ڈی ایف ایک ہی صفحہ میں 2 مختلف زبانوں پر مشتمل ہو، جو پی ڈی ایف بنانے کے وقت منتخب کی گئی ہو اور یہ ( صرف چند پی ڈی ایف ٹیمپلیٹس اس کی حمایت کرتے ہیں)۔ فی پی ڈی ایف 1 زبان کے لیے خالی رکھیں۔ -PDF_USE_A=ڈیفالٹ فارمیٹ PDF کے بجائے PDF/A فارمیٹ کے ساتھ PDF دستاویزات بنائیں +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=یہاں ایک FontAwesome آئیکن کا کوڈ درج کریں۔ اگر آپ نہیں جانتے کہ FontAwesome کیا ہے، تو آپ عام قدر fa-address-book استعمال کر سکتے ہیں۔ RssNote=نوٹ: ہر آر ایس ایس فیڈ کی تعریف ایک ویجیٹ فراہم کرتی ہے جسے ڈیش بورڈ میں دستیاب رکھنے کے لیے آپ کو اسے فعال کرنا ہوگا۔ JumpToBoxes=سیٹ اپ پر جائیں -> وجیٹس @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 1024cc2fb9b..6bc84fe6abe 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Qadriyatlar ro'yxati format bo'lishi kerak, bu erda ka ExtrafieldParamHelpcheckbox=Qadriyatlar ro'yxati format kaliti bo'lgan satrlardan iborat bo'lishi kerak, (agar bu erda '0' bo'lishi mumkin emas)

masalan:
1, value1
2, value2
3 ,03f03f ExtrafieldParamHelpradio=Qadriyatlar ro'yxati format kaliti bo'lgan satrlardan iborat bo'lishi kerak, (agar bu erda '0' bo'lishi mumkin emas)

masalan:
1, value1
2, value2
3 ,03f03f ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametrlar ObjectName: Classpath
sintaksis: ObjectName: Classpath bo'lishi kerak ExtrafieldParamHelpSeparator=
oddiy ajratuvchisi uchun bo'sh joyni saqlang holat har bir foydalanuvchi seansida saqlanadi) LibraryToBuildPDF=PDF yaratish uchun foydalaniladigan kutubxona @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filtri toza qiymatga (COMPANY_DIGITARIA_CLEA DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Mijozlar yoki etkazib beruvchilar uchun sub-hisoblarni yaratishda ma'lum so'zlarni tozalang RemoveSpecialWordsHelp=Xaridor yoki yetkazib beruvchi hisobini hisoblashdan oldin tozalanishi kerak bo'lgan so'zlarni belgilang. ";" dan foydalaning har bir so'z orasida -GDPRContact=Ma'lumotlarni himoya qilish bo'yicha mutaxassis (DPO, ma'lumotlarning maxfiyligi yoki GDPR aloqasi) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Agar siz shaxsiy ma'lumotlarni Axborot tizimingizda saqlasangiz, bu yerda Ma'lumotlarni himoya qilish bo'yicha Umumiy Nizomga mas'ul bo'lgan kontaktni nomlashingiz mumkin HelpOnTooltip=Matnni ko'rsatmalar panelida ko'rsatish uchun yordam bering HelpOnTooltipDesc=Matn yoki tarjima kalitini bu erga qo'ying, bu maydon formada paydo bo'lganda matn asboblar panelida ko'rsatilsin @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Uchinchi tomon nomi - Uchinchi tomon taxalluslari ALIAS_THIRDPARTY=Uchinchi tomon taxalluslari - uchinchi tomon nomi PDFIn2Languages=PDF-da yorliqlarni 2 xil tilda ko'rsatish (bu xususiyat ba'zi tillarda ishlamasligi mumkin) PDF_USE_ALSO_LANGUAGE_CODE=Agar siz o'zingizning PDF-dagi ba'zi matnlarni bir xil hosil qilingan PDF-da 2 xil tilda nusxalashni xohlasangiz, siz ushbu ikkinchi tilni o'rnatishingiz kerak, shuning uchun yaratilgan PDF bir xil sahifada 2 xil tilni o'z ichiga oladi, bu PDF yaratishda tanlangan va shu ( faqat bir nechta PDF shablonlari buni qo'llab-quvvatlaydi). PDF uchun 1 ta til uchun bo'sh qoldiring. -PDF_USE_A=Standart PDF formati o'rniga PDF/A formatida PDF hujjatlarini yarating +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Bu erga FontAwesome ikonkasining kodini kiriting. Agar siz FontAwesome nima ekanligini bilmasangiz, umumiy qiymatdan foydalanishingiz mumkin. RssNote=Izoh: Har bir RSS tasmali ta'rifi vidjetni taqdim etadi, uni boshqarish panelida bo'lishini ta'minlash kerak JumpToBoxes=O'rnatish -> Vidjetlarga o'tish @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index bd051e8a55d..f415bc5c5a1 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=Danh sách các giá trị phải là các dòng có k ExtrafieldParamHelpcheckbox=Danh sách các giá trị phải là các dòng có khóa định dạng, giá trị (trong đó khóa không thể là '0')

ví dụ:
1, giá trị1
2, giá trị2
3, giá trị3
... ExtrafieldParamHelpradio=Danh sách các giá trị phải là các dòng có khóa định dạng, giá trị (trong đó khóa không thể là '0')

ví dụ:
1, giá trị1
2, giá trị2
3, giá trị3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Các tham số phải là ObjectName:Classpath
Cú pháp: ObjectName:Classpath ExtrafieldParamHelpSeparator=Giữ trống cho một dấu phân cách đơn giản
Đặt giá trị này thành 1 cho dấu phân cách thu gọn (mặc định mở cho phiên mới, sau đó trạng thái được giữ cho mỗi phiên người dùng)
Đặt giá trị này thành 2 cho dấu phân cách thu gọn (mặc định được thu gọn cho phiên mới, sau đó trạng thái được giữ trước mỗi phiên người dùng) LibraryToBuildPDF=Thư viện được sử dụng để tạo PDF @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=Bộ lọc Regex để làm sạch giá trị (COM DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=Xóa một số từ nhất định khi tạo tài khoản phụ cho khách hàng hoặc nhà cung cấp RemoveSpecialWordsHelp=Chỉ định các từ cần làm sạch trước khi tính toán tài khoản khách hàng hoặc nhà cung cấp. Sử dụng một ";" giữa mỗi từ -GDPRContact=Cán bộ bảo vệ dữ liệu (DPO, Bảo mật dữ liệu hoặc liên lạc GDPR) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=Nếu bạn lưu trữ dữ liệu cá nhân trong Hệ thống thông tin của mình, bạn có thể nêu tên người liên hệ chịu trách nhiệm về Quy định chung về bảo vệ dữ liệu tại đây HelpOnTooltip=Trợ giúp văn bản để hiển thị trên tooltip HelpOnTooltipDesc=Đặt văn bản hoặc từ khóa dịch ở đây để văn bản hiển thị trong tooltip khi trường này xuất hiện trong một biểu mẫu @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=Tên bên thứ ba - Bí danh của bên thứ ba ALIAS_THIRDPARTY=Bí danh của bên thứ ba - Tên của bên thứ ba PDFIn2Languages=Hiển thị nhãn trong PDF bằng 2 ngôn ngữ khác nhau (tính năng này có thể không hoạt động đối với một số ngôn ngữ) PDF_USE_ALSO_LANGUAGE_CODE=Nếu bạn muốn có text trong PDF của mình bằng 2 ngôn ngữ khác nhau trong cùng một tệp PDF được tạo, bạn phải đặt ở đây ngôn ngữ thứ hai này để PDF được tạo sẽ chứa 2 ngôn ngữ khác nhau trong cùng một trang, một ngôn ngữ được chọn khi tạo PDF và ngôn ngữ này ( chỉ có vài mẫu PDF hỗ trợ này). Giữ trống cho 1 ngôn ngữ trên mỗi PDF. -PDF_USE_A=Tạo tài liệu PDF với định dạng PDF/A thay vì định dạng PDF mặc định +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=Nhập vào đây mã của biểu tượng FontAwgie. Nếu bạn không biết FontAwgie là gì, bạn có thể sử dụng fa-address-book RssNote=Lưu ý: Mỗi nguồn cấp RSS cung cấp một tiện ích mà bạn phải kích hoạt để có sẵn trong bảng điều khiển JumpToBoxes=Chuyển tới Thiết lập --> Widgets @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index f425527e6ad..0a3c444da92 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=值列表必须是格式为键/值对的行(其中 ExtrafieldParamHelpcheckbox=值列表必须是格式为 键/值 的对(其中 键不能为 '0')

例如:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=值列表必须是格式为 键/值 的对(其中 键不能为 '0')1 2 例如:3 1,value1 4 2,value2 5 3,value3 6 ... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=参数必须是 ObjectName:Classpath
语法:ObjectName:Classpath ExtrafieldParamHelpSeparator=为简单分隔符留空
将此设置为 1 用于折叠分隔符(默认为新会话打开,然后为每个用户会话保留状态)
将此设置为 2 用于折叠分隔符(默认为新会话折叠,然后在每个用户会话之前保持状态) LibraryToBuildPDF=用于 PDF 生成的库 @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=清理值的正则表达式(COMPANY_DIGITARIA_CL DuplicateForbidden=禁止重复 RemoveSpecialWords=为客户或供应商生成子帐户时清除某些字词 RemoveSpecialWordsHelp=在计算客户或供应商帐户之前指定要清理的单词。 在每个单词之间使用“;” -GDPRContact=数据保护官(DPO、数据隐私或 GDPR 联系人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您将个人数据存储在您的信息系统中,您可以在此处指定负责一般数据保护条例(GDPR)的联系人 HelpOnTooltip=显示在工具提示上的帮助文本 HelpOnTooltipDesc=当该字段出现在表单中时,将文本或翻译键放在此处以在工具提示中显示文本 @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=合作方名称 - 合作方別名 ALIAS_THIRDPARTY=合作方別名 - 合作方名称 PDFIn2Languages=以 2 种不同语言显示 PDF 中的标签(此功能可能不适用于某些语言) PDF_USE_ALSO_LANGUAGE_CODE=如果您想在同一个生成的 PDF 中以 2 种不同的语言复制 PDF 中的某些文本,则必须在此处设置第二种语言,以便生成的 PDF 将在同一页面中包含 2 种不同的语言:生成 PDF 时选择的一种和这个(只有少数 PDF 模板支持这一点)。留空为每个 PDF只有1种语言。 -PDF_USE_A=使用 PDF/A 格式而不是默认格式 PDF 生成 PDF 文档 +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此处输入 FontAwesome 图标的代码。如果你不知道什么是 FontAwesome,你可以使用通用值 fa-address-book。 RssNote=注意:每个 RSS 源定义都提供一个widget小组件,您必须启用该widget小组件才能在看板中使用它 JumpToBoxes=跳转到 设置 -> widget小组件 @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_HK/admin.lang b/htdocs/langs/zh_HK/admin.lang index 59fa0145239..a5a4a8c20f8 100644 --- a/htdocs/langs/zh_HK/admin.lang +++ b/htdocs/langs/zh_HK/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=值列表必須是格式為 key,value 的行(其中 ExtrafieldParamHelpcheckbox=值列表必須是格式為 key,value 的行(其中 key 不能為“0”)

例如:
1、值1
2、值2
3、值3
... ExtrafieldParamHelpradio=值列表必須是格式為 key,value 的行(其中 key 不能為“0”)

例如:
1、值1
2、值2
3、值3
... ExtrafieldParamHelpsellist=數值列表來自表格
語法:表名:標籤欄位:id_field::filtersql
範例:c_typent:libelle:id::filtersql

- id_field 必然是一個主 int 鍵
-filtersql 是一個條件。它必須使用 USF 語法。範例:(active:=:1) 僅顯示活動值
您也可以在過濾器中使用$ID$,它是當前物件的當前ID
如果您想過濾額外字段,請使用語法 extra.fieldcode=... (其中 fieldcode 是額外字段的代碼)

為了讓清單依賴另一個補充屬性清單:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

為了讓清單依賴另一個清單:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=值清單來自表
語法:table_name:label_field:id_field::filtersql
範例:c_typent:libelle:id::filtersql

filter 可以是一個簡單的測試(例如 active=1僅顯示活動值)
您也可以在過濾器中使用$ID$,它是當前物件的當前id
要在過濾器中執行選擇,請使用$SEL$
如果您想要過濾額外字段,請使用語法extra.fieldcode=... (其中字段代碼是額外字段的代碼)

為了讓列表依賴於另一個補充屬性列表:
c_typent:libelle:id:options_ parent_list_code|parent_column:filter

為了讓清單依賴另一個清單:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=參數必須是 ObjectName:Classpath
語法:ObjectName:Classpath ExtrafieldParamHelpSeparator=留空作為簡單的分隔符
將其設為 1 以取得折疊分隔符號(預設為新使用時段打開,然後為每個使用者使用時段保留狀態)
將其設為 2 作為折疊分隔符號(新會話預設折疊,然後在每個使用者使用時段之前保留狀態) LibraryToBuildPDF=用於 PDF 生成的庫 @@ -514,15 +513,15 @@ ModuleCompanyCodeCustomerDigitaria=%s 後面接著截斷的客戶名稱和字元 ModuleCompanyCodeSupplierDigitaria=%s 後面接著截斷的供應商名稱和字元數:%s 表示供應商會計代碼。 Use3StepsApproval=預設情況下,採購訂單需要由 2 個不同的用戶建立和批准(建立一個步驟/用戶,批准一個步驟/用戶。請注意,如果用戶同時擁有建立和批准權限,則一個步驟/用戶就足夠了) 。如果金額高於專用值,您可以要求使用此選項引入第三步驟/使用者批准(因此需要 3 個步驟:1=驗證,2=第一次批准,3=如果金額足夠則第二次批准)。
如果一次批准(2 個步驟)就足夠,則將其設為空;如果始終需要第二次批准(3 個步驟),則將其設為非常低的值(0.1)。 UseDoubleApproval=當金額(不含稅)高於...時,使用3步驟審批 -WarningPHPMail=NOTICE: The setup to send emails from the application is using the default generic setup (called "%s"). This choice needs no technical knowledge and no particular setup.
However, it is often better to setup outgoing emails to use the other method (called "%s") to use the email server of your Email Service Provider, instead of the default setup for several reasons: +WarningPHPMail=注意:從應用程式發送電子郵件的設定使用預設的通用設定(稱為“%s”)。這種選擇不需要技術知識,也不需要特殊的設定。
但是,基於以下幾個原因,通常最好將外發電子郵件設定為使用其他方法(稱為「%s」)來使用電子郵件服務提供者的電子郵件伺服器,而不是預設值: WarningPHPMailA=- 使用電郵服務提供商的伺服器提高您的電郵可信度,因此提高發送成功率而不被標記為垃圾郵件 -WarningPHPMailB=- If the domain of your email (the part mymaildomain.com into myname@mymaildomain.com) is protected by a SPF + a DMARC record, your email may be flagged as SPAM because your DMARC rule defined into DNS zone of the domain of the sender (mymaildomain.com) does not allow the sending as a generic sender. In such a case, you must disable the DMARC for the domain (or set it to p=none like done by @gmail.com) or, better, if you have the technical knowledge, use the other method to send emails using the SMTP server of your own email provider. +WarningPHPMailB=- 如果您的電子郵件網域(mymaildomain.com 到 myname@mymaildomain.com 部分)受 SPF + DMARC 記錄保護,您的電子郵件可能會被標記為垃圾郵件,因為您在寄件者網域 (mymaildomain.com) 的 DNS 區域中定義的 DMARC 規則不允許作為一般寄件者傳送。在這種情況下,您必須停用網域的DMARC(或將其設定為p=none,如@gmail.com 所做的那樣),或者更好的是,如果您有技術知識,請使用其他方法通過SMTP 發送電子郵件您自己的電子郵件提供者的伺服器。 WarningPHPMailC=- 使用您自己的電子郵件服務提供者的 SMTP 伺服器發送電子郵件也很有趣,因此從應用程式發送的所有電子郵件也將保存到您郵箱的「已發送」目錄中。 WarningPHPMailD=因此,建議將電子郵件的傳送方式變更為值「SMTP」。 WarningPHPMailDbis=如果您確實想保留預設的「PHP」方法來傳送電子郵件,只需忽略此警告,或透過%s按一下此處%s將其刪除。 WarningPHPMail2=如果您的電子郵件SMTP 提供者需要將電子郵件用戶端限制為某些IP 位址(非常罕見),則這是ERP CRM 應用程式的郵件使用者代理(MUA) 的IP 位址:%s 。 -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs or entry in the SPF record of the DNS of your domain: %s. -WarningPHPMailSPFDMARC=If the domain name in your sender email address is protected by a DMARC record different than p=none (ask your domain name registar), you must remove your DMARC record, or set it to p=none like do @gmail.com) or use sending another method. +WarningPHPMailSPF=如果您的寄件者電子郵件地址中的網域名稱受SPF 記錄保護(請詢問您的網域註冊商),您必須在您的網域的DNS 的SPF 記錄中新增下列IP 或條目:%s。 +WarningPHPMailSPFDMARC=如果寄件者電子郵件地址中的網域名稱受與p=none 不同的DMARC 記錄保護(詢問您的網域註冊商),則必須刪除您的DMARC 記錄,或將其設為p=none,如@gmail. com)或使用發送另一種方法。 SPFAndDMARCInformation=主要電子郵件地址的 SPF 和 DMARC DNS 記錄 ActualMailDNSRecordFound=找到實際的 %s 記錄(針對電子郵件 %s):%s ClickToShowDescription=點擊顯示描述 @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=用於清理值的正則表達式過濾器(COMPA DuplicateForbidden=禁止重複 RemoveSpecialWords=在為客戶或供應商生成子賬戶時清除某些字詞 RemoveSpecialWordsHelp=指定在計算客戶或供應商賬戶之前要清除的字詞。每個字詞之間使用“;”。 -GDPRContact=數據保護官(DPO,數據隱私或GDPR聯絡人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您將個人資料儲存在資訊系統中,您可以在此指定負責一般資料保護規範的聯絡人 HelpOnTooltip=工具提示顯示的說明文字 HelpOnTooltipDesc=在此處放入文字或翻譯鍵,以便在此字段出現在表單中時在工具提示中顯示文字。 @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=第三方名稱 - 第三方別名 ALIAS_THIRDPARTY=第三方別名 - 第三方名稱 PDFIn2Languages=以 2 種不同語言顯示 PDF 中的標籤(此功能可能不適用於某些語言) PDF_USE_ALSO_LANGUAGE_CODE=如果您希望在同一個生成的PDF 中以2 種不同的語言複製PDF 中的某些文本,則必須在此處設定第二種語言,以便生成的PDF 將在同一頁面中包含2 種不同的語言,即生成PDF 時選擇的語言和該語言 (只有少數 PDF 模板支援此功能)。對於每個 PDF 的 1 種語言,請保留為空白。 -PDF_USE_A=產生 PDF/A 格式的 PDF 文檔,而不是預設格式 PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此輸入 FontAwesome 圖標的代碼。如果您不知道 FontAwesome 是什麼,可以使用通用值 fa-address-book。 RssNote=注意:每個 RSS 來源定義都提供一個小部件,您必須啟用該小部件才能在儀表板中使用它 JumpToBoxes=跳至設置 -> 小工具 @@ -2555,3 +2554,8 @@ MenuDict=字典 AddMoreParams=為連線新增更多參數(cookie、令牌等)
範例: token : value token ParamName=參數名稱 ParamValue=參數值 +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=您可以透過執行下列 SQL 命令來取得可能值的清單:%s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index 767d157620b..f961abbe67b 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -475,7 +475,6 @@ ExtrafieldParamHelpselect=數值清單必須為含有關鍵字的行,數值 (關 ExtrafieldParamHelpcheckbox=數值清單必須為含有關鍵字的行,數值 (關鍵字不能為 '0')

範例:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpradio=數值清單必須為含有關鍵字的行,數值 (關鍵字不能為 '0')

範例:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1 to display only active value)
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=參數必須為ObjectName:Classpath
語法 ObjectName:Classpath ExtrafieldParamHelpSeparator=保持空白以使用簡單的分隔符號
對於折疊分隔符號,將此值設定為1(預設情況下,對於新程序打開,然後為每個用戶程序保留狀態)
將其設定為2可折疊分隔符號(預設情況下,新程序已折疊,然後在每個用戶程序中保持狀態) LibraryToBuildPDF=PDF產生器程式庫 @@ -2147,7 +2146,7 @@ COMPANY_DIGITARIA_CLEAN_REGEX=用正則表達式篩選器清除值(COMPANY_DIG DuplicateForbidden=Duplicate forbidden RemoveSpecialWords=為客戶或供應商產生子帳戶時清除特定文字 RemoveSpecialWordsHelp=在計算客戶或供應商帳戶之前指定要清除的文字。在每個字之間使用”;” -GDPRContact=資料保護官(DPO,資料隱私或GDPR聯絡人) +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact, ...) GDPRContactDesc=如果您儲存個人資料於您的資訊系統,則可以在此處指定負責《通用數據保護條例》的聯絡人 HelpOnTooltip=工具提示上的幫助文字 HelpOnTooltipDesc=在這裡放入文字或是翻譯鍵以便此欄位顯示在表單時可以顯示在工具提示 @@ -2290,7 +2289,7 @@ THIRDPARTY_ALIAS=合作方名稱 - 合作方別名 ALIAS_THIRDPARTY=合作方別名 - 合作方名稱 PDFIn2Languages=於PDF的標籤顯示兩種不同的語言(這個功能可能對某些語言無法正常運作) PDF_USE_ALSO_LANGUAGE_CODE=如果您要在生成同一的PDF中以兩種不同的語言複製一些文字,則必須在此處設置第二種語言讓生成的PDF在同一頁中包含兩種不同的語言,選擇的可以用來生成PDF跟另一種語言(只有少數PDF模板支援此功能)。PDF只有一種語言則留空。 -PDF_USE_A=產生使用PDF/A格式的PDF文件而不是預設格式的PDF +PDF_USE_A=PDF documents format FafaIconSocialNetworksDesc=在此處輸入FontAwesome圖示的代碼。如果您不知道什麼是FontAwesome,則可以使用通用值fa-address-book。 RssNote=注意:每個RSS訂閱的定義都提供一個小工具,您必須啟用該小工具才能使其在資訊板中看到 JumpToBoxes=跳至設定 -> 小工具 @@ -2555,3 +2554,8 @@ MenuDict=Dictionary AddMoreParams=Add more parameters for connection (cookies, tokens, ...)
Example: token : value token ParamName=Name of parameter ParamValue=Value of parameter +ConfirmDeleteParamOfSocialNetwork=Are you sure you want to delete this parameter ? +HelpMariaDBToGetPossibleValues=You can get a list of possible values by running the following SQL command: %s +Captcha=Captcha +CaptchaDesc=If you want to protect your login page with a Captcha, you can choose which one to use here +DolibarrStandardCaptcha=A native captcha generated by Dolibarr From 2832a914d0779769d44dbde2b8abdc392c5c0e49 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 11:00:21 +0200 Subject: [PATCH 25/75] Typo --- htdocs/langs/lv_LV/admin.lang | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index b0a6770577e..40ce9e26025 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -371,8 +371,8 @@ GenericMaskCodes3EAN=Visas pārējās maskas rakstzīmes paliks neskartas (izņe GenericMaskCodes4a=Piemērs par trešās puses TheCompany 99. piemēru %s ar datumu 2023. 01.31.:
GenericMaskCodes4b=Example on third party created on 2023-01-31:
GenericMaskCodes4c=Piemērs par produktu, kas izveidots 2023.01.31.:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} sniegs b0aee833650ABC2301-000099 }-ZZZ/{dd}/XXX sniegs 0199-ZZZ/31/XXX -GenericMaskCodes5b=IN{yy}{mm}-8dza358d453 -{t} sniegs IN230-1- A, ja uzņēmuma veids ir “Atbildīgs Inscripto” ar tipa kodu “A_RI” +GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC2301-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX +GenericMaskCodes5b=IN{yy}{mm}-{0000}-{t} will give IN2301-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' GenericNumRefModelDesc=Atgriež pielāgojamu numuru atbilstoši noteiktajai maskai. DateStartThatModel=Atspējot šīs numerācijas kārtulas izmantošanu visām iepriekš izveidotajām trešajām pusēm DateStartThatModelHelp=Varat atspējot ziloņu numerācijas kārtulu trešajām pusēm, kas izveidotas pirms datuma (piemēram, tāpēc, ka tās tika importētas migrācijas rezultātā, no citas programmatūras, izmantojot citu kārtulu). Ļaujiet šim laukam iztukšot, lai kārtula tiktu piemērota visām trešajām pusēm. @@ -474,7 +474,7 @@ ExtrafieldParamHelpPassword=Ja atstājat šo lauku tukšu, šī vērtība tiks s ExtrafieldParamHelpselect=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
kods3, vērtība3 < br> ...

Lai saraksts būtu atkarīgs no cita papildinošā atribūtu saraksta:
1, vērtība1 | opcijas_ vecāku_līmeņa kods : vecāku_skava
2, vērtība2 | opcijas_ vecāku saraksts_code : parent_key

Lai saraksts būtu atkarīgs no cita saraksta:
1, vērtība1 | vecāku saraksts_code : vecāku_skava
2, vērtība2 | vecāku saraksts_code : vecāku_poga ExtrafieldParamHelpcheckbox=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... ExtrafieldParamHelpradio=Vērtību sarakstam jābūt rindām ar formāta atslēgu, vērtība (kur atslēga nevar būt '0')

, piemēram,: 1, vērtība1
2, vērtība2
3, vērtība3 < br> ... -ExtrafieldParamHelpsellist=Vērtību saraksts nāk no tabulas
Sintakse: table_name:label_field:id_field::filtersql
Piemērs: c_idtypent:libelle ::filtersql

 — lauks id_field noteikti ir primārā int atslēgab0342fccfda
Varat arī izmantot $ID$ filtrā, kas ir pašreizējā objekta pašreizējais ID.
Ja vēlaties filtrēt papildu laukus, izmantojiet sintaksi extra.fieldcode=... (kur lauka kods ir ekstralauka kods)

Lai saraksts būtu atkarīgs no cita papildu atribūtu saraksta:
c_typent:libelle:id:options_b049271fcze0818 parent_list_code|parent_column:filter
b0342fccfda19bz secībā lai saraksts būtu atkarīgs no cita saraksta:
c_typent:libelle:id:parent_list_code |parent_column:filter +ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarily a primary int key
- filtersql is a condition. It must use the USF syntax. Example: (active:=:1) to display only active value
You can also use $ID$ in filter which is the current id of current object
If you want to filter on extrafields use syntax extra.fieldcode=... (where fieldcode is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parametriem jābūt ObjectName: Classpath
Sintakse: ObjectName: Classpath ExtrafieldParamHelpSeparator=Vienkārša atdalītāja atstāšana tukša
Iestatiet to uz 1 sabrūkošajam atdalītājam (pēc noklusējuma atveriet jaunu sesiju, pēc tam katras lietotāja sesijai tiek saglabāts statuss)
Iestatiet to uz 2 sabrukušajam atdalītājam (jaunajai sesijai pēc noklusējuma sabrūk, pēc tam katras lietotāja sesijas laikā tiek saglabāts statuss) LibraryToBuildPDF=Bibliotēka, ko izmanto PDF veidošanai From 5ac18e37117b021c47636e339dbc23a138d8eec9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 13:27:27 +0200 Subject: [PATCH 26/75] FIX Browser Notification ko with firefox --- htdocs/core/js/lib_notification.js.php | 128 ++++++++++++++++--------- 1 file changed, 84 insertions(+), 44 deletions(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 7be8330321f..0eae59bfcb3 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -89,7 +89,7 @@ if ("Notification" in window) { // We set a delay before launching first test so next check will arrive after the time_auto_update compared to previous one. //var time_first_execution = (time_auto_update + (time_js_next_test - nowtime)) * 1000; //need milliseconds - var time_first_execution = global->MAIN_BROWSER_NOTIFICATION_CHECK_FIRST_EXECUTION); ?>; + var time_first_execution = ; setTimeout(first_execution, time_first_execution * 1000); // Launch a first execution after a time_first_execution delay time_js_next_test = nowtime + time_first_execution; @@ -112,8 +112,17 @@ function first_execution() { function check_events() { var result = 0; dolnotif_nb_test_for_page += 1; + var methodfornotification = ''; - if (Notification.permission === "granted") { + permissionok = 0; + if (methodfornotification == "jsnotification" && Notification.permission == "granted") { + permissionok = 1; + } + if (methodfornotification == "jnotify") { + permissionok = 1; + } + + if (permissionok == 1) { var currentToken = 'notrequired'; const allMeta = document.getElementsByTagName("meta"); for (let i = 0; i < allMeta.length; i++) { @@ -138,10 +147,11 @@ function check_events() { console.log("Retrieved "+arrayofpastreminders.length+" reminders to do."); var audio = null; + var icon = ''; var listofreminderids = ''; var noti = [] @@ -149,61 +159,91 @@ function check_events() { console.log(value); var url = "notdefined"; var title = "Not defined"; - var body = value.label; - var icon = ''; - var image = ''; - if (value.type == 'agenda' && value.location != null && value.location != '') { - body += '\n' + value.location; - } - - if (value.type == 'agenda' && (value.event_date_start_formated != null || value.event_date_start_formated['event_date_start'] != '')) { - body += '\n' + value.event_date_start_formated; - } + var body = ""; if (value.type == 'agenda') { url = '' + value.id_agenda; title = 'transnoentities('EventReminder')) ?>'; } - var extra = { - icon: icon, - body: body, - lang: 'getDefaultLang(1)); ?>', - tag: value.id_agenda, - requireInteraction: true /* wait that the user click or close the notification */ - /* only supported for persistent notification shown using ServiceWorkerRegistration.showNotification() so disabled */ - /* actions: [{ action: 'action1', title: 'New Button Label' }, { action: 'action2', title: 'Another Button' }] */ - }; - // We release the notify - console.log("Send notification on browser url="+url); - noti[index] = new Notification(title, extra); - if (index==0 && audio) - { - audio.play(); + if (methodfornotification == "jsnotification") { + body = value.label; + if (value.type == 'agenda' && value.location != null && value.location != '') { + body += '\n' + value.location; + } + + if (value.type == 'agenda' && (value.event_date_start_formated != null || value.event_date_start_formated['event_date_start'] != '')) { + body += '\n' + value.event_date_start_formated; + } + } else { + if (title != "Not defined") { + body = title+'

'; + } + body += ''; + if (value.type == 'agenda' && (value.event_date_start_formated != null || value.event_date_start_formated['event_date_start'] != '')) { + body += ' '+value.event_date_start_formated; + } + body += ' - trans("ShowDetails")); ?>'; + body += '
'+value.label; + if (value.type == 'agenda' && value.location != null && value.location != '') { + body += '
' + value.location; + } } - if (noti[index]) { - noti[index].onclick = function (event) { - /* If the user has clicked on button Activate */ - console.log("A click on notification on browser has been done for url="+url); - event.preventDefault(); // prevent the browser from focusing the Notification's tab - window.focus(); - window.open(url, '_blank'); - noti[index].close(); + // We release the notify + console.log("Send notification on browser url="+url+" using method="+methodfornotification); + + // Using the js browser Notification() popup + if (methodfornotification == 'jsnotification') { + var extra = { + icon: icon, + body: body, + lang: 'getDefaultLang(1)); ?>', + tag: value.id_agenda, + requireInteraction: true /* wait that the user click or close the notification */ + /* "actions:" parameter is only supported for persistent notification shown using ServiceWorkerRegistration.showNotification() so disabled */ + /* actions: [{ action: 'action1', title: 'New Button Label' }, { action: 'action2', title: 'Another Button' }] */ }; + noti[index] = new Notification(title, extra); + if (index==0 && audio) + { + audio.play(); + } + + if (noti[index]) { + noti[index].onclick = function (event) { + /* If the user has clicked on button Activate */ + console.log("A click on notification on browser has been done for url="+url); + event.preventDefault(); // prevent the browser from focusing the Notification's tab + window.focus(); + window.open(url, '_blank'); + noti[index].close(); + }; + + listofreminderids = (listofreminderids == '' ? '' : listofreminderids + ',') + value.id_reminder + } + } + + // Using jNotify popup + if (methodfornotification == 'jnotify') { + // Output a message with level "warning" + $.jnotify(body, 'warning', true, { remove: function (){} } ); + listofreminderids = (listofreminderids == '' ? '' : listofreminderids + ',') + value.id_reminder } }); // Update status of all notifications we sent on browser (listofreminderids) - console.log("Flag notification as done for listofreminderids="+listofreminderids); - $.ajax(""+listofreminderids, { - type: "POST", // Usually post or get - async: true, - data: { time_js_next_test: time_js_next_test, token: currentToken } - }); + if (listofreminderids != '') { + console.log("Flag notification as done for listofreminderids="+listofreminderids); + $.ajax(""+listofreminderids, { + type: "POST", + async: true, + data: { time_js_next_test: time_js_next_test, token: currentToken } + }); + } } else { console.log("No remind to do found, next search at "+time_js_next_test); } @@ -212,9 +252,9 @@ function check_events() { result = 1; } else { - console.log("Cancel check_events() with dolnotif_nb_test_for_page="+dolnotif_nb_test_for_page+". Check is useless because javascript Notification.permission is "+Notification.permission+" (blocked manually or web site is not https or browser is in Private mode)."); + console.log("Cancel check_events() with dolnotif_nb_test_for_page="+dolnotif_nb_test_for_page+". Check is useless because permission is off. Javascript Notification.permission is "+Notification.permission+" (blocked manually or web site is not https or browser is in Private mode)."); - result = 2; // We return a positive so the repeated check will done even if authorization is not yet allowed may be after this check) + result = 2; // We return a positive so the repeated check will be done even if authorization is not yet allowed may be after this check) } if (dolnotif_nb_test_for_page >= 5) { From de99be3a109ed5345f52bb2e96ecc7fe1b3ed4c0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 13:29:43 +0200 Subject: [PATCH 27/75] Fix setup compatibility --- htdocs/core/js/lib_notification.js.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/js/lib_notification.js.php b/htdocs/core/js/lib_notification.js.php index 0eae59bfcb3..d2d2d3ca2b6 100644 --- a/htdocs/core/js/lib_notification.js.php +++ b/htdocs/core/js/lib_notification.js.php @@ -112,7 +112,7 @@ function first_execution() { function check_events() { var result = 0; dolnotif_nb_test_for_page += 1; - var methodfornotification = ''; + var methodfornotification = ''; permissionok = 0; if (methodfornotification == "jsnotification" && Notification.permission == "granted") { From 075d0dee3cdc7023f85be54b2215fc5382137a4f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 14:27:45 +0200 Subject: [PATCH 28/75] FIX Selection of country - state in resource --- htdocs/admin/accountant.php | 1 + htdocs/admin/company.php | 1 + htdocs/product/card.php | 1 + htdocs/resource/card.php | 112 ++++++++++-------- htdocs/resource/class/dolresource.class.php | 9 +- .../class/html.formresource.class.php | 10 +- htdocs/societe/card.php | 4 +- 7 files changed, 80 insertions(+), 58 deletions(-) diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index 0498ae77302..305a58254eb 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -105,6 +105,7 @@ if (!empty($conf->use_javascript_ajax)) { print "\n".''."\n"; + } + + // Create/Edit object - print '
'; + print ''; print ''; print ''; @@ -249,56 +262,10 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { print ''.$langs->trans("ResourceFormLabel_ref").''; print ''; - // Address - print ''.$form->editfieldkey('Address', 'address', '', $object, 0).''; - print ''; - print $form->widgetForTranslation("address", $object, $permissiontoadd, 'textarea', 'alphanohtml', 'quatrevingtpercent'); - print ''; - - // Zip - print ''.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; - print $formresource->select_ziptown($object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth100'); - print ''; - print ''; - - // Town - print ''; - print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; - print $formresource->select_ziptown($object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); - print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); - print ''; - - // Origin country - print ''.$langs->trans("CountryOrigin").''; - print $form->select_country($object->country_id); - if ($user->admin) { - print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); - } - print ''; - - // State - if (!getDolGlobalString('SOCIETE_DISABLE_STATE')) { - if ((getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 1 || getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 2)) { - print ''.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; - } else { - print ''.$form->editfieldkey('State', 'state_id', '', $object, 0).''; - } - - if ($object->country_id) { - print img_picto('', 'state', 'class="pictofixedwidth"'); - print $formresource->select_state($object->state_id, $object->country_code); - } else { - print $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; - } - print ''; - } - // Type print ''.$langs->trans("ResourceType").''; print ''; - $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2); + $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2, 0, 0, 0, 1, 'minwidth200'); print ''; // Description @@ -309,6 +276,53 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { $doleditor->Create(); print ''; + // Address + print ''.$form->editfieldkey('Address', 'address', '', $object, 0).''; + print ''; + print $form->widgetForTranslation("address", $object, $permissiontoadd, 'textarea', 'alphanohtml', 'quatrevingtpercent'); + print ''; + + // Zip + print ''.$form->editfieldkey('Zip', 'zipcode', '', $object, 0).''; + print $formresource->select_ziptown(GETPOSTISSET('zipcode') ? GETPOST('zipcode') : $object->zip, 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 0, '', 'maxwidth100'); + print ''; + print ''; + + // Town + print ''; + print ''.$form->editfieldkey('Town', 'town', '', $object, 0).''; + print $formresource->select_ziptown(GETPOSTISSET('town') ? GETPOST('town') : $object->town, 'town', array('zipcode', 'selectcountry_id', 'state_id')); + print $form->widgetForTranslation("town", $object, $permissiontoadd, 'string', 'alphanohtml', 'maxwidth100 quatrevingtpercent'); + print ''; + + // Origin country + print ''.$langs->trans("CountryOrigin").''; + print $form->select_country(GETPOSTISSET('country_id') ? GETPOSTINT('country_id') : $object->country_id, 'country_id'); + if ($user->admin) { + print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); + } + print ''; + + // State + $countryid = GETPOSTISSET('country_id') ? GETPOSTINT('country_id') : $object->country_id; + if (!getDolGlobalString('SOCIETE_DISABLE_STATE') && $countryid > 0) { + if ((getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 1 || getDolGlobalInt('MAIN_SHOW_REGION_IN_STATE_SELECT') == 2)) { + print ''.$form->editfieldkey('Region-State', 'state_id', '', $object, 0).''; + } else { + print ''.$form->editfieldkey('State', 'state_id', '', $object, 0).''; + } + + if ($country_id > 0) { + print img_picto('', 'state', 'class="pictofixedwidth"'); + print $formresource->select_state($countryid, $country_id); + } else { + print ''.$langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; + } + print ''; + } + // Phone print ''.$form->editfieldkey('Phone', 'phone', '', $object, 0).''; print ''; @@ -327,7 +341,7 @@ if ($action == 'create' || $object->fetch($id, $ref) > 0) { print ''.$form->editfieldkey('MaxUsers', 'max_users', '', $object, 0).''; print ''; print img_picto('', 'object_user', 'class="pictofixedwidth"'); - print ''; + print ''; print ''; // URL diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index cb106b7afeb..14578eecf8f 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -51,17 +51,17 @@ class Dolresource extends CommonObject public $picto = 'resource'; /** - * @var string description + * @var string Description */ public $description; /** - * @var string telephone number + * @var string Phone number */ public $phone; /** - * @var int Maximum users + * @var int|null Maximum users */ public $max_users; @@ -375,9 +375,6 @@ class Dolresource extends CommonObject if (isset($this->email)) { $this->email = trim($this->email); } - if (!is_numeric($this->max_users)) { - $this->max_users = 0; - } if (isset($this->url)) { $this->url = trim($this->url); } diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 5471287c9f7..5edb677e850 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -174,9 +174,11 @@ class FormResource * @param int $empty 1=peut etre vide, 0 sinon * @param int $noadmininfo 0=Add admin info, 1=Disable admin info * @param int $maxlength Max length of label + * @param int $usejscombo 1=Use jscombo, 0=No js combo + * @param string $morecss Add more css * @return void */ - public function select_types_resource($selected = '', $htmlname = 'type_resource', $filtertype = '', $format = 0, $empty = 0, $noadmininfo = 0, $maxlength = 0) + public function select_types_resource($selected = '', $htmlname = 'type_resource', $filtertype = '', $format = 0, $empty = 0, $noadmininfo = 0, $maxlength = 0, $usejscombo = 0, $morecss = 'minwidth100') { // phpcs:enable global $langs, $user; @@ -192,7 +194,7 @@ class FormResource } $resourcestat->loadCacheCodeTypeResource(); - print ''; if ($empty) { print ''; } @@ -236,6 +238,10 @@ class FormResource } } print ''; + if ($usejscombo) { + print ajax_combobox("select".$htmlname); + } + if ($user->admin && !$noadmininfo) { print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); } diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 783258014f7..53842b8b2d8 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -1193,6 +1193,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio } $("#selectcountry_id").change(function() { + console.log("selectcountry_id change"); document.formsoc.action.value="create"; document.formsoc.submit(); }); @@ -1202,7 +1203,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio dol_htmloutput_mesg(is_numeric($error) ? '' : $error, $errors, 'error'); - print ''; // Chrome ignor autocomplete + print ''; // Chrome ignores autocomplete print ''; print ''; @@ -2036,6 +2037,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($canvasdisplayactio } $("#selectcountry_id").change(function() { + console.log("selectcountry_id change"); document.formsoc.action.value="edit"; document.formsoc.submit(); }); From 83cf2c8c57cef4c5dbd44566bd8447d639c108e1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 1 Oct 2024 21:53:45 +0200 Subject: [PATCH 29/75] FIX OAuth generation of token for Microsoft, Stripe and Generic --- htdocs/admin/oauth.php | 14 +- htdocs/admin/oauthlogintokens.php | 5 +- htdocs/core/lib/oauth.lib.php | 472 +++++++++--------- .../modules/oauth/generic_oauthcallback.php | 4 +- .../modules/oauth/github_oauthcallback.php | 2 +- .../modules/oauth/google_oauthcallback.php | 2 +- .../oauth/microsoft2_oauthcallback.php | 12 +- .../modules/oauth/microsoft_oauthcallback.php | 9 +- .../oauth/stripelive_oauthcallback.php | 6 +- .../oauth/stripetest_oauthcallback.php | 6 +- 10 files changed, 271 insertions(+), 261 deletions(-) diff --git a/htdocs/admin/oauth.php b/htdocs/admin/oauth.php index 51048ac85a7..5d0db624825 100644 --- a/htdocs/admin/oauth.php +++ b/htdocs/admin/oauth.php @@ -172,15 +172,15 @@ if ($action == 'confirm_delete') { $callbacktodel .= '/core/modules/oauth/google_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); } elseif ($label == 'OAUTH_GITHUB') { $callbacktodel .= '/core/modules/oauth/github_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); - } elseif ($label == 'OAUTH_STRIPE_LIVE') { + } elseif ($label == 'OAUTH_STRIPELIVE') { $callbacktodel .= '/core/modules/oauth/stripelive_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); - } elseif ($label == 'OAUTH_STRIPE_TEST') { + } elseif ($label == 'OAUTH_STRIPETEST') { $callbacktodel .= '/core/modules/oauth/stripetest_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); } elseif ($label == 'OAUTH_MICROSOFT') { $callbacktodel .= '/core/modules/oauth/microsoft_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); } elseif ($label == 'OAUTH_MICROSOFT2') { $callbacktodel .= '/core/modules/oauth/microsoft2_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); - } elseif ($label == 'OAUTH_OTHER') { + } elseif ($label == 'OAUTH_GENERIC') { $callbacktodel .= '/core/modules/oauth/generic_oauthcallback.php?action=delete&keyforprovider='.$provider.'&token='.newToken().'&backtourl='.urlencode($backtourl); } header("Location: ".$callbacktodel); @@ -238,9 +238,11 @@ print dol_get_fiche_head($head, 'services', '', -1, ''); print ''.$langs->trans("ListOfSupportedOauthProviders").'

'; +$list = getAllOauth2Array(); + + print ''; @@ -413,7 +415,7 @@ if (count($listinsetup) > 0) { // TODO Move this into token generation ? if ($supported) { - if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') { + if ($keyforsupportedoauth2array == 'OAUTH_GENERIC_NAME') { print ''; print ''.$langs->trans("Scopes").''; print ''; diff --git a/htdocs/admin/oauthlogintokens.php b/htdocs/admin/oauthlogintokens.php index fdd7f86e0b3..1d80659c176 100644 --- a/htdocs/admin/oauthlogintokens.php +++ b/htdocs/admin/oauthlogintokens.php @@ -179,8 +179,9 @@ if ($mode == 'setup' && $user->admin) { $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - - $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; $shortscope = ''; if (getDolGlobalString($key[4])) { diff --git a/htdocs/core/lib/oauth.lib.php b/htdocs/core/lib/oauth.lib.php index 0131a05d32c..31c9c9a45e9 100644 --- a/htdocs/core/lib/oauth.lib.php +++ b/htdocs/core/lib/oauth.lib.php @@ -33,238 +33,238 @@ function getAllOauth2Array() { $list = array( - array( - 'OAUTH_AMAZON_NAME', - 'OAUTH_AMAZON_ID', - 'OAUTH_AMAZON_SECRET', - ), - array( - 'OAUTH_BITBUCKET_NAME', - 'OAUTH_BITBUCKET_ID', - 'OAUTH_BITBUCKET_SECRET', - ), - array( - 'OAUTH_BITLY_NAME', - 'OAUTH_BITLY_ID', - 'OAUTH_BITLY_SECRET', - ), - array( - 'OAUTH_BITRIX24_NAME', - 'OAUTH_BITRIX24_ID', - 'OAUTH_BITRIX24_SECRET', - ), - array( - 'OAUTH_BOX_NAME', - 'OAUTH_BOX_ID', - 'OAUTH_BOX_SECRET', - ), - array( - 'OAUTH_BUFFER_NAME', - 'OAUTH_BUFFER_ID', - 'OAUTH_BUFFER_SECRET', - ), - array( - 'OAUTH_DAILYMOTION_NAME', - 'OAUTH_DAILYMOTION_ID', - 'OAUTH_DAILYMOTION_SECRET', - ), - array( - 'OAUTH_DEVIANTART_NAME', - 'OAUTH_DEVIANTART_ID', - 'OAUTH_DEVIANTART_SECRET', - ), - array( - 'OAUTH_DROPBOX_NAME', - 'OAUTH_DROPBOX_ID', - 'OAUTH_DROPBOX_SECRET', - ), - array( - 'OAUTH_ETSY_NAME', - 'OAUTH_ETSY_ID', - 'OAUTH_ETSY_SECRET', - ), - array( - 'OAUTH_EVEONLINE_NAME', - 'OAUTH_EVEONLINE_ID', - 'OAUTH_EVEONLINE_SECRET', - ), - array( - 'OAUTH_FACEBOOK_NAME', - 'OAUTH_FACEBOOK_ID', - 'OAUTH_FACEBOOK_SECRET', - ), - array( - 'OAUTH_FITBIT_NAME', - 'OAUTH_FITBIT_ID', - 'OAUTH_FITBIT_SECRET', - ), - array( - 'OAUTH_FIVEHUNDREDPX_NAME', - 'OAUTH_FIVEHUNDREDPX_ID', - 'OAUTH_FIVEHUNDREDPX_SECRET', - ), - array( - 'OAUTH_FLICKR_NAME', - 'OAUTH_FLICKR_ID', - 'OAUTH_FLICKR_SECRET', - ), - array( - 'OAUTH_FOURSQUARE_NAME', - 'OAUTH_FOURSQUARE_ID', - 'OAUTH_FOURSQUARE_SECRET', - ), - array( - 'OAUTH_GITHUB_NAME', - 'OAUTH_GITHUB_ID', - 'OAUTH_GITHUB_SECRET', - 'OAUTH_GITHUB_DESC', - ), - array( - 'OAUTH_GOOGLE_NAME', - 'OAUTH_GOOGLE_ID', - 'OAUTH_GOOGLE_SECRET', - 'OAUTH_GOOGLE_DESC', - ), - array( - 'OAUTH_HUBIC_NAME', - 'OAUTH_HUBIC_ID', - 'OAUTH_HUBIC_SECRET', - ), - array( - 'OAUTH_INSTAGRAM_NAME', - 'OAUTH_INSTAGRAM_ID', - 'OAUTH_INSTAGRAM_SECRET', - ), - array( - 'OAUTH_LINKEDIN_NAME', - 'OAUTH_LINKEDIN_ID', - 'OAUTH_LINKEDIN_SECRET', - ), - array( - 'OAUTH_MAILCHIMP_NAME', - 'OAUTH_MAILCHIMP_ID', - 'OAUTH_MAILCHIMP_SECRET', - ), - array( - 'OAUTH_MICROSOFT_NAME', - 'OAUTH_MICROSOFT_ID', - 'OAUTH_MICROSOFT_SECRET', - ), - array( - 'OAUTH_MICROSOFT2_NAME', - 'OAUTH_MICROSOFT2_ID', - 'OAUTH_MICROSOFT2_SECRET', - ), - array( - 'OAUTH_NEST_NAME', - 'OAUTH_NEST_ID', - 'OAUTH_NEST_SECRET', - ), - array( - 'OAUTH_NETATMO_NAME', - 'OAUTH_NETATMO_ID', - 'OAUTH_NETATMO_SECRET', - ), - array( - 'OAUTH_PARROTFLOWERPOWER_NAME', - 'OAUTH_PARROTFLOWERPOWER_ID', - 'OAUTH_PARROTFLOWERPOWER_SECRET', - ), - array( - 'OAUTH_PAYPAL_NAME', - 'OAUTH_PAYPAL_ID', - 'OAUTH_PAYPAL_SECRET', - ), - array( - 'OAUTH_POCKET_NAME', - 'OAUTH_POCKET_ID', - 'OAUTH_POCKET_SECRET', - ), - array( - 'OAUTH_QUICKBOOKS_NAME', - 'OAUTH_QUICKBOOKS_ID', - 'OAUTH_QUICKBOOKS_SECRET', - ), - array( - 'OAUTH_REDDIT_NAME', - 'OAUTH_REDDIT_ID', - 'OAUTH_REDDIT_SECRET', - ), - array( - 'OAUTH_REDMINE_NAME', - 'OAUTH_REDMINE_ID', - 'OAUTH_REDMINE_SECRET', - ), - array( - 'OAUTH_RUNKEEPER_NAME', - 'OAUTH_RUNKEEPER_ID', - 'OAUTH_RUNKEEPER_SECRET', - ), - array( - 'OAUTH_SCOOPIT_NAME', - 'OAUTH_SCOOPIT_ID', - 'OAUTH_SCOOPIT_SECRET', - ), - array( - 'OAUTH_SOUNDCLOUD_NAME', - 'OAUTH_SOUNDCLOUD_ID', - 'OAUTH_SOUNDCLOUD_SECRET', - ), - array( - 'OAUTH_SPOTIFY_NAME', - 'OAUTH_SPOTIFY_ID', - 'OAUTH_SPOTIFY_SECRET', - ), - array( - 'OAUTH_STRAVA_NAME', - 'OAUTH_STRAVA_ID', - 'OAUTH_STRAVA_SECRET', - ), - array( - 'OAUTH_STRIPE_TEST_NAME', - 'OAUTH_STRIPE_TEST_ID', - 'STRIPE_TEST_SECRET_KEY', - ), - array( - 'OAUTH_STRIPE_LIVE_NAME', - 'OAUTH_STRIPE_LIVE_ID', - 'STRIPE_LIVE_SECRET_KEY', - ), - array( - 'OAUTH_TUMBLR_NAME', - 'OAUTH_TUMBLR_ID', - 'OAUTH_TUMBLR_SECRET', - ), - array( - 'OAUTH_TWITTER_NAME', - 'OAUTH_TWITTER_ID', - 'OAUTH_TWITTER_SECRET', - ), - array( - 'OAUTH_USTREAM_NAME', - 'OAUTH_USTREAM_ID', - 'OAUTH_USTREAM_SECRET', - ), - array( - 'OAUTH_VIMEO_NAME', - 'OAUTH_VIMEO_ID', - 'OAUTH_VIMEO_SECRET', - ), - array( - 'OAUTH_YAHOO_NAME', - 'OAUTH_YAHOO_ID', - 'OAUTH_YAHOO_SECRET', - ), - array( - 'OAUTH_YAMMER_NAME', - 'OAUTH_YAMMER_ID', - 'OAUTH_YAMMER_SECRET', - ), - array( - 'OAUTH_OTHER_NAME', - 'OAUTH_OTHER_ID', - 'OAUTH_OTHER_SECRET', - ) + array( + 'OAUTH_AMAZON_NAME', + 'OAUTH_AMAZON_ID', + 'OAUTH_AMAZON_SECRET', + ), + array( + 'OAUTH_BITBUCKET_NAME', + 'OAUTH_BITBUCKET_ID', + 'OAUTH_BITBUCKET_SECRET', + ), + array( + 'OAUTH_BITLY_NAME', + 'OAUTH_BITLY_ID', + 'OAUTH_BITLY_SECRET', + ), + array( + 'OAUTH_BITRIX24_NAME', + 'OAUTH_BITRIX24_ID', + 'OAUTH_BITRIX24_SECRET', + ), + array( + 'OAUTH_BOX_NAME', + 'OAUTH_BOX_ID', + 'OAUTH_BOX_SECRET', + ), + array( + 'OAUTH_BUFFER_NAME', + 'OAUTH_BUFFER_ID', + 'OAUTH_BUFFER_SECRET', + ), + array( + 'OAUTH_DAILYMOTION_NAME', + 'OAUTH_DAILYMOTION_ID', + 'OAUTH_DAILYMOTION_SECRET', + ), + array( + 'OAUTH_DEVIANTART_NAME', + 'OAUTH_DEVIANTART_ID', + 'OAUTH_DEVIANTART_SECRET', + ), + array( + 'OAUTH_DROPBOX_NAME', + 'OAUTH_DROPBOX_ID', + 'OAUTH_DROPBOX_SECRET', + ), + array( + 'OAUTH_ETSY_NAME', + 'OAUTH_ETSY_ID', + 'OAUTH_ETSY_SECRET', + ), + array( + 'OAUTH_EVEONLINE_NAME', + 'OAUTH_EVEONLINE_ID', + 'OAUTH_EVEONLINE_SECRET', + ), + array( + 'OAUTH_FACEBOOK_NAME', + 'OAUTH_FACEBOOK_ID', + 'OAUTH_FACEBOOK_SECRET', + ), + array( + 'OAUTH_FITBIT_NAME', + 'OAUTH_FITBIT_ID', + 'OAUTH_FITBIT_SECRET', + ), + array( + 'OAUTH_FIVEHUNDREDPX_NAME', + 'OAUTH_FIVEHUNDREDPX_ID', + 'OAUTH_FIVEHUNDREDPX_SECRET', + ), + array( + 'OAUTH_FLICKR_NAME', + 'OAUTH_FLICKR_ID', + 'OAUTH_FLICKR_SECRET', + ), + array( + 'OAUTH_FOURSQUARE_NAME', + 'OAUTH_FOURSQUARE_ID', + 'OAUTH_FOURSQUARE_SECRET', + ), + array( + 'OAUTH_GITHUB_NAME', + 'OAUTH_GITHUB_ID', + 'OAUTH_GITHUB_SECRET', + 'OAUTH_GITHUB_DESC', + ), + array( + 'OAUTH_GOOGLE_NAME', + 'OAUTH_GOOGLE_ID', + 'OAUTH_GOOGLE_SECRET', + 'OAUTH_GOOGLE_DESC', + ), + array( + 'OAUTH_HUBIC_NAME', + 'OAUTH_HUBIC_ID', + 'OAUTH_HUBIC_SECRET', + ), + array( + 'OAUTH_INSTAGRAM_NAME', + 'OAUTH_INSTAGRAM_ID', + 'OAUTH_INSTAGRAM_SECRET', + ), + array( + 'OAUTH_LINKEDIN_NAME', + 'OAUTH_LINKEDIN_ID', + 'OAUTH_LINKEDIN_SECRET', + ), + array( + 'OAUTH_MAILCHIMP_NAME', + 'OAUTH_MAILCHIMP_ID', + 'OAUTH_MAILCHIMP_SECRET', + ), + array( + 'OAUTH_MICROSOFT_NAME', + 'OAUTH_MICROSOFT_ID', + 'OAUTH_MICROSOFT_SECRET', + ), + array( + 'OAUTH_MICROSOFT2_NAME', + 'OAUTH_MICROSOFT2_ID', + 'OAUTH_MICROSOFT2_SECRET', + ), + array( + 'OAUTH_NEST_NAME', + 'OAUTH_NEST_ID', + 'OAUTH_NEST_SECRET', + ), + array( + 'OAUTH_NETATMO_NAME', + 'OAUTH_NETATMO_ID', + 'OAUTH_NETATMO_SECRET', + ), + array( + 'OAUTH_PARROTFLOWERPOWER_NAME', + 'OAUTH_PARROTFLOWERPOWER_ID', + 'OAUTH_PARROTFLOWERPOWER_SECRET', + ), + array( + 'OAUTH_PAYPAL_NAME', + 'OAUTH_PAYPAL_ID', + 'OAUTH_PAYPAL_SECRET', + ), + array( + 'OAUTH_POCKET_NAME', + 'OAUTH_POCKET_ID', + 'OAUTH_POCKET_SECRET', + ), + array( + 'OAUTH_QUICKBOOKS_NAME', + 'OAUTH_QUICKBOOKS_ID', + 'OAUTH_QUICKBOOKS_SECRET', + ), + array( + 'OAUTH_REDDIT_NAME', + 'OAUTH_REDDIT_ID', + 'OAUTH_REDDIT_SECRET', + ), + array( + 'OAUTH_REDMINE_NAME', + 'OAUTH_REDMINE_ID', + 'OAUTH_REDMINE_SECRET', + ), + array( + 'OAUTH_RUNKEEPER_NAME', + 'OAUTH_RUNKEEPER_ID', + 'OAUTH_RUNKEEPER_SECRET', + ), + array( + 'OAUTH_SCOOPIT_NAME', + 'OAUTH_SCOOPIT_ID', + 'OAUTH_SCOOPIT_SECRET', + ), + array( + 'OAUTH_SOUNDCLOUD_NAME', + 'OAUTH_SOUNDCLOUD_ID', + 'OAUTH_SOUNDCLOUD_SECRET', + ), + array( + 'OAUTH_SPOTIFY_NAME', + 'OAUTH_SPOTIFY_ID', + 'OAUTH_SPOTIFY_SECRET', + ), + array( + 'OAUTH_STRAVA_NAME', + 'OAUTH_STRAVA_ID', + 'OAUTH_STRAVA_SECRET', + ), + array( + 'OAUTH_STRIPETEST_NAME', + 'OAUTH_STRIPETEST_ID', + 'OAUTH_STRIPETEST_SECRET_KEY', + ), + array( + 'OAUTH_STRIPELIVE_NAME', + 'OAUTH_STRIPELIVE_ID', + 'OAUTH_STRIPELIVE_SECRET_KEY', + ), + array( + 'OAUTH_TUMBLR_NAME', + 'OAUTH_TUMBLR_ID', + 'OAUTH_TUMBLR_SECRET', + ), + array( + 'OAUTH_TWITTER_NAME', + 'OAUTH_TWITTER_ID', + 'OAUTH_TWITTER_SECRET', + ), + array( + 'OAUTH_USTREAM_NAME', + 'OAUTH_USTREAM_ID', + 'OAUTH_USTREAM_SECRET', + ), + array( + 'OAUTH_VIMEO_NAME', + 'OAUTH_VIMEO_ID', + 'OAUTH_VIMEO_SECRET', + ), + array( + 'OAUTH_YAHOO_NAME', + 'OAUTH_YAHOO_ID', + 'OAUTH_YAHOO_SECRET', + ), + array( + 'OAUTH_YAMMER_NAME', + 'OAUTH_YAMMER_ID', + 'OAUTH_YAMMER_SECRET', + ), + array( + 'OAUTH_GENERIC_NAME', + 'OAUTH_GENERIC_ID', + 'OAUTH_GENERIC_SECRET', + ) ); return $list; @@ -291,7 +291,7 @@ function getSupportedOauth2Array() ), ); if (isModEnabled('stripe')) { - $supportedoauth2array['OAUTH_STRIPE_TEST_NAME'] = array( + $supportedoauth2array['OAUTH_STRIPETEST_NAME'] = array( 'callbackfile' => 'stripetest', 'picto' => 'stripe', 'urlforapp' => '', @@ -300,7 +300,7 @@ function getSupportedOauth2Array() 'availablescopes' => 'read_write', 'returnurl' => '/core/modules/oauth/stripetest_oauthcallback.php' ); - $supportedoauth2array['OAUTH_STRIPE_LIVE_NAME'] = array( + $supportedoauth2array['OAUTH_STRIPELIVE_NAME'] = array( 'callbackfile' => 'stripelive', 'picto' => 'stripe', 'urlforapp' => '', @@ -341,10 +341,10 @@ function getSupportedOauth2Array() 'returnurl' => '/core/modules/oauth/microsoft_oauthcallback.php' ); if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { - $supportedoauth2array['OAUTH_OTHER_NAME'] = array( + $supportedoauth2array['OAUTH_GENERIC_NAME'] = array( 'callbackfile' => 'generic', 'picto' => 'generic', - 'urlforapp' => 'OAUTH_OTHER_DESC', + 'urlforapp' => 'OAUTH_GENERIC_DESC', 'name' => 'Other', 'urlforcredentials' => '', 'availablescopes' => 'Standard', diff --git a/htdocs/core/modules/oauth/generic_oauthcallback.php b/htdocs/core/modules/oauth/generic_oauthcallback.php index b2c75f381b4..c8bf1951f4c 100644 --- a/htdocs/core/modules/oauth/generic_oauthcallback.php +++ b/htdocs/core/modules/oauth/generic_oauthcallback.php @@ -40,7 +40,7 @@ $keyforprovider = GETPOST('keyforprovider', 'aZ09'); if (empty($keyforprovider) && !empty($_SESSION["oauthkeyforproviderbeforeoauthjump"]) && (GETPOST('code') || $action == 'delete')) { $keyforprovider = $_SESSION["oauthkeyforproviderbeforeoauthjump"]; } -$genericstring = 'OTHER'; +$genericstring = 'GENERIC'; /** @@ -138,7 +138,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/github_oauthcallback.php b/htdocs/core/modules/oauth/github_oauthcallback.php index 23f9be92724..07153e9de32 100644 --- a/htdocs/core/modules/oauth/github_oauthcallback.php +++ b/htdocs/core/modules/oauth/github_oauthcallback.php @@ -118,7 +118,7 @@ if (GETPOST('code')) { // We are coming from oauth provider page // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/google_oauthcallback.php b/htdocs/core/modules/oauth/google_oauthcallback.php index 2b6d484c51a..7e9288af27e 100644 --- a/htdocs/core/modules/oauth/google_oauthcallback.php +++ b/htdocs/core/modules/oauth/google_oauthcallback.php @@ -219,7 +219,7 @@ if (!GETPOST('code')) { exit(); } else { // We are coming from the return of an OAuth2 provider page. - dol_syslog("We are coming from the oauth provider page keyforprovider=".$keyforprovider." code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page keyforprovider=".$keyforprovider." code=".dol_trunc(GETPOST('code'), 5)); // We must validate that the $state is the same than the one into $_SESSION['oauthstateanticsrf'], return error if not. if (isset($_SESSION['oauthstateanticsrf']) && $state != $_SESSION['oauthstateanticsrf']) { diff --git a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php index 6ee6ca64430..fc5090364be 100644 --- a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php @@ -17,7 +17,7 @@ */ /** - * \file htdocs/core/modules/oauth/microsoft_oauthcallback.php + * \file htdocs/core/modules/oauth/microsoft2_oauthcallback.php * \ingroup oauth * \brief Page to get oauth callback */ @@ -49,7 +49,7 @@ $genericstring = 'MICROSOFT2'; $uriFactory = new \OAuth\Common\Http\Uri\UriFactory(); //$currentUri = $uriFactory->createFromSuperGlobalArray($_SERVER); //$currentUri->setQuery(''); -$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/microsoft_oauthcallback.php'); +$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/microsoft2_oauthcallback.php'); /** @@ -94,7 +94,8 @@ if ($action != 'delete' && empty($requestedpermissionsarray)) { // $requestedpermissionsarray contains list of scopes. // Conversion into URL is done by Reflection on constant with name SCOPE_scope_in_uppercase try { - $apiService = $serviceFactory->createService(ucfirst(strtolower($genericstring)), $credentials, $storage, $requestedpermissionsarray); + $nameofservice = ucfirst(strtolower($genericstring)); + $apiService = $serviceFactory->createService($nameofservice, $credentials, $storage, $requestedpermissionsarray); } catch (Exception $e) { print $e->getMessage(); exit; @@ -122,6 +123,9 @@ if (!getDolGlobalString($keyforparamid)) { if (!getDolGlobalString($keyforparamsecret)) { accessforbidden('Setup of service is not complete. Secret key is missing'); } +if (!getDolGlobalString($keyforparamtenant)) { + accessforbidden('Setup of service is not complete. Tenant/Annuary ID key is missing'); +} /* @@ -148,7 +152,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/microsoft_oauthcallback.php b/htdocs/core/modules/oauth/microsoft_oauthcallback.php index c8cd593bf07..53df4f9653a 100644 --- a/htdocs/core/modules/oauth/microsoft_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft_oauthcallback.php @@ -42,7 +42,6 @@ if (empty($keyforprovider) && !empty($_SESSION["oauthkeyforproviderbeforeoauthju } $genericstring = 'MICROSOFT'; - /** * Create a new instance of the URI class with the current URI, stripping the query string */ @@ -94,7 +93,8 @@ if ($action != 'delete' && empty($requestedpermissionsarray)) { // $requestedpermissionsarray contains list of scopes. // Conversion into URL is done by Reflection on constant with name SCOPE_scope_in_uppercase try { - $apiService = $serviceFactory->createService(ucfirst(strtolower($genericstring)), $credentials, $storage, $requestedpermissionsarray); + $nameofservice = ucfirst(strtolower($genericstring)); + $apiService = $serviceFactory->createService($nameofservice, $credentials, $storage, $requestedpermissionsarray); } catch (Exception $e) { print $e->getMessage(); exit; @@ -122,6 +122,9 @@ if (!getDolGlobalString($keyforparamid)) { if (!getDolGlobalString($keyforparamsecret)) { accessforbidden('Setup of service is not complete. Secret key is missing'); } +if (!getDolGlobalString($keyforparamtenant)) { + accessforbidden('Setup of service is not complete. Tenant/Annuary ID key is missing'); +} /* @@ -148,7 +151,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)." error=".GETPOST('error')); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/stripelive_oauthcallback.php b/htdocs/core/modules/oauth/stripelive_oauthcallback.php index 3fde132ea25..f8cf42ab46a 100644 --- a/htdocs/core/modules/oauth/stripelive_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripelive_oauthcallback.php @@ -67,8 +67,8 @@ $serviceFactory->setHttpClient($httpClient); $storage = new DoliStorage($db, $conf, $keyforprovider); // Setup the credentials for the requests -$keyforparamid = 'OAUTH_STRIPE_LIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; -$keyforparamsecret = 'OAUTH_STRIPE_LIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; +$keyforparamid = 'OAUTH_STRIPELIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; +$keyforparamsecret = 'OAUTH_STRIPELIVE'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), @@ -128,7 +128,7 @@ if (GETPOST('code')) { // We are coming from oauth provider page // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { diff --git a/htdocs/core/modules/oauth/stripetest_oauthcallback.php b/htdocs/core/modules/oauth/stripetest_oauthcallback.php index a9f50b95fc4..6189de2e255 100644 --- a/htdocs/core/modules/oauth/stripetest_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripetest_oauthcallback.php @@ -67,8 +67,8 @@ $serviceFactory->setHttpClient($httpClient); $storage = new DoliStorage($db, $conf, $keyforprovider); // Setup the credentials for the requests -$keyforparamid = 'OAUTH_STRIPE_TEST'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; -$keyforparamsecret = 'OAUTH_STRIPE_TEST'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; +$keyforparamid = 'OAUTH_STRIPETEST'.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; +$keyforparamsecret = 'OAUTH_STRIPETEST'.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), @@ -124,7 +124,7 @@ if (GETPOST('code')) { // We are coming from oauth provider page // We should have //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) - dol_syslog("We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); + dol_syslog(basename(__FILE__)." We are coming from the oauth provider page code=".dol_trunc(GETPOST('code'), 5)); // This was a callback request from service, get the token try { From 4361da7e2ba914afd15dc2008f1694fa886bea32 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 11:04:04 +0200 Subject: [PATCH 30/75] Fix responsive --- htdocs/admin/system/dbtable.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/admin/system/dbtable.php b/htdocs/admin/system/dbtable.php index 8167f1e6db9..890dc36cd43 100644 --- a/htdocs/admin/system/dbtable.php +++ b/htdocs/admin/system/dbtable.php @@ -21,7 +21,7 @@ /** * \file htdocs/admin/system/dbtable.php - * \brief Page d'info des contraintes d'une table + * \brief Page with information about a database table */ // Load Dolibarr environment @@ -153,6 +153,7 @@ if (!$base) { } } + print '
'; print ''; print ''; print ''; @@ -231,13 +232,14 @@ if (!$base) { print ""; - print ''; - print ''; + print ''; + print ''; print ''; $i++; } } print '
'.$langs->trans("Fields").'".(isset($link[$row[0]][0]) ? $link[$row[0]][0] : '')."."; print(isset($link[$row[0]][1]) ? $link[$row[0]][1] : '')."
'; + print '
'; } } From 8bdd3fe3cdc5acb8c196653244af07c37b9651dc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 12:16:46 +0200 Subject: [PATCH 31/75] Fix error --- htdocs/core/lib/functions.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 360cbb05edf..3760620da52 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -13319,7 +13319,7 @@ function jsonOrUnserialize($stringtodecode) /** * forgeSQLFromUniversalSearchCriteria * - * @param string $filter String with universal search string. Must be '(aaa:bbb:ccc) OR (ddd:eeee:fff) ...' with + * @param ?string $filter String with universal search string. Must be '(aaa:bbb:ccc) OR (ddd:eeee:fff) ...' with * aaa is a field name (with alias or not) and * bbb is one of this operator '=', '<', '>', '<=', '>=', '!=', 'in', 'notin', 'like', 'notlike', 'is', 'isnot'. * ccc must not contains ( or ) @@ -13336,7 +13336,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$errorstr = '', $noand = { global $db, $user; - if ($filter === '') { + if (is_null($filter) || $filter === '') { return ''; } if (!preg_match('/^\(.*\)$/', $filter)) { // If $filter does not start and end with () From b5730db759609e5187be808f88d790c01ed349e1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 12:18:55 +0200 Subject: [PATCH 32/75] Fix error --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 3760620da52..0173a568639 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -13336,7 +13336,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$errorstr = '', $noand = { global $db, $user; - if (is_null($filter) || $filter === '') { + if (is_null($filter) || is_array($filter) || $filter === '') { return ''; } if (!preg_match('/^\(.*\)$/', $filter)) { // If $filter does not start and end with () From 11ea0ad9fdfaa04b69c00ffc3462c07bdc1d4cc0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 15:15:52 +0200 Subject: [PATCH 33/75] Fix fatal error with bad parameters --- htdocs/core/lib/functions.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 0173a568639..69f97d0d929 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -13319,7 +13319,7 @@ function jsonOrUnserialize($stringtodecode) /** * forgeSQLFromUniversalSearchCriteria * - * @param ?string $filter String with universal search string. Must be '(aaa:bbb:ccc) OR (ddd:eeee:fff) ...' with + * @param string $filter String with universal search string. Must be '(aaa:bbb:ccc) OR (ddd:eeee:fff) ...' with * aaa is a field name (with alias or not) and * bbb is one of this operator '=', '<', '>', '<=', '>=', '!=', 'in', 'notin', 'like', 'notlike', 'is', 'isnot'. * ccc must not contains ( or ) @@ -13336,7 +13336,7 @@ function forgeSQLFromUniversalSearchCriteria($filter, &$errorstr = '', $noand = { global $db, $user; - if (is_null($filter) || is_array($filter) || $filter === '') { + if (is_null($filter) || !is_string($filter) || $filter === '') { return ''; } if (!preg_match('/^\(.*\)$/', $filter)) { // If $filter does not start and end with () From c5eb24e65619c265c02f72d8205b2e46d62401ed Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 16:14:22 +0200 Subject: [PATCH 34/75] Trans --- htdocs/langs/en_US/recruitment.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/recruitment.lang b/htdocs/langs/en_US/recruitment.lang index 04919e2a1b2..389aa94c532 100644 --- a/htdocs/langs/en_US/recruitment.lang +++ b/htdocs/langs/en_US/recruitment.lang @@ -64,3 +64,4 @@ NoPositionOpen=No positions open at the moment ConfirmClose=Confirm cancellation ConfirmCloseAsk=Are you sure you want to cancel this recruitment candidature Recruitment=Recruitment +NoOpenJobOpen=No open job offers at the moment From 03c974df6b03bf177634310eaacea3b608d5fbaa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 16:15:18 +0200 Subject: [PATCH 35/75] trans --- htdocs/langs/en_US/recruitment.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/recruitment.lang b/htdocs/langs/en_US/recruitment.lang index 389aa94c532..047455d5e2b 100644 --- a/htdocs/langs/en_US/recruitment.lang +++ b/htdocs/langs/en_US/recruitment.lang @@ -64,4 +64,4 @@ NoPositionOpen=No positions open at the moment ConfirmClose=Confirm cancellation ConfirmCloseAsk=Are you sure you want to cancel this recruitment candidature Recruitment=Recruitment -NoOpenJobOpen=No open job offers at the moment +NoOpenJobOffer=No open job offers at the moment From 50d26131243ce071bef55581cb52ffa6da3173a1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 2 Oct 2024 21:23:06 +0200 Subject: [PATCH 36/75] Fix use of OAUTH for SMTP use with Microsoft --- htdocs/admin/emailcollector_card.php | 8 +++++++- htdocs/core/class/CMailFile.class.php | 19 +++++++++++-------- .../class/emailcollector.class.php | 11 ++++++----- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index fdc44b83b7a..8da0fed486f 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -416,7 +416,13 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); + if (!empty($supportedoauth2array)) { + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; + } else { + $OAUTH_SERVICENAME = 'Unknown'; + } require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; //$debugtext = "Host: ".$this->host."
Port: ".$this->port."
Login: ".$this->login."
Password: ".$this->password."
access type: ".$this->acces_type."
oauth service: ".$this->oauth_service."
Max email per collect: ".$this->maxemailpercollect; diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 9b72013965f..913a76c48b6 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -1074,7 +1074,9 @@ class CMailFile $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; if (!empty($supportedoauth2array)) { - $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; } else { $OAUTH_SERVICENAME = 'Unknown'; } @@ -1211,10 +1213,10 @@ class CMailFile $this->transport = new Swift_SmtpTransport($server, getDolGlobalString($keyforsmtpport), $secure); if (!empty($conf->global->$keyforsmtpid)) { - $this->transport->setUsername($conf->global->$keyforsmtpid); + $this->transport->setUsername(getDolGlobalString($keyforsmtpid)); } if (!empty($conf->global->$keyforsmtppw) && getDolGlobalString($keyforsmtpauthtype) != "XOAUTH2") { - $this->transport->setPassword($conf->global->$keyforsmtppw); + $this->transport->setPassword(getDolGlobalString($keyforsmtppw)); } if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") { require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; @@ -1230,11 +1232,12 @@ class CMailFile $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - $OAUTH_SERVICENAME = 'Unknown'; - if (array_key_exists($keyforsupportedoauth2array, $supportedoauth2array) - && array_key_exists('name', $supportedoauth2array[$keyforsupportedoauth2array]) - && !empty($supportedoauth2array[$keyforsupportedoauth2array]['name'])) { - $OAUTH_SERVICENAME = $supportedoauth2array[$keyforsupportedoauth2array]['name'].(!empty($keyforprovider) ? '-'.$keyforprovider : ''); + if (!empty($supportedoauth2array)) { + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; + } else { + $OAUTH_SERVICENAME = 'Unknown'; } require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index e33a09c68f1..69c07ea8ec3 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1147,11 +1147,12 @@ class EmailCollector extends CommonObject $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - $OAUTH_SERVICENAME = 'Unknown'; - if (array_key_exists($keyforsupportedoauth2array, $supportedoauth2array) - && array_key_exists('name', $supportedoauth2array[$keyforsupportedoauth2array]) - && !empty($supportedoauth2array[$keyforsupportedoauth2array]['name'])) { - $OAUTH_SERVICENAME = $supportedoauth2array[$keyforsupportedoauth2array]['name'].(!empty($keyforprovider) ? '-'.$keyforprovider : ''); + if (!empty($supportedoauth2array)) { + $nameofservice = ucfirst(strtolower(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'])); + $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); + $OAUTH_SERVICENAME = $nameofservice; + } else { + $OAUTH_SERVICENAME = 'Unknown'; } require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; From b37773cf947a75488e0f75605a2a94d96b2bbc17 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 00:05:33 +0200 Subject: [PATCH 37/75] Fix mutitenant MS oauth --- htdocs/core/lib/oauth.lib.php | 2 +- htdocs/core/modules/oauth/microsoft2_oauthcallback.php | 9 ++++++--- htdocs/core/modules/oauth/microsoft_oauthcallback.php | 7 ++++--- htdocs/includes/OAuth/Common/Storage/DoliStorage.php | 6 ++++-- htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/core/lib/oauth.lib.php b/htdocs/core/lib/oauth.lib.php index 31c9c9a45e9..009db50596b 100644 --- a/htdocs/core/lib/oauth.lib.php +++ b/htdocs/core/lib/oauth.lib.php @@ -338,7 +338,7 @@ function getSupportedOauth2Array() 'urlforcredentials' => 'https://portal.azure.com/', // User.Read is a microsoftgraph scope, if it's not working, do not select it 'availablescopes' => 'openid,offline_access,profile,email,User.Read,https://outlook.office.com/.default', - 'returnurl' => '/core/modules/oauth/microsoft_oauthcallback.php' + 'returnurl' => '/core/modules/oauth/microsoft2_oauthcallback.php' ); if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { $supportedoauth2array['OAUTH_GENERIC_NAME'] = array( diff --git a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php index fc5090364be..4692c3af7c6 100644 --- a/htdocs/core/modules/oauth/microsoft2_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft2_oauthcallback.php @@ -49,6 +49,7 @@ $genericstring = 'MICROSOFT2'; $uriFactory = new \OAuth\Common\Http\Uri\UriFactory(); //$currentUri = $uriFactory->createFromSuperGlobalArray($_SERVER); //$currentUri->setQuery(''); + $currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/microsoft2_oauthcallback.php'); @@ -64,19 +65,21 @@ $httpClient = new \OAuth\Common\Http\Client\CurlClient(); //$httpClient->setCurlParameters($params); $serviceFactory->setHttpClient($httpClient); -// Dolibarr storage -$storage = new DoliStorage($db, $conf, $keyforprovider); - // Setup the credentials for the requests $keyforparamid = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; $keyforparamsecret = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $keyforparamtenant = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + +// Dolibarr storage +$storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); + $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), $currentUri->getAbsoluteUri() ); + $state = GETPOST('state'); $requestedpermissionsarray = array(); diff --git a/htdocs/core/modules/oauth/microsoft_oauthcallback.php b/htdocs/core/modules/oauth/microsoft_oauthcallback.php index 53df4f9653a..551d4dc63e7 100644 --- a/htdocs/core/modules/oauth/microsoft_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft_oauthcallback.php @@ -63,13 +63,14 @@ $httpClient = new \OAuth\Common\Http\Client\CurlClient(); //$httpClient->setCurlParameters($params); $serviceFactory->setHttpClient($httpClient); -// Dolibarr storage -$storage = new DoliStorage($db, $conf, $keyforprovider); - // Setup the credentials for the requests $keyforparamid = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; $keyforparamsecret = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; $keyforparamtenant = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + +// Dolibarr storage +$storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); + $credentials = new Credentials( getDolGlobalString($keyforparamid), getDolGlobalString($keyforparamsecret), diff --git a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php index 070a5d2b92a..d3de6d20280 100644 --- a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php +++ b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php @@ -71,8 +71,9 @@ class DoliStorage implements TokenStorageInterface * @param DoliDB $db Database handler * @param \Conf $conf Conf object * @param string $keyforprovider Key to manage several providers of the same type. For example 'abc' will be added to 'Google' to defined storage key. + * @param string $tenant Value of tenant if used */ - public function __construct(DoliDB $db, \Conf $conf, $keyforprovider = '') + public function __construct(DoliDB $db, \Conf $conf, $keyforprovider = '', $tenant = '') { $this->db = $db; $this->conf = $conf; @@ -80,6 +81,7 @@ class DoliStorage implements TokenStorageInterface $this->token = ''; $this->tokens = array(); $this->states = array(); + $this->tenant = $tenant; //$this->key = $key; //$this->stateKey = $stateKey; } @@ -381,7 +383,7 @@ class DoliStorage implements TokenStorageInterface { // Set/Reset tenant now so it will be defined for. // TODO We must store it into the table llx_oauth_token - $this->tenant = getDolGlobalString('OAUTH_MICROSOFT'.($this->keyforprovider ? '-'.$this->keyforprovider : '').'_TENANT'); + //$this->tenant = getDolGlobalString('OAUTH_MICROSOFT'.($this->keyforprovider ? '-'.$this->keyforprovider : '').'_TENANT'); return $this->tenant; } diff --git a/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php b/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php index 727cd05b842..83149fc639a 100644 --- a/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php +++ b/htdocs/includes/OAuth/OAuth2/Service/Microsoft2.php @@ -10,7 +10,7 @@ use OAuth\Common\Http\Client\ClientInterface; use OAuth\Common\Storage\TokenStorageInterface; use OAuth\Common\Http\Uri\UriInterface; -class Microsoft extends AbstractService +class Microsoft2 extends AbstractService { const SCOPE_BASIC = 'basic'; const SCOPE_OFFLINE_ACCESS = 'offline_access'; From 52616db1b7cf70ac41e57c21e128806348933ab4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 01:06:44 +0200 Subject: [PATCH 38/75] Fix mutitenant MS oauth refresh --- htdocs/admin/emailcollector_card.php | 4 +++- htdocs/admin/oauthlogintokens.php | 4 +++- htdocs/core/class/CMailFile.class.php | 8 ++++++-- htdocs/emailcollector/class/emailcollector.class.php | 4 +++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index 8da0fed486f..e5bf3142259 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -424,13 +424,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $OAUTH_SERVICENAME = 'Unknown'; } + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; //$debugtext = "Host: ".$this->host."
Port: ".$this->port."
Login: ".$this->login."
Password: ".$this->password."
access type: ".$this->acces_type."
oauth service: ".$this->oauth_service."
Max email per collect: ".$this->maxemailpercollect; //dol_syslog($debugtext); $token = ''; - $storage = new DoliStorage($db, $conf, $keyforprovider); + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); diff --git a/htdocs/admin/oauthlogintokens.php b/htdocs/admin/oauthlogintokens.php index 1d80659c176..08f98cebad5 100644 --- a/htdocs/admin/oauthlogintokens.php +++ b/htdocs/admin/oauthlogintokens.php @@ -183,6 +183,8 @@ if ($mode == 'setup' && $user->admin) { $nameofservice .= ($keyforprovider ? '-'.$keyforprovider : ''); $OAUTH_SERVICENAME = $nameofservice; + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + $shortscope = ''; if (getDolGlobalString($key[4])) { $shortscope = getDolGlobalString($key[4]); @@ -227,7 +229,7 @@ if ($mode == 'setup' && $user->admin) { // Token require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; // Dolibarr storage - $storage = new DoliStorage($db, $conf, $keyforprovider); + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { // $OAUTH_SERVICENAME is for example 'Google-keyforprovider' print ''."\n"; diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 913a76c48b6..a9df7140848 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -1081,9 +1081,11 @@ class CMailFile $OAUTH_SERVICENAME = 'Unknown'; } + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; - $storage = new DoliStorage($db, $conf, $keyforprovider); + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); @@ -1240,9 +1242,11 @@ class CMailFile $OAUTH_SERVICENAME = 'Unknown'; } + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; - $storage = new DoliStorage($db, $conf, $keyforprovider); + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 69c07ea8ec3..493c7e7434d 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -1155,13 +1155,15 @@ class EmailCollector extends CommonObject $OAUTH_SERVICENAME = 'Unknown'; } + $keyforparamtenant = 'OAUTH_'.strtoupper(empty($supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['callbackfile']).($keyforprovider ? '-'.$keyforprovider : '').'_TENANT'; + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; //$debugtext = "Host: ".$this->host."
Port: ".$this->port."
Login: ".$this->login."
Password: ".$this->password."
access type: ".$this->acces_type."
oauth service: ".$this->oauth_service."
Max email per collect: ".$this->maxemailpercollect; //dol_syslog($debugtext); $token = ''; - $storage = new DoliStorage($db, $conf, $keyforprovider); + $storage = new DoliStorage($db, $conf, $keyforprovider, getDolGlobalString($keyforparamtenant)); try { $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); From 22944a24402e8045360c143bf30ff799d721cd69 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 02:56:34 +0200 Subject: [PATCH 39/75] Code comment --- htdocs/core/modules/oauth/microsoft_oauthcallback.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/oauth/microsoft_oauthcallback.php b/htdocs/core/modules/oauth/microsoft_oauthcallback.php index 551d4dc63e7..486f401938a 100644 --- a/htdocs/core/modules/oauth/microsoft_oauthcallback.php +++ b/htdocs/core/modules/oauth/microsoft_oauthcallback.php @@ -169,7 +169,7 @@ if (GETPOST('code') || GETPOST('error')) { // We are coming from oauth provi // Microsoft is a service that does not need state to be stored as second parameter of requestAccessToken //print $token->getAccessToken().'

'; - //print $token->getExtraParams()['id_token'].'
'; + //print $token->getExtraParams()['id_token'].'

'; //print $token->getRefreshToken().'
';exit; setEventMessages($langs->trans('NewTokenStored'), null, 'mesgs'); // Stored into object managed by class DoliStorage so into table oauth_token From 554f9da8263916205a01d315fa807cf3e1ba09c0 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 10:55:54 +0200 Subject: [PATCH 40/75] Fix CSS --- htdocs/theme/md/style.css.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/theme/md/style.css.php b/htdocs/theme/md/style.css.php index 3755aa1f2eb..5dd886ecb78 100644 --- a/htdocs/theme/md/style.css.php +++ b/htdocs/theme/md/style.css.php @@ -3503,10 +3503,10 @@ img.login, img.printer, img.entity { } .userimg.atoplogin img.userphoto, .userimgatoplogin img.userphoto { /* size for user photo in login bar */ /* border-radius: 8px; */ - width: 20px; - height: 20px; + width: px; + height: px; + border-radius: 50%; background-size: contain; - vertical-align: text-bottom; background-color: #FFF; } img.userphoto { /* size for user photo in lists */ From 877a6f6c4a944f06fc26dc4bd40479710c88fdb4 Mon Sep 17 00:00:00 2001 From: Hasanuzzaman Sattar Date: Thu, 3 Oct 2024 17:17:28 +0530 Subject: [PATCH 41/75] FIX#31237 (#31239) * FIX#31237 * FIX#31241 * FIX#31237 * FIX#31237 --- htdocs/emailcollector/class/emailcollector.class.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 493c7e7434d..ddc4cb4fe2c 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2658,8 +2658,6 @@ class EmailCollector extends CommonObject } else { dol_syslog("One and only one existing third party has been found"); - $thirdpartystatic->fetch($result); - $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id); } } From e56a1d946ebec5d277798e04da5d482cf9508c2d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 13:49:31 +0200 Subject: [PATCH 42/75] Doc --- htdocs/contact/class/contact.class.php | 2 +- htdocs/societe/class/societe.class.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 19901ccad46..e2ff9935585 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -1173,7 +1173,7 @@ class Contact extends CommonObject * @param string $email Email * @param string $ref_alias Name alias (TODO Not yet implemented) * @param int $socid Filter on thirdparty id - * @return int >0 if OK, <0 if KO or if two records found for same ref or idprof, 0 if not found. + * @return int ID of contact if OK, <0 if KO or if two records found for same ref or idprof, 0 if not found. */ public function findNearest($id = 0, $lastname = '', $firstname = '', $ref_ext = '', $email = '', $ref_alias = '', $socid = 0) { diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index a5748873d77..eb49f75e8da 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -2118,7 +2118,7 @@ class Societe extends CommonObject * @param string $ref_alias Name_alias of third party (Warning, this can return several records) * @param int $is_client Only client third party * @param int $is_supplier Only supplier third party - * @return int >0 if OK, <0 if KO or if two records found, 0 if not found. + * @return int ID of thirdparty found if OK, <0 if KO or if two records found, 0 if not found. */ public function findNearest($rowid = 0, $ref = '', $ref_ext = '', $barcode = '', $idprof1 = '', $idprof2 = '', $idprof3 = '', $idprof4 = '', $idprof5 = '', $idprof6 = '', $email = '', $ref_alias = '', $is_client = 0, $is_supplier = 0) { From 0676a5e718215bb8f585f7649b5f1c1279b310fa Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 13:52:55 +0200 Subject: [PATCH 43/75] Fix a fix has been lsot by merge --- htdocs/emailcollector/class/emailcollector.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index ddc4cb4fe2c..ecb2056b201 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2658,7 +2658,9 @@ class EmailCollector extends CommonObject } else { dol_syslog("One and only one existing third party has been found"); - $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id); + $thirdpartystatic->fetch($result); + + $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id)." and name ".dol_escape_all($thirdpartystatic->name); } } } From 0674754ad777b6782921adcc82bdbf0c961adceb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 14:03:15 +0200 Subject: [PATCH 44/75] Restore regression --- htdocs/emailcollector/class/emailcollector.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index ecb2056b201..66e02b5ad88 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2655,7 +2655,7 @@ class EmailCollector extends CommonObject } } } - } else { + } else { // $result > 0 is ID of thirdparty dol_syslog("One and only one existing third party has been found"); $thirdpartystatic->fetch($result); From 59004c6fe8144066b82a2c29411dc430da8f4ad4 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:04:32 +0200 Subject: [PATCH 45/75] FIX Revert storing of ticket files into event dir, too many troubles. Files must remains into ticket directory. --- htdocs/core/actions_linkedfiles.inc.php | 4 +- htdocs/core/lib/files.lib.php | 3 +- htdocs/core/lib/ticket.lib.php | 2 + ...terface_50_modAgenda_ActionsAuto.class.php | 5 ++- htdocs/ticket/class/ticket.class.php | 43 ++++++++++++------- htdocs/ticket/document.php | 3 ++ 6 files changed, 40 insertions(+), 20 deletions(-) diff --git a/htdocs/core/actions_linkedfiles.inc.php b/htdocs/core/actions_linkedfiles.inc.php index e90b1998906..d68b265c91a 100644 --- a/htdocs/core/actions_linkedfiles.inc.php +++ b/htdocs/core/actions_linkedfiles.inc.php @@ -116,7 +116,6 @@ if (GETPOST('sendit', 'alpha') && getDolGlobalString('MAIN_UPLOAD_DOC') && !empt } } - // Delete file/link if ($action == 'confirm_deletefile' && $confirm == 'yes' && !empty($permissiontoadd)) { $urlfile = GETPOST('urlfile', 'alpha', 0, null, null, 1); @@ -253,13 +252,14 @@ if ($action == 'confirm_deletefile' && $confirm == 'yes' && !empty($permissionto if ($filenamefrom && $filenameto) { $srcpath = $upload_dir.'/'.$filenamefrom; $destpath = $upload_dir.'/'.$filenameto; + /* disabled. Too many bugs. All files of an object must remain into directory of object. link with event should be done in llx_ecm_files with column agenda_id. if ($modulepart == "ticket" && !dol_is_file($srcpath)) { $srcbis = $conf->agenda->dir_output.'/'.GETPOST('section_dir').$filenamefrom; if (dol_is_file($srcbis)) { $srcpath = $srcbis; $destpath = $conf->agenda->dir_output.'/'.GETPOST('section_dir').$filenameto; } - } + }*/ $reshook = $hookmanager->initHooks(array('actionlinkedfiles')); $parameters = array('filenamefrom' => $filenamefrom, 'filenameto' => $filenameto, 'upload_dir' => $upload_dir); diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php index 09a2ed74e13..e3913c289d5 100644 --- a/htdocs/core/lib/files.lib.php +++ b/htdocs/core/lib/files.lib.php @@ -1509,7 +1509,8 @@ function dol_delete_file($file, $disableglob = 0, $nophperrors = 0, $nohook = 0, $ok = true; $globencoded = str_replace('[', '\[', $file_osencoded); $globencoded = str_replace(']', '\]', $globencoded); - $listofdir = glob($globencoded); + $listofdir = glob($globencoded); // This scan dir for files. If file does not exists, return empty. + if (!empty($listofdir) && is_array($listofdir)) { foreach ($listofdir as $filename) { if ($nophperrors) { diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index 7b5a271fce9..3d38f639d97 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -109,6 +109,7 @@ function ticket_prepare_head($object) include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $upload_dir = $conf->ticket->dir_output."/".$object->ref; $nbFiles = count(dol_dir_list($upload_dir, 'files')); + /* disabled. Too many bugs. All file of a ticket must be stored into ticket. File must be linked to an event by column agenda_id into llx_ecmfiles. $sql = 'SELECT id FROM '.MAIN_DB_PREFIX.'actioncomm'; $sql .= " WHERE fk_element = ".(int) $object->id." AND elementtype = 'ticket'"; $resql = $db->query($sql); @@ -119,6 +120,7 @@ function ticket_prepare_head($object) $nbFiles += count(dol_dir_list($upload_msg_dir, "files")); } } + */ $head[$h][0] = DOL_URL_ROOT.'/ticket/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); if ($nbFiles > 0) { diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index de03d945537..a4eaaf29f69 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -1552,9 +1552,12 @@ class InterfaceActionsAuto extends DolibarrTriggers if ($ret > 0 && getDolGlobalString('MAIN_COPY_FILE_IN_EVENT_AUTO')) { if (property_exists($object, 'attachedfiles') && is_array($object->attachedfiles) && array_key_exists('paths', $object->attachedfiles) && count($object->attachedfiles['paths']) > 0) { + // Get directory of object + $tmpelems = getElementProperties($object->element.($object->module ? '@'.$object->module : '')); + $destdir = $tmpelems['dir_output'].'/'.$ret; + foreach ($object->attachedfiles['paths'] as $key => $filespath) { $srcfile = $filespath; - $destdir = $conf->agenda->dir_output.'/'.$ret; $destfile = $destdir.'/'.$object->attachedfiles['names'][$key]; if (dol_mkdir($destdir) >= 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index 4196a85326d..f2b9f73b070 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1894,26 +1894,35 @@ class Ticket extends CommonObject if ($actionid > 0) { if (is_array($attachedfiles) && array_key_exists('paths', $attachedfiles) && count($attachedfiles['paths']) > 0) { + // If there is some files, we must now link them to the event, so we can show them per event. foreach ($attachedfiles['paths'] as $key => $filespath) { - $destdir = $conf->agenda->dir_output.'/'.$actionid; - $destfile = $destdir.'/'.$attachedfiles['names'][$key]; - if (dol_mkdir($destdir) >= 0) { + // Disabled the move into another directory, Files for a ticket should be stored into ticket directory. It generates too much troubles. + //$destdir = $conf->agenda->dir_output.'/'.$actionid; + //$destfile = $destdir.'/'.$attachedfiles['names'][$key]; + //if (dol_mkdir($destdir) >= 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - dol_move($filespath, $destfile); - if (in_array($actioncomm->code, array('TICKET_MSG', 'TICKET_MSG_SENTBYMAIL'))) { - $ecmfile = new EcmFiles($this->db); - $destdir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $destdir); - $destdir = preg_replace('/[\\/]$/', '', $destdir); - $destdir = preg_replace('/^[\\/]/', '', $destdir); - $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); - require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $ecmfile->share = getRandomPassword(true); - $result = $ecmfile->update($user); - if ($result < 0) { - setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); - } + //dol_move($filespath, $destfile); // Disabled, a file for a ticket should be stored into ticket directory. It generates big trouble. + if (in_array($actioncomm->code, array('TICKET_MSG', 'TICKET_MSG_SENTBYMAIL'))) { + $ecmfile = new EcmFiles($this->db); + $destdir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $destdir); + $destdir = preg_replace('/[\\/]$/', '', $destdir); + $destdir = preg_replace('/^[\\/]/', '', $destdir); + + $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); + + // TODO We must add a column into ecm_files table agenda_id to store the ID of event. + // $ecmfile->agenda_id = $actionid; + + // Disabled, serious security hole. A file published into the ERP should not become public for everybody. + //require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + //$ecmfile->share = getRandomPassword(true); + + $result = $ecmfile->update($user); + if ($result < 0) { + setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); } } + //} } } } @@ -2573,7 +2582,9 @@ class Ticket extends CommonObject } $moreinfo = array('description' => 'File saved by copyFilesForTicket', 'src_object_type' => $this->element, 'src_object_id' => $this->id); + $res = dol_move($filepath[$i], $destfile, 0, 1, 0, 1, $moreinfo); + if (!$res) { // Move has failed $this->error = "Failed to move file ".dirbasename($filepath[$i])." into ".dirbasename($destfile); diff --git a/htdocs/ticket/document.php b/htdocs/ticket/document.php index ffecc4e9197..b6e107e6588 100644 --- a/htdocs/ticket/document.php +++ b/htdocs/ticket/document.php @@ -211,7 +211,9 @@ if ($object->id) { // Build file list $filearray = dol_dir_list($upload_dir, "files", 0, '', '\.meta$', $sortfield, (strtolower($sortorder) == 'desc' ? SORT_DESC : SORT_ASC), 1); + // same as above for every messages + /* disabled. Too many bugs. All file of a ticket must be stored into ticket. File must be linked to an event by column agenda_id into llx_ecmfiles. $sql = 'SELECT id FROM '.MAIN_DB_PREFIX.'actioncomm'; $sql .= " WHERE fk_element = ".(int) $object->id." AND elementtype = 'ticket'"; $resql = $db->query($sql); @@ -229,6 +231,7 @@ if ($object->id) { $filearray = array_merge($filearray, $file_msg_array); } } + */ $totalsize = 0; foreach ($filearray as $key => $file) { From e1a2435d9639123e134df71034c00a038bab8697 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:16:48 +0200 Subject: [PATCH 46/75] css --- htdocs/core/class/html.formticket.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index 0940f69faa1..2838c10b741 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -726,6 +726,8 @@ class FormTicket print dol_get_fiche_end(); } + print '
'; + if ($mode == 'create') { print $form->buttonsSaveCancel(((isset($this->withreadid) && $this->withreadid > 0) ? "SendResponse" : "CreateTicket"), ($this->withcancel ? "Cancel" : "")); } else { From 0367450134b0f59ca204a59d8c8a4b59c028bcbd Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:28:51 +0200 Subject: [PATCH 47/75] css --- htdocs/public/ticket/view.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/public/ticket/view.php b/htdocs/public/ticket/view.php index 7be70ec70ee..24561280415 100644 --- a/htdocs/public/ticket/view.php +++ b/htdocs/public/ticket/view.php @@ -441,6 +441,8 @@ if ($action == "view_ticket" || $action == "presend" || $action == "close" || $a print '
'; $object->viewTicketMessages(false, true, $object->dao); + + print '
'; } else { print ''; print '
'; From 5d58a33f376398cddd375a2dcf8204998ef2a742 Mon Sep 17 00:00:00 2001 From: Sylvain Legrand Date: Thu, 3 Oct 2024 16:38:41 +0300 Subject: [PATCH 48/75] Fix tz array (#31240) The list of time zones included in the 'get_tz_array()' function no longer matches the list of zones supported by PHP! See the pages "https://www.php.net/manual/fr/timezones.php" When using these values, this caused a 500 error: "PHP Fatal error: Uncaught Exception: DateTimeZone::__construct(): Unknown or bad timezone (Pacific/Enderbury) " for example => $arraytz = get_tz_array(); foreach ($arraytz as $key => $value) { $date = new DateTime(); $date->setTimezone(new DateTimeZone($value)); } When several zone names could be used for the same time zone, I favored the canonical name (The primary, preferred zone name). See the table "https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" --- htdocs/core/lib/date.lib.php | 51 ++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/htdocs/core/lib/date.lib.php b/htdocs/core/lib/date.lib.php index 479417cc32f..fb57502d6fe 100644 --- a/htdocs/core/lib/date.lib.php +++ b/htdocs/core/lib/date.lib.php @@ -34,31 +34,32 @@ function get_tz_array() { $tzarray = array( - -11=>"Pacific/Midway", - -10=>"Pacific/Fakaofo", - -9=>"America/Anchorage", - -8=>"America/Los_Angeles", - -7=>"America/Dawson_Creek", - -6=>"America/Chicago", - -5=>"America/Bogota", - -4=>"America/Anguilla", - -3=>"America/Araguaina", - -2=>"America/Noronha", - -1=>"Atlantic/Azores", - 0=>"Africa/Abidjan", - 1=>"Europe/Paris", - 2=>"Europe/Helsinki", - 3=>"Europe/Moscow", - 4=>"Asia/Dubai", - 5=>"Asia/Karachi", - 6=>"Indian/Chagos", - 7=>"Asia/Jakarta", - 8=>"Asia/Hong_Kong", - 9=>"Asia/Tokyo", - 10=>"Australia/Sydney", - 11=>"Pacific/Noumea", - 12=>"Pacific/Auckland", - 13=>"Pacific/Enderbury" + -11 => "Pacific/Pago_Pago", + -10 => "Pacific/Honolulu", + -9 => "America/Anchorage", + -8 => "America/Los_Angeles", + -7 => "America/Dawson_Creek", + -6 => "America/Chicago", + -5 => "America/Bogota", + -4 => "America/Asuncion", + -3 => "America/Araguaina", + -2 => "America/Noronha", + -1 => "Atlantic/Azores", + 0 => "Europe/London", + 1 => "Europe/Paris", + 2 => "Europe/Helsinki", + 3 => "Europe/Moscow", + 4 => "Asia/Dubai", + 5 => "Asia/Karachi", + 6 => "Indian/Chagos", + 7 => "Asia/Jakarta", + 8 => "Asia/Hong_Kong", + 9 => "Asia/Tokyo", + 10 => "Australia/Sydney", + 11 => "Pacific/Noumea", + 12 => "Pacific/Auckland", + 13 => "Pacific/Fakaofo", + 14 => "Pacific/Kiritimati" ); return $tzarray; } From 90a5589c58deeb4a4f75959e3a1cc1ca429b051d Mon Sep 17 00:00:00 2001 From: HENRY Florian Date: Thu, 3 Oct 2024 15:39:32 +0200 Subject: [PATCH 49/75] fix: php warning (#31244) --- htdocs/core/lib/admin.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index 705cf304460..1f23e26b877 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -1311,7 +1311,7 @@ function unActivateModule($value, $requiredby = 1) } // Disable modules that depends on module we disable - if (!$ret && $requiredby && is_object($objMod) && is_array($objMod->requiredby)) { + if (!$ret && $requiredby && isset($objMod) && is_object($objMod) && is_array($objMod->requiredby)) { $countrb = count($objMod->requiredby); for ($i = 0; $i < $countrb; $i++) { //var_dump($objMod->requiredby[$i]); From 2d9399d0dbf7648039536164d7c913f501e178ad Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:47:03 +0200 Subject: [PATCH 50/75] Fix phan --- htdocs/admin/system/database.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index db481f82a6a..7ce2f6eb79c 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -41,19 +41,19 @@ if (!$user->admin) { */ if ($action == 'convertutf8unicode') { // Test on permission already done. - $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; + $sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8 COLLATE utf8_unicode_ci"; $db->query($sql); } if ($action == 'convertutf8mb4unicode') { // Test on permission already done. - $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; + $sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"; $db->query($sql); } if ($action == 'convertutf8general') { // Test on permission already done. - $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8 COLLATE utf8_general_ci"; + $sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8 COLLATE utf8_general_ci"; $db->query($sql); } if ($action == 'convertutf8mb4general') { // Test on permission already done. - $sql = "ALTER DATABASE ".$db->sanitize($table[0])." CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"; + $sql = "ALTER DATABASE ".$db->sanitize($db->database_name)." CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"; $db->query($sql); } From 37989570956b52e213e218f0d7615a83cd886dd2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:54:30 +0200 Subject: [PATCH 51/75] Avoid warning --- htdocs/admin/system/database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/system/database.php b/htdocs/admin/system/database.php index 7ce2f6eb79c..1a54938100e 100644 --- a/htdocs/admin/system/database.php +++ b/htdocs/admin/system/database.php @@ -91,8 +91,8 @@ print ''.$langs->trans("DBSortingCharset").' $defaultcollation = $db->getDefaultCollationDatabase(); print dolPrintHTML($defaultcollation); if ($db->type == 'mysqli') { - if ($defaultcollation != $dolibarr_main_db_collation) { - print img_warning('The database default value of collation '.$defaultcollation.' differs from conf setup '.$dolibarr_main_db_collation); + if ($defaultcollation != $conf->db->dolibarr_main_db_collation) { + print img_warning('The database default value of collation '.$defaultcollation.' differs from conf setup '.$conf->db->dolibarr_main_db_collation); } $tooltipexample = "
SHOW VARIABLES LIKE 'collation_database' (cached)
You can avoid cache effect with:
SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '".$db->escape($conf->db->name)."'"; print ' '.$form->textwithpicto('', $langs->transnoentitiesnoconv("HelpMariaDBToGetValue", $tooltipexample.'
'.$langs->transnoentitiesnoconv("HelpMariaDBToGetPossibleValues", "
SHOW COLLATION"))); From 28084d898fcc5fbb93d882405e4c6ff425336abf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 15:55:01 +0200 Subject: [PATCH 52/75] Fix error management --- htdocs/admin/system/dbtable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/system/dbtable.php b/htdocs/admin/system/dbtable.php index 890dc36cd43..52e39552997 100644 --- a/htdocs/admin/system/dbtable.php +++ b/htdocs/admin/system/dbtable.php @@ -62,7 +62,7 @@ if ($action == 'convertutf8') { } $sql = "ALTER TABLE ".$db->sanitize($table)." MODIFY ".$db->sanitize($row[0])." ".$row[1]." COLLATE ".$db->sanitize($collation); // We must not sanitize the $row[1] - $reslq2 = $db->query($sql); + $resql2 = $db->query($sql); if (!$resql2) { setEventMessages($db->lasterror(), null, 'warnings'); } From e07c04c62db8549634a64de9caf5a79c43cdc0ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 3 Oct 2024 16:07:23 +0200 Subject: [PATCH 53/75] fix precommit (#31235) --- htdocs/accountancy/closure/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index 9489e519218..a9cabf4539d 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -402,7 +402,7 @@ if (empty($current_fiscal_period)) { if (empty($count_by_month['total']) && empty($current_fiscal_period['status'])) { $button = '' . $langs->trans("AccountancyClosureClose") . ''; } else { - $button = '' . $langs->trans("AccountancyClosureClose") . ''; + $button = '' . $langs->trans("AccountancyClosureClose") . ''; } print_barre_liste('', '', '', '', '', '', '', -1, '', '', 0, $button, '', 0, 1, 0); From 97005cda37b00e0f10397df7fb1ae3f90c6c5cca Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 16:13:51 +0200 Subject: [PATCH 54/75] Fix warning --- htdocs/ticket/class/ticket.class.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index f2b9f73b070..2d2345e3167 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1897,7 +1897,7 @@ class Ticket extends CommonObject // If there is some files, we must now link them to the event, so we can show them per event. foreach ($attachedfiles['paths'] as $key => $filespath) { // Disabled the move into another directory, Files for a ticket should be stored into ticket directory. It generates too much troubles. - //$destdir = $conf->agenda->dir_output.'/'.$actionid; + $destdir = $conf->ticket->dir_output.'/'.$this->ref; //$destfile = $destdir.'/'.$attachedfiles['names'][$key]; //if (dol_mkdir($destdir) >= 0) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; @@ -1908,7 +1908,7 @@ class Ticket extends CommonObject $destdir = preg_replace('/[\\/]$/', '', $destdir); $destdir = preg_replace('/^[\\/]/', '', $destdir); - $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); + $result = $ecmfile->fetch(0, '', $destdir.'/'.$attachedfiles['names'][$key]); // TODO We must add a column into ecm_files table agenda_id to store the ID of event. // $ecmfile->agenda_id = $actionid; @@ -1917,9 +1917,11 @@ class Ticket extends CommonObject //require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; //$ecmfile->share = getRandomPassword(true); - $result = $ecmfile->update($user); - if ($result < 0) { - setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); + if ($result > 0) { + $result = $ecmfile->update($user); + if ($result < 0) { + setEventMessages($ecmfile->error, $ecmfile->errors, 'warnings'); + } } } //} From a333af2ceb10e4db2a48f7b601b87ecd356e47ab Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Thu, 3 Oct 2024 16:19:04 +0200 Subject: [PATCH 55/75] fix missing token for links (#31225) --- htdocs/asset/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/bom/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/comm/propal/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/commande/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/compta/facture/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/delivery/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/mrp/tpl/linkedobjectblock.tpl.php | 4 ++-- htdocs/reception/tpl/linkedobjectblock.tpl.php | 2 +- htdocs/ticket/tpl/linkedobjectblock.tpl.php | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/htdocs/asset/tpl/linkedobjectblock.tpl.php b/htdocs/asset/tpl/linkedobjectblock.tpl.php index 0e8d62a6921..59c3579b45f 100644 --- a/htdocs/asset/tpl/linkedobjectblock.tpl.php +++ b/htdocs/asset/tpl/linkedobjectblock.tpl.php @@ -48,7 +48,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { echo ''; echo ''.$langs->trans("Asset"); if (!empty($showImportButton) && getDolGlobalString('MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES')) { - print ' '; echo ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/bom/tpl/linkedobjectblock.tpl.php b/htdocs/bom/tpl/linkedobjectblock.tpl.php index 3ededc6bffa..18dcbe2fa2e 100644 --- a/htdocs/bom/tpl/linkedobjectblock.tpl.php +++ b/htdocs/bom/tpl/linkedobjectblock.tpl.php @@ -49,7 +49,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { echo ''; echo ''.$langs->trans("Bom"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { - print ' '; echo ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php index 05692d23ae0..af536bf4792 100644 --- a/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php +++ b/htdocs/comm/propal/tpl/linkedobjectblock.tpl.php @@ -55,7 +55,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { print ''.$langs->trans("Proposal"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { $url = DOL_URL_ROOT.'/comm/propal/card.php?id='.$objectlink->id; - print ' '; + print ' '; } print ''; print ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/commande/tpl/linkedobjectblock.tpl.php b/htdocs/commande/tpl/linkedobjectblock.tpl.php index 4d37b71e10e..a23a10bcf86 100644 --- a/htdocs/commande/tpl/linkedobjectblock.tpl.php +++ b/htdocs/commande/tpl/linkedobjectblock.tpl.php @@ -48,7 +48,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { echo ''; echo ''.$langs->trans("CustomerOrder"); if (!empty($showImportButton) && getDolGlobalString('MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES')) { - print ' '; echo ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php index fa1a5bea7c7..e5828a669d8 100644 --- a/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php +++ b/htdocs/compta/facture/tpl/linkedobjectblock.tpl.php @@ -68,7 +68,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { break; } if (!empty($showImportButton) && getDolGlobalString('MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES')) { - print ' '; print ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/delivery/tpl/linkedobjectblock.tpl.php b/htdocs/delivery/tpl/linkedobjectblock.tpl.php index 16eb40fc209..37318afe648 100644 --- a/htdocs/delivery/tpl/linkedobjectblock.tpl.php +++ b/htdocs/delivery/tpl/linkedobjectblock.tpl.php @@ -49,7 +49,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { echo ''; echo ''.$langs->trans("Delivery"); if (!empty($showImportButton) && getDolGlobalString('MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES')) { - print ' '; echo ''.$objectlink->getNomUrl(1).''; diff --git a/htdocs/mrp/tpl/linkedobjectblock.tpl.php b/htdocs/mrp/tpl/linkedobjectblock.tpl.php index 094a6b0c21f..1d20906b0f1 100644 --- a/htdocs/mrp/tpl/linkedobjectblock.tpl.php +++ b/htdocs/mrp/tpl/linkedobjectblock.tpl.php @@ -56,7 +56,7 @@ if ($object->element == 'mo') { echo ''; echo '' . $langs->trans("ManufacturingOrder"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { - print ' '; echo '' . $objectlink->getNomUrl(1) . ''; @@ -102,7 +102,7 @@ if ($object->element == 'mo') { print ''.$langs->trans("ManufacturingOrder"); if (!empty($showImportButton) && $conf->global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { $url = DOL_URL_ROOT.'/mrp/mo_card.php?id='.$objectlink->id; - print ' '; + print ' '; } print ''; diff --git a/htdocs/reception/tpl/linkedobjectblock.tpl.php b/htdocs/reception/tpl/linkedobjectblock.tpl.php index b9009d858bc..3d2425f967b 100644 --- a/htdocs/reception/tpl/linkedobjectblock.tpl.php +++ b/htdocs/reception/tpl/linkedobjectblock.tpl.php @@ -51,7 +51,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { trans("Reception"); ?> global->MAIN_ENABLE_IMPORT_LINKED_OBJECT_LINES) { - print ' getNomUrl(1); ?> diff --git a/htdocs/ticket/tpl/linkedobjectblock.tpl.php b/htdocs/ticket/tpl/linkedobjectblock.tpl.php index e70395eb79b..902c00ae5a0 100644 --- a/htdocs/ticket/tpl/linkedobjectblock.tpl.php +++ b/htdocs/ticket/tpl/linkedobjectblock.tpl.php @@ -47,7 +47,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { trans("Ticket"); ?> getNomUrl(0, '', 0, 1).'&action=selectlines" data-element="'.$objectlink->element.'" data-id="'.$objectlink->id.'" > getNomUrl(1); ?> From 86e34d8513ba5a33463c2e55ed70ac028e3842ff Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 16:20:56 +0200 Subject: [PATCH 56/75] Fix typo --- htdocs/emailcollector/class/emailcollector.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index 66e02b5ad88..cfa1c65e93c 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -2660,7 +2660,7 @@ class EmailCollector extends CommonObject $thirdpartystatic->fetch($result); - $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id)." and name ".dol_escape_all($thirdpartystatic->name); + $operationslog .= '
Thirdparty already exists with id = '.dol_escape_htmltag($thirdpartystatic->id)." and name ".dol_escape_htmltag($thirdpartystatic->name); } } } From b85b826b18c099f18b3b6aa5a782aa10882ab2e8 Mon Sep 17 00:00:00 2001 From: Hasanuzzaman Sattar Date: Thu, 3 Oct 2024 20:03:18 +0530 Subject: [PATCH 57/75] FIX#31241 (#31245) --- .../core/triggers/interface_50_modTicket_TicketEmail.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index b5295c891f7..faa556da235 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -191,7 +191,7 @@ class InterfaceTicketEmail extends DolibarrTriggers } // Send email to customer - if (!getDolGlobalString('TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) { + if (!getDolGlobalInt('TICKET_DISABLE_CUSTOMER_MAILS') && empty($object->context['disableticketemail']) && $object->notify_tiers_at_create) { $sendto = ''; // if contact selected send to email's contact else send to email's thirdparty From a272d929a59cf3208192f9cf11826aa7279b0931 Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Thu, 3 Oct 2024 17:14:28 +0200 Subject: [PATCH 58/75] Fix $ in key (#31215) --- htdocs/core/lib/functions.lib.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 69f97d0d929..baf24a6f528 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -12309,9 +12309,9 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $text = $button['text'] ?? ''; $actionType = $button['actionType'] ?? ''; $tmpUrl = DOL_URL_ROOT.$button['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $id = $button['$id'] ?? ''; + $id = $button['id'] ?? ''; $userRight = $button['perm'] ?? 1; - $params = $button['$params'] ?? []; + $params = $button['params'] ?? []; $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $params); } From 88b488cfbbe5634956f564488d1b25359dbe3ae6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 17:23:29 +0200 Subject: [PATCH 59/75] Fix for better compatibility --- htdocs/core/lib/functions.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 69f97d0d929..3c69aaf7679 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -12346,7 +12346,7 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = // Here, $url is a simple link - if (!empty($params['isDropdown'])) { + if (!empty($params['isDropdown']) || !empty($params['isDropDown'])) { $class = "dropdown-item"; } else { $class = 'butAction'; From e412dbbe052004ef4757e8ec2f1206c76ef8294d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 19:30:06 +0200 Subject: [PATCH 60/75] Merge manually fix of #31217 + other fix for use by external modules --- htdocs/core/js/lib_head.js.php | 2 +- htdocs/core/lib/functions.lib.php | 53 +++++++++++++++++++++--------- htdocs/projet/card.php | 5 ++- htdocs/theme/eldy/dropdown.inc.php | 2 +- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/htdocs/core/js/lib_head.js.php b/htdocs/core/js/lib_head.js.php index f50649ba55b..b498bc3fdbb 100644 --- a/htdocs/core/js/lib_head.js.php +++ b/htdocs/core/js/lib_head.js.php @@ -1321,7 +1321,7 @@ jQuery(document).ready(function() { jQuery(document).ready(function() { - jQuery(".butAction.dropdown-toggle").on("click", function(event) { + jQuery(document).on("click", ".butAction.dropdown-toggle", function(event) { console.log("Click on .butAction.dropdown-toggle"); var parentholder = jQuery(".butAction.dropdown-toggle").closest(".dropdown"); var offset = parentholder.offset(); diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 9843f3bce5f..17671f6b179 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1335,7 +1335,10 @@ function dol_include_once($relpath, $classname = '') * Return path of url or filesystem. Can check into alternate dir or alternate dir + main dir depending on value of $returnemptyifnotfound. * * @param string $path Relative path to file (if mode=0) or relative url (if mode=1). Ie: mydir/myfile, ../myfile - * @param int $type 0=Used for a Filesystem path, 1=Used for an URL path (output relative), 2=Used for an URL path (output full path using same host that current url), 3=Used for an URL path (output full path using host defined into $dolibarr_main_url_root of conf file) + * @param int $type 0=Used for a Filesystem path, + * 1=Used for an URL path (output relative), + * 2=Used for an URL path (output full path using same host that current url), + * 3=Used for an URL path (output full path using host defined into $dolibarr_main_url_root of conf file) * @param int $returnemptyifnotfound 0:If $type==0 and if file was not found into alternate dir, return default path into main dir (no test on it) * 1:If $type==0 and if file was not found into alternate dir, return empty string * 2:If $type==0 and if file was not found into alternate dir, test into main dir, return default path if found, empty string if not found @@ -1404,7 +1407,7 @@ function dol_buildpath($path, $type = 0, $returnemptyifnotfound = 0) //print $key.'-'.$dirroot.'/'.$path.'-'.$conf->file->dol_url_root[$type].'
'."\n"; //if (file_exists($dirroot.'/'.$regs[1])) { if (@file_exists($dirroot.'/'.$regs[1])) { // avoid [php:warn] - if ($type == 1) { + if ($type == 1 || $type == 4) { $res = (preg_match('/^http/i', $conf->file->dol_url_root[$key]) ? '' : DOL_URL_ROOT).$conf->file->dol_url_root[$key].'/'.$path; } if ($type == 2) { @@ -12256,13 +12259,13 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st * @param string $text Optional : short label on button. Can be escaped HTML content or full simple text. * @param string $actionType 'default', 'danger', 'email', 'clone', 'cancel', 'delete', ... * - * @param string|array $url Url for link or array of subbutton description + * @param string|array $url Url for link or array of subbutton description * - * Example when an array is used: $arrayforbutaction = array( - * 10 => array('lang'=>'propal', 'enabled'=>isModEnabled("propal"), 'perm'=>$user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url'=>'/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * 20 => array('lang'=>'orders', 'enabled'=>isModEnabled("order"), 'perm'=>$user->hasRight('commande', 'creer'), 'label' => 'CreateOrder', 'url'=>'/commande/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * 30 => array('lang'=>'bills', 'enabled'=>isModEnabled("invoice"), 'perm'=>$user->hasRight('facture', 'creer'), 'label' => 'CreateBill', 'url'=>'/compta/facture/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - * ); + * Example when an array is used: + * $arrayforbutaction = array( + * 10 => array('attr' => array('class'=>''), 'lang'=>'propal', 'enabled'=>isModEnabled("propal"), 'perm'=>$user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url'=>'/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), + * 20 => array('attr' => array('class'=>''), 'lang'=>'mymodule', 'enabled'=>isModEnabled("mymodule"), 'perm'=>$user->hasRight('mymodule', 'write'), 'label' => 'MyModuleAction', 'urlroot'=>dol_build_patch('/mymodule/mypage.php?action=create')), + * ); ); * @param string $id Attribute id of action button. Example 'action-delete'. This can be used for full ajax confirm if this code is reused into the ->formconfirm() method. * @param int|boolean $userRight User action right * // phpcs:disable @@ -12279,7 +12282,7 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st * 'cancel-btn-label' => '', // Override label of cancel button, if empty default label use "CloseDialog" lang key * 'content' => '', // Override text of content, if empty default content use "ConfirmBtnCommonContent" lang key * 'modal' => true, // true|false to display dialog as a modal (with dark background) - * 'isDropDrown' => false, // true|false to display dialog as a dropdown (with dark background) + * 'isDropDrown' => false, // true|false to display dialog as a dropdown list (css dropdown-item with dark background) * ], * ] * // phpcs:enable @@ -12311,9 +12314,9 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $tmpUrl = DOL_URL_ROOT.$button['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); $id = $button['id'] ?? ''; $userRight = $button['perm'] ?? 1; - $params = $button['params'] ?? []; + $button['params'] = $button['params'] ?? []; - $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $params); + $out .= dolGetButtonAction($label, $text, $actionType, $tmpUrl, $id, $userRight, $button['params']); } return $out; } @@ -12326,8 +12329,20 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = if (!empty($subbutton['lang'])) { $langs->load($subbutton['lang']); } - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm'], array('isDropDown' => true)); + + if (!empty($subbutton['urlroot'])) { + $tmpurl = $subbutton['urlroot'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + } else { + $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + } + + $subbuttonparam = array(); + if (!empty($subbutton['attr'])) { + $subbuttonparam['attr'] = $subbutton['attr']; + } + $subbuttonparam['isDropDown'] = (empty($params['isDropDown']) ? $subbutton['isDropDown'] : $params['isDropDown']); + + $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, $subbutton['id'] ?? '', $subbutton['perm'], $subbuttonparam); } $out .= "
"; $out .= ""; @@ -12336,8 +12351,14 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = if (!empty($subbutton['lang'])) { $langs->load($subbutton['lang']); } - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); - $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm']); + + if (!empty($subbutton['urlroot'])) { + $tmpurl = $subbutton['urlroot'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + } else { + $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + } + + $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm'], $params); } } @@ -12346,7 +12367,7 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = // Here, $url is a simple link - if (!empty($params['isDropdown']) || !empty($params['isDropDown'])) { + if (!empty($params['isDropdown']) || !empty($params['isDropDown'])) { // Use the dropdown-item style (not for action button) $class = "dropdown-item"; } else { $class = 'butAction'; diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php index 2f0fa2d7e6a..1b17aff16af 100644 --- a/htdocs/projet/card.php +++ b/htdocs/projet/card.php @@ -1648,9 +1648,11 @@ if ($action == 'create' && $user->hasRight('projet', 'creer')) { } } + // Buttons Create if (!getDolGlobalString('PROJECT_HIDE_CREATE_OBJECT_BUTTON')) { $arrayforbutaction = array( + //1 => array('lang' => 'propal', 'enabled' => 1, 'perm' => 1, 'label' => 'XXX'), 10 => array('lang' => 'propal', 'enabled' => isModEnabled("propal"), 'perm' => $user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url' => '/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), 20 => array('lang' => 'orders', 'enabled' => isModEnabled("order"), 'perm' => $user->hasRight('commande', 'creer'), 'label' => 'CreateOrder', 'url' => '/commande/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), 30 => array('lang' => 'bills', 'enabled' => isModEnabled("invoice"), 'perm' => $user->hasRight('facture', 'creer'), 'label' => 'CreateBill', 'url' => '/compta/facture/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), @@ -1660,10 +1662,11 @@ if ($action == 'create' && $user->hasRight('projet', 'creer')) { 70 => array('lang' => 'interventions', 'enabled' => isModEnabled("intervention"), 'perm' => $user->hasRight('fichinter', 'creer'), 'label' => 'AddIntervention', 'url' => '/fichinter/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), 80 => array('lang' => 'contracts', 'enabled' => isModEnabled("contract"), 'perm' => $user->hasRight('contrat', 'creer'), 'label' => 'AddContract', 'url' => '/contrat/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), 90 => array('lang' => 'trips', 'enabled' => isModEnabled("expensereport"), 'perm' => $user->hasRight('expensereport', 'creer'), 'label' => 'AddTrip', 'url' => '/expensereport/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), - 100 => array('lang' => 'donations', 'enabled' => isModEnabled("don"), 'perm' => $user->hasRight('don', 'creer'), 'label' => 'AddDonation', 'url' => '/don/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), + 100 => array('lang' => 'donations', 'enabled' => isModEnabled("don"), 'perm' => $user->hasRight('don', 'creer'), 'label' => 'AddDonation', 'url' => '/don/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), ); $params = array('backtopage' => $_SERVER["PHP_SELF"].'?id='.$object->id); + //$params = array('backtopage' => $_SERVER["PHP_SELF"].'?id='.$object->id, 'isDropDown' => true); print dolGetButtonAction('', $langs->trans("Create"), 'default', $arrayforbutaction, '', 1, $params); } diff --git a/htdocs/theme/eldy/dropdown.inc.php b/htdocs/theme/eldy/dropdown.inc.php index b59787308ed..cef22be8f12 100644 --- a/htdocs/theme/eldy/dropdown.inc.php +++ b/htdocs/theme/eldy/dropdown.inc.php @@ -362,7 +362,7 @@ a.dropdown-item { display: block !important; box-sizing: border-box; width: 100%; - padding: .3em 1.5em .4em 1em; + padding: .5em 1.5em .5em 1em; clear: both; font-weight: 400; color: #212529 !important; From a6c93a5306f295451531cd71e7961ebc741705fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 3 Oct 2024 19:31:20 +0200 Subject: [PATCH 61/75] Update windows-ci.yml for branch 20.0 (#31258) waiting official fix for action --- .github/workflows/windows-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 9dbdf1b5ee4..10e254b55fb 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -37,7 +37,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Setup MariaDB - uses: ankane/setup-mariadb@v1 + uses: frederic34/setup-mariadb@v1 with: # mariadb-version: ${{ matrix.mariadb-version }} database: travis # Specify your database name From eebb16c693f5f7b206340da09f0b4753ff680406 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 20:08:09 +0200 Subject: [PATCH 62/75] Redice cyclomatic complexity --- htdocs/core/lib/functions.lib.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 17671f6b179..07dcbf87086 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -1407,13 +1407,11 @@ function dol_buildpath($path, $type = 0, $returnemptyifnotfound = 0) //print $key.'-'.$dirroot.'/'.$path.'-'.$conf->file->dol_url_root[$type].'
'."\n"; //if (file_exists($dirroot.'/'.$regs[1])) { if (@file_exists($dirroot.'/'.$regs[1])) { // avoid [php:warn] - if ($type == 1 || $type == 4) { + if ($type == 1) { $res = (preg_match('/^http/i', $conf->file->dol_url_root[$key]) ? '' : DOL_URL_ROOT).$conf->file->dol_url_root[$key].'/'.$path; - } - if ($type == 2) { + } elseif ($type == 2) { $res = (preg_match('/^http/i', $conf->file->dol_url_root[$key]) ? '' : DOL_MAIN_URL_ROOT).$conf->file->dol_url_root[$key].'/'.$path; - } - if ($type == 3) { + } elseif ($type == 3) { /*global $dolibarr_main_url_root;*/ // Define $urlwithroot From 9af212a5427afa019f1d0b57dfbb5f0813fcbd08 Mon Sep 17 00:00:00 2001 From: cbeasley-sbb Date: Thu, 3 Oct 2024 13:33:02 -0500 Subject: [PATCH 63/75] Update ticket.class.php Bug-fix Issue #31206 (#31208) Fix Issue #31206 for the v.18 branch because unrelated tests failing on develop branch. --- htdocs/ticket/class/ticket.class.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index b14a71c6b07..6d1ee87f93e 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1575,6 +1575,8 @@ class Ticket extends CommonObject $this->oldcopy = dol_clone($this); $this->db->begin(); + $oldStatus = $this->fk_statut; + $this->fk_statut = Ticket::STATUS_READ; $sql = "UPDATE ".MAIN_DB_PREFIX."ticket"; $sql .= " SET fk_statut = ".Ticket::STATUS_READ.", date_read = '".$this->db->idate(dol_now())."'"; @@ -1583,13 +1585,14 @@ class Ticket extends CommonObject dol_syslog(get_class($this)."::markAsRead"); $resql = $this->db->query($sql); if ($resql) { - $this->actionmsg = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); - $this->actionmsg2 = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); + $this->context['actionmsg'] = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); + $this->context['actionmsg2'] = $langs->trans('TicketLogMesgReadBy', $this->ref, $user->getFullName($langs)); - if (!$error && !$notrigger) { + if (!$notrigger) { // Call trigger $result = $this->call_trigger('TICKET_MODIFY', $user); if ($result < 0) { + $this->fk_statut = $oldStatus; $error++; } // End call triggers @@ -1599,12 +1602,14 @@ class Ticket extends CommonObject $this->db->commit(); return 1; } else { + $this->fk_statut = $oldStatus; $this->db->rollback(); - $this->error = join(',', $this->errors); + $this->error = implode(',', $this->errors); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); return -1; } } else { + $this->fk_statut = $oldStatus; $this->db->rollback(); $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); From 4c695be0c890e196f621d8472460d62f8d9c52b5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 3 Oct 2024 20:42:36 +0200 Subject: [PATCH 64/75] Merge branch '20.0' of git@github.com:Dolibarr/dolibarr.git into 20.0 --- htdocs/ticket/class/ticket.class.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/htdocs/ticket/class/ticket.class.php b/htdocs/ticket/class/ticket.class.php index ed5a1bdb274..219feb82a0f 100644 --- a/htdocs/ticket/class/ticket.class.php +++ b/htdocs/ticket/class/ticket.class.php @@ -1710,8 +1710,8 @@ class Ticket extends CommonObject $this->oldcopy = dol_clone($this, 2); $this->db->begin(); - $oldStatus = $this->fk_statut; - $this->fk_statut = Ticket::STATUS_READ; + + $this->status = Ticket::STATUS_READ; $sql = "UPDATE ".MAIN_DB_PREFIX."ticket"; $sql .= " SET fk_statut = ".Ticket::STATUS_READ.", date_read = '".$this->db->idate(dol_now())."'"; @@ -1727,7 +1727,6 @@ class Ticket extends CommonObject // Call trigger $result = $this->call_trigger('TICKET_MODIFY', $user); if ($result < 0) { - $this->fk_statut = $oldStatus; $error++; } // End call triggers @@ -1737,14 +1736,16 @@ class Ticket extends CommonObject $this->db->commit(); return 1; } else { - $this->fk_statut = $oldStatus; + $this->status = $this->oldcopy->status; + $this->db->rollback(); $this->error = implode(',', $this->errors); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); return -1; } } else { - $this->fk_statut = $oldStatus; + $this->status = $this->oldcopy->status; + $this->db->rollback(); $this->error = $this->db->lasterror(); dol_syslog(get_class($this)."::markAsRead ".$this->error, LOG_ERR); From d31baf0b991ba3f7d1934ae864de26215b1b0ed8 Mon Sep 17 00:00:00 2001 From: MDW Date: Fri, 4 Oct 2024 08:50:09 +0200 Subject: [PATCH 65/75] (Re)store mariadb setup executable from/to cache (#31263) # (Re)store mariadb setup executable from/to cache After adding cachability for setup-mariadb on the fork of that action, use the feature --- .github/workflows/windows-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index 10e254b55fb..e245a67683e 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -70,6 +70,7 @@ jobs: path: | ./db_init.sql ./db_init.sql.md5 + ./.cache/mariadb key: ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}-${{ github.run_id }} restore-keys: | ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}- @@ -189,3 +190,4 @@ jobs: path: | ./db_init.sql ./db_init.sql.md5 + ./.cache/mariadb From 7ba663b89dd21f7046fc06dbe5a9ddb4aecd3bf3 Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Fri, 4 Oct 2024 08:52:25 +0200 Subject: [PATCH 66/75] Fix php 8 warnings (#31254) Co-authored-by: Laurent Destailleur --- htdocs/fourn/product/list.php | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/htdocs/fourn/product/list.php b/htdocs/fourn/product/list.php index e0dd5a9af29..14e213e01e8 100644 --- a/htdocs/fourn/product/list.php +++ b/htdocs/fourn/product/list.php @@ -39,6 +39,7 @@ $langs->loadLangs(array('products', 'suppliers')); // Get Parameters $action = GETPOST('action', 'aZ09') ? GETPOST('action', 'aZ09') : 'view'; // The action 'create'/'add', 'edit'/'update', 'view', ... +$massaction = GETPOST('massaction', 'alpha'); $toselect = GETPOST('toselect', 'array:int'); // Array of ids of elements selected into a list $optioncss = GETPOST('optioncss', 'alpha'); $mode = GETPOST('mode', 'aZ'); // The output mode ('list', 'kanban', 'hierarchy', 'calendar', ...) @@ -226,7 +227,7 @@ if (!$resql) { $num = $db->num_rows($resql); $i = 0; - +$help_url = ''; if ($num == 1 && (GETPOST("mode") == 'search')) { $objp = $db->fetch_object($resql); header("Location: ".DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); @@ -301,10 +302,11 @@ print ''; print ''; print ''; +$moreforfilter = ''; $topicmail = "Information"; $modelmail = "product"; $objecttmp = new Product($db); -$trackid = 'prod'.$object->id; +$trackid = 'prod'.$productstatic->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; @@ -341,7 +343,7 @@ print ''; print ''; // add filters from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $object, $action); +$reshook = $hookmanager->executeHooks('printFieldPreListTitle', $parameters, $productstatic, $action); if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } @@ -355,6 +357,10 @@ if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { } print ''."\n"; +$totalarray = [ + 'nbfield' => 0 +]; + // Fields title label // -------------------------------------------------------------------- print ''; @@ -372,7 +378,7 @@ print_liste_field_titre("QtyMin", $_SERVER["PHP_SELF"], "ppf.quantity", $param, print_liste_field_titre("UnitPrice", $_SERVER["PHP_SELF"], "ppf.unitprice", $param, "", '', $sortfield, $sortorder, 'right '); // add header cells from hooks $parameters = array(); -$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object, $action); +$reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $productstatic, $action); if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } @@ -406,17 +412,17 @@ while ($i < $imaxinloop) { $productstatic->barcode = $objp->barcode; $productstatic->barcode_type = $objp->fk_barcode_type; - print ''; + print ''; // Action column if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { print ''; if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined $selected = 0; - if (in_array($object->id, $arrayofselected)) { + if (in_array($productstatic->id, $arrayofselected)) { $selected = 1; } - print ''; + print ''; } print ''; if (!$i) { @@ -459,10 +465,10 @@ while ($i < $imaxinloop) { print ''; if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined $selected = 0; - if (in_array($object->id, $arrayofselected)) { + if (in_array($productstatic->id, $arrayofselected)) { $selected = 1; } - print ''; + print ''; } print ''; if (!$i) { @@ -491,7 +497,7 @@ if ($num == 0) { $db->free($resql); $parameters = array('arrayfields' => $arrayfields, 'sql' => $sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $productstatic, $action); // Note that $action and $productstatic may have been modified by hook print $hookmanager->resPrint; print ''."\n"; From f287d100a367a84c262a0f35b86c45e4cfa4cc5a Mon Sep 17 00:00:00 2001 From: atm-irvine <165771178+atm-irvine@users.noreply.github.com> Date: Fri, 4 Oct 2024 11:49:44 +0200 Subject: [PATCH 67/75] Use <= 0 instead of ! because delete method returns -1 or 1 (#31268) * Use <= 0 instead of ! because delete method returns -1 or 1 * Added contact * Removed user from parameters --- htdocs/categories/class/api_categories.class.php | 4 ++-- htdocs/societe/class/api_contacts.class.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index e10371f87b6..77356ba2a87 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -267,8 +267,8 @@ class Categories extends DolibarrApi throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if (!$this->category->delete(DolibarrApiAccess::$user)) { - throw new RestException(401, 'error when delete category'); + if ($this->category->delete(DolibarrApiAccess::$user) <= 0) { + throw new RestException(500, 'Error when delete category : ' . $this->category->error); } return array( diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index afd6c5807a5..d8839c9a122 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -348,7 +348,7 @@ class Contacts extends DolibarrApi * Delete contact * * @param int $id Contact ID - * @return integer + * @return array[] */ public function delete($id) { @@ -364,7 +364,17 @@ class Contacts extends DolibarrApi throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } $this->contact->oldcopy = clone $this->contact; - return $this->contact->delete(); + + if ($this->contact->delete() <= 0) { + throw new RestException(500, 'Error when delete contact ' . $this->contact->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Contact deleted' + ) + ); } /** From 934d291194fc54b8296cb7710860b3b1f3cf58dd Mon Sep 17 00:00:00 2001 From: HENRY Florian Date: Fri, 4 Oct 2024 18:45:54 +0200 Subject: [PATCH 68/75] fix: action/card.php do not display priority field if hidden conf not activated (#31277) --- htdocs/comm/action/card.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 5f5da42d233..2b004f0ff10 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -2511,9 +2511,11 @@ if ($id > 0) { } // Priority - print ''.$langs->trans("Priority").''; - print($object->priority ? $object->priority : ''); - print ''; + if (getDolGlobalString('AGENDA_SUPPORT_PRIORITY_IN_EVENTS')) { + print '' . $langs->trans("Priority") . ''; + print($object->priority ? $object->priority : ''); + print ''; + } // Object linked (if link is for thirdparty, contact, project it is a recording error. We should not have links in link table // for such objects because there is already a dedicated field into table llx_actioncomm. From 63f6d0aa43e0a48a356c719dee53fd11b6737899 Mon Sep 17 00:00:00 2001 From: Joachim Kueter Date: Sun, 6 Oct 2024 13:53:16 +0200 Subject: [PATCH 69/75] Fix: Number of decimals for stock values ignores configuration (#31285) * Fix: Number of decimals for stock values ignores configuration In the select filed for adding a new line for a proposal/invoice/... product as a line, the stock level is always printed with exactly two decimals. The number of decimals should be controlled by the existing global variable MAIN_MAX_DECIMALS_STOCK, but it is not taken into account: Building the stock level with the function price from the function price2num, which uses the configured number of decimals always lead to exactly two decimals. * Fixed patch according to suggestion. --- htdocs/core/class/html.form.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index a4b050def56..aaf856152b7 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -3334,7 +3334,7 @@ class Form if (isModEnabled('stock') && isset($objp->stock) && ($objp->fk_product_type == Product::TYPE_PRODUCT || getDolGlobalString('STOCK_SUPPORTS_SERVICES'))) { if ($user->hasRight('stock', 'lire')) { - $opt .= ' - ' . $langs->trans("Stock") . ': ' . price(price2num($objp->stock, 'MS')); + $opt .= ' - ' . $langs->trans("Stock") . ': ' . price(price2num($objp->stock, 'MS'), 0, $langs, 0, 0); if ($objp->stock > 0) { $outval .= ' - '; From d8a980444a3d6f834fd2e564f1d92a03e8adaa52 Mon Sep 17 00:00:00 2001 From: MDW Date: Sun, 6 Oct 2024 13:55:48 +0200 Subject: [PATCH 70/75] Flow: Setup mariadb after restoring cache (#31274) # Flow: Setup mariadb after restoring cache To use the cache, it has to be restored first. The original order of actions did not enable the reuse of the mariadb executable from cache --- .github/workflows/windows-ci.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/windows-ci.yml b/.github/workflows/windows-ci.yml index e245a67683e..e7d330324dd 100644 --- a/.github/workflows/windows-ci.yml +++ b/.github/workflows/windows-ci.yml @@ -36,11 +36,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup MariaDB - uses: frederic34/setup-mariadb@v1 - with: - # mariadb-version: ${{ matrix.mariadb-version }} - database: travis # Specify your database name - name: Setup PHP uses: shivammathur/setup-php@v2 with: @@ -79,6 +74,12 @@ jobs: ${{ env.KEY_ROOT }}-${{ env.HASH }}- ${{ env.KEY_ROOT }}- + - name: Setup MariaDB + uses: frederic34/setup-mariadb@v1 + with: + # mariadb-version: ${{ matrix.mariadb-version }} + database: travis # Specify your database name + - name: Create local php.ini with open_basedir restrictions shell: cmd # Objective: separate step, and before database initialisation to verify open_basedir restrictions From 63d4b5e3d8c22f76f5e4ca46fb3fc45a8dcf771b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 6 Oct 2024 22:17:26 +0200 Subject: [PATCH 71/75] FIX Backport fix fatal error on price with some truncating setup --- htdocs/core/lib/functions.lib.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 785889eab78..0218301af75 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -5931,9 +5931,10 @@ function price($amount, $form = 0, $outlangs = '', $trunc = 1, $rounding = -1, $ $nbdecimal = dol_strlen($decpart); } // Si on depasse max - if ($trunc && $nbdecimal > $conf->global->MAIN_MAX_DECIMALS_SHOWN) { - $nbdecimal = $conf->global->MAIN_MAX_DECIMALS_SHOWN; - if (preg_match('/\.\.\./i', $conf->global->MAIN_MAX_DECIMALS_SHOWN)) { + $max_nbdecimal = (int) str_replace('...', '', getDolGlobalString('MAIN_MAX_DECIMALS_SHOWN')); + if ($trunc && $nbdecimal > $max_nbdecimal) { + $nbdecimal = $max_nbdecimal; + if (preg_match('/\.\.\./i', getDolGlobalString('MAIN_MAX_DECIMALS_SHOWN'))) { // Si un affichage est tronque, on montre des ... $end = '...'; } From 0811ff5f07f7a5fce258e2897511111bf27e654b Mon Sep 17 00:00:00 2001 From: Mikko Virtanen <18483074+mikko80@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:52:12 +0300 Subject: [PATCH 72/75] FIX dolFICalculatePaymentReference for Finland in functions_fi.lib.php (#31281) * Update functions_fi.lib.php Fix calculation from some base numbers * Update functions_fi.lib.php --- htdocs/core/lib/functions_fi.lib.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/htdocs/core/lib/functions_fi.lib.php b/htdocs/core/lib/functions_fi.lib.php index 75d28b51975..e09f49bd589 100644 --- a/htdocs/core/lib/functions_fi.lib.php +++ b/htdocs/core/lib/functions_fi.lib.php @@ -1,5 +1,6 @@ + * Copyright (C) 2024 Mikko Virtanen * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,16 +38,16 @@ function dolFICalculatePaymentReference($invoice_number, $statut, $use_rf) { if ($statut >= 1) { $invoice_number = preg_replace('/[^0-9]/', '', $invoice_number); // Keep only numbers - $invoice_number = ltrim($invoice_number, '0'); //Remove any leading zero or zeros - $invoice_number = strrev($invoice_number); // Reverse the reference number - $coefficients = array(7, 3, 1, 7, 3); // Define the coefficient numbers + $invoice_number = ltrim($invoice_number, '0'); // Remove leading zeros + $coefficients = array(7, 3, 1); // Define the coefficient numbers (rotating 7, 3, 1) $sum = 0; $stlen_invoice_number = (int) strlen($invoice_number); - for ($i = 0; $i < $stlen_invoice_number; $i++) { // Calculate the sum using coefficients - $sum += (int) $invoice_number[$i] * $coefficients[$i % 5]; + // Calculate the weighted sum from right to left + for ($i = 0; $i < $stlen_invoice_number; $i++) { + $sum += (int) $invoice_number[$stlen_invoice_number - $i - 1] * $coefficients[$i % 3]; } $check_digit = (10 - ($sum % 10)) % 10; // Calculate the check digit - $bank_reference_fi = strrev($invoice_number) . $check_digit; // Concatenate the Reversed reference number and the check digit + $bank_reference_fi = $invoice_number . $check_digit; // Concatenate the reference number and the check digit if ($use_rf) { // SEPA RF creditor reference $reference_with_suffix = $bank_reference_fi . "271500"; // Append "271500" to the end of the payment reference number $remainder = (int) bcmod($reference_with_suffix, '97'); // Calculate the remainder when dividing by 97 From f5262ceefade921c23d9c03b952c6a1f72ad00b1 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Oct 2024 15:25:19 +0200 Subject: [PATCH 73/75] Prepare 20.0.1 --- htdocs/filefunc.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index 2a3c0a7e4e8..ec66d6cf58b 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -35,7 +35,7 @@ if (!defined('DOL_APPLICATION_TITLE')) { define('DOL_APPLICATION_TITLE', 'Dolibarr'); } if (!defined('DOL_VERSION')) { - define('DOL_VERSION', '20.0.0'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c + define('DOL_VERSION', '20.0.1'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c } if (!defined('EURO')) { From 728ca6a2e6c6a84343387103891656778cd3012f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 7 Oct 2024 15:28:48 +0200 Subject: [PATCH 74/75] Prepare 20.0.1 --- ChangeLog | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6f2c15dfe29..ee320d33ba3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,56 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 20.0.1 compared to 20.0.0 ***** + +FIX: #30960 show and search extrafields (#31026) +FIX: #31076 Bad position of hooks +FIX: #31152 +FIX: #31237 (#31239) +FIX: #31241 (#31245) +FIX: accounting transfer when nb of lines is not zero but amount is zero +FIX: Add same security test when nuploading files from API than from GUI (#31114) +FIX: allow "class" into search string in website module +FIX: autoselect the fiscal period by default +FIX: avoid odt errors (#31126) +FIX: Backport fix fatal error on price with some truncating setup +FIX: better compatibility with some old extrafield syntax filter +FIX: box_actions.php still uses fk_user_done which no longer exists (#31190) +FIX: Browser Notification ko with firefox +FIX: custom CSS for WebPortal (#31022) +FIX: Debug calculation of the delay of purchase order +FIX: Debug option WORKFLOW_TICKET_LINK_CONTRACT. Bad id stored. Bad +FIX: dolFICalculatePaymentReference for Finland in functions_fi.lib.php (#31281) +FIX: Duplicate trigger printFieldPreListTitle +FIX: edit contract of intervention broken by CSRF protection +FIX: error return missing in mo creation when qty to consume is <= 0 (#31134) +FIX: Extrafields does not appear on form +FIX: FATAL ERROR abusively triggered due to incomplete regex (#31052) +FIX: if you call fetchLines several times, your $object->lines contains duplicates (#31167) +FIX: late order search option (v18+) (#30692) +FIX: late propal search option (v18+) (#30687) +FIX: Maxi debug edit/delete accounting transaction +FIX: member must be found to search the linked partnership (WebPortal) (#30977) +FIX: Missing picto on user link +FIX: mysql error during dump for enable sandbox M999999 (#31116) +FIX: OAuth generation of token for Microsoft, Stripe and Generic +FIX: param id in website account list from third-party card (#30975) +FIX: Position of box for shipping address in PDF +FIX: Protection to avoid an extrafield to be mandatory if computed +FIX: removed unreachable code (#31141) +FIX: Remove wrong button +FIX: retrieving user specific constant +FIX: Revert storing of ticket files into event dir, too many troubles. +FIX: Selection of country - state in resource +FIX: State dropdown is not working on User card #31198 (#31205) +FIX: Tool to convert into utf8 or utf8mb4 +FIX: use price() to display qty on a product's stats tab to avoid showing too many decimals when rounding errors are possible (#31165) +FIX: Warning visible when it should not +FIX: webhook must send POST in body. Add WEBHOOK_POST_SEND_DATA_IN_BODY +FIX: when qty is not an integer, apply price() (#31138) +FIX: Wrong price for BOM with workstation (#31142) +FIX: determine multi-currency price on object line create tpl (#28021) + ***** ChangeLog for 20.0.0 compared to 19.0 ***** From 7faa9bad6777310993bbcf9f29fb2e66d5530c83 Mon Sep 17 00:00:00 2001 From: John BOTELLA <68917336+thersane-john@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:42:17 +0200 Subject: [PATCH 75/75] Fix 20.0 Action buttion url autocomplete (button dropdown part04) (#31266) * Fix dol get action buttion url autocomplette * change mailto * change mailto * Remove anonymous function * Remove anonymous function * Update functions.lib.php --------- Co-authored-by: Laurent Destailleur --- htdocs/core/lib/functions.lib.php | 53 +++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 669aa6689d1..b8bb9d7f3a1 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -12264,6 +12264,7 @@ function dolGetStatus($statusLabel = '', $statusLabelShort = '', $html = '', $st * $arrayforbutaction = array( * 10 => array('attr' => array('class'=>''), 'lang'=>'propal', 'enabled'=>isModEnabled("propal"), 'perm'=>$user->hasRight('propal', 'creer'), 'label' => 'AddProp', 'url'=>'/comm/propal/card.php?action=create&projectid='.$object->id.'&socid='.$object->socid), * 20 => array('attr' => array('class'=>''), 'lang'=>'mymodule', 'enabled'=>isModEnabled("mymodule"), 'perm'=>$user->hasRight('mymodule', 'write'), 'label' => 'MyModuleAction', 'urlroot'=>dol_build_patch('/mymodule/mypage.php?action=create')), + * 30 => array('attr' => array('class'=>''), 'lang'=>'mymodule', 'enabled'=>isModEnabled("mymodule"), 'perm'=>$user->hasRight('mymodule', 'write'), 'label' => 'MyModuleOtherAction', 'urlraw' => '# || external Url || javascript: || tel: || mailto:' ), * ); ); * @param string $id Attribute id of action button. Example 'action-delete'. This can be used for full ajax confirm if this code is reused into the ->formconfirm() method. * @param int|boolean $userRight User action right @@ -12329,17 +12330,18 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $langs->load($subbutton['lang']); } - if (!empty($subbutton['urlroot'])) { - $tmpurl = $subbutton['urlroot'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + if (!empty($subbutton['urlraw'])) { + $tmpurl = $subbutton['urlraw']; // Use raw url, no url completion, use only what developer send } else { - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + $tmpurl = !empty($subbutton['urlroot']) ? $subbutton['urlroot'] : $subbutton['url']; + $tmpurl = dolCompletUrlForDropdownButton($tmpurl, $params, empty($subbutton['urlroot'])); } $subbuttonparam = array(); if (!empty($subbutton['attr'])) { $subbuttonparam['attr'] = $subbutton['attr']; } - $subbuttonparam['isDropDown'] = (empty($params['isDropDown']) ? $subbutton['isDropDown'] : $params['isDropDown']); + $subbuttonparam['isDropDown'] = (empty($params['isDropDown']) ? ($subbutton['isDropDown']??false) : $params['isDropDown']); $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, $subbutton['id'] ?? '', $subbutton['perm'], $subbuttonparam); } @@ -12351,10 +12353,11 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = $langs->load($subbutton['lang']); } - if (!empty($subbutton['urlroot'])) { - $tmpurl = $subbutton['urlroot'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + if (!empty($subbutton['urlraw'])) { + $tmpurl = $subbutton['urlraw']; // Use raw url, no url completion, use only what developer send } else { - $tmpurl = DOL_URL_ROOT.$subbutton['url'].(empty($params['backtopage']) ? '' : '&backtopage='.urlencode($params['backtopage'])); + $tmpurl = !empty($subbutton['urlroot']) ? $subbutton['urlroot'] : $subbutton['url']; + $tmpurl = dolCompletUrlForDropdownButton($tmpurl, $params, empty($subbutton['urlroot'])); } $out .= dolGetButtonAction('', $langs->trans($subbutton['label']), 'default', $tmpurl, '', $subbutton['perm'], $params); @@ -12489,6 +12492,42 @@ function dolGetButtonAction($label, $text = '', $actionType = 'default', $url = } } + +/** + * An function to complete dropdown url in dolGetButtonAction + * + * @param string $url the Url to complete + * @param array|array $params params of dolGetButtonAction function + * @param bool $addDolUrlRoot to add root url + * @return string + */ +function dolCompletUrlForDropdownButton(string $url, array $params, bool $addDolUrlRoot = true) +{ + if (empty($url)) { + return ''; + } + + $parsedUrl = parse_url($url); + if ((isset($parsedUrl['scheme']) && in_array($parsedUrl['scheme'], ['javascript', 'mailto', 'tel'])) || strpos($url, '#') === 0) { + return $url; + } + + if (!empty($parsedUrl['query'])) { + // Use parse_str() function to parse the string passed via URL + parse_str($parsedUrl['query'], $urlQuery); + if (!isset($urlQuery['backtopage']) && isset($params['backtopage'])) { + $url.= '&backtopage='.urlencode($params['backtopage']); + } + } + + if (!isset($parsedUrl['scheme']) && $addDolUrlRoot) { + $url = DOL_URL_ROOT.$url; + } + + return $url; +} + + /** * Add space between dolGetButtonTitle *