MSIN-4379: Refactor bib help system with dynamic inline assistance and improved tooltip handling. Updated JavaScript selectors and added new CSS styles for inline help elements. Introduced new Python scripts for generating translation files in both Excel and SQL formats.
This commit is contained in:
BIN
MSIN-4379-bib_v4-traductions.xlsx
Normal file
BIN
MSIN-4379-bib_v4-traductions.xlsx
Normal file
Binary file not shown.
@ -1048,6 +1048,25 @@ ul.ms1-menu-compte li a:hover, ul.ms1-menu-compte li a:active {
|
||||
color:#212529;
|
||||
}
|
||||
|
||||
/* (?) inline dans un bouton action — masqué avec le bouton parent. */
|
||||
.bib-aide-inline{
|
||||
display:inline;
|
||||
margin-left:0.35em;
|
||||
font-weight:700;
|
||||
cursor:help;
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
button .bib-aide-inline,
|
||||
.badge .bib-aide-inline{
|
||||
color:inherit;
|
||||
}
|
||||
|
||||
.bib-aide-inline:focus{
|
||||
outline:1px dotted currentColor;
|
||||
outline-offset:2px;
|
||||
}
|
||||
|
||||
.tippy-box[data-theme~='ms1-bib']{
|
||||
background-color:#1e293b;
|
||||
color:#f8fafc;
|
||||
|
||||
@ -2010,7 +2010,7 @@ if ($strLangue == 'fr') {
|
||||
function initModuleBibTippy(root) {
|
||||
if (typeof tippy === 'undefined') return;
|
||||
let scope = root || moduleBib;
|
||||
scope.querySelectorAll('[data-tippy-content], .btn-aide-bib').forEach(function (el) {
|
||||
scope.querySelectorAll('[data-tippy-content], .bib-aide-trigger').forEach(function (el) {
|
||||
if (el._tippy) {
|
||||
el._tippy.destroy();
|
||||
}
|
||||
@ -2024,7 +2024,7 @@ if ($strLangue == 'fr') {
|
||||
interactive: false
|
||||
});
|
||||
|
||||
tippy(scope.querySelectorAll('.btn-aide-bib'), {
|
||||
tippy(scope.querySelectorAll('.bib-aide-trigger'), {
|
||||
theme: 'ms1-bib ms1-bib-aide',
|
||||
animation: 'fade',
|
||||
allowHTML: true,
|
||||
@ -2032,6 +2032,13 @@ if ($strLangue == 'fr') {
|
||||
interactive: true,
|
||||
content: bibTippyAideContent
|
||||
});
|
||||
|
||||
scope.querySelectorAll('.bib-aide-inline:not([data-bib-aide-bound])').forEach(function (el) {
|
||||
el.setAttribute('data-bib-aide-bound', '1');
|
||||
el.addEventListener('click', function (e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setBibContainerHtml(row, html) {
|
||||
|
||||
@ -2725,18 +2725,37 @@ function fxBibTippyAttr($clef) {
|
||||
return ' data-tippy-content="' . fxBibEsc($strTip) . '"';
|
||||
}
|
||||
|
||||
/** Bouton (?) — pop-up long depuis info_aide ; absent si info_aide vide. */
|
||||
function fxBibAideButton($clef) {
|
||||
/** Contenu aide (?) — texte caché + « ? » avec espace après. */
|
||||
function fxBibAideInner($clef) {
|
||||
$strAide = trim(fxBibAide($clef, 0));
|
||||
if ($strAide === '') {
|
||||
return '';
|
||||
}
|
||||
// Texte dans un span caché : préserve les retours à la ligne saisis dans traduction.php.
|
||||
return '<button type="button" class="btn-aide-bib" aria-label="Aide">'
|
||||
. '<span class="bib-aide-text" hidden>' . fxBibEsc($strAide) . '</span>?'
|
||||
return '<span class="bib-aide-text" hidden>' . fxBibEsc($strAide) . '</span>? ';
|
||||
}
|
||||
|
||||
/** Bouton (?) séparé — en-têtes, colonnes, textes sans bouton action. */
|
||||
function fxBibAideButton($clef) {
|
||||
$strInner = fxBibAideInner($clef);
|
||||
if ($strInner === '') {
|
||||
return '';
|
||||
}
|
||||
return '<button type="button" class="btn-aide-bib bib-aide-trigger" aria-label="Aide">'
|
||||
. $strInner
|
||||
. '</button>';
|
||||
}
|
||||
|
||||
/** (?) inline — à l'intérieur d'un bouton (masqué avec le bouton parent). */
|
||||
function fxBibAideInline($clef) {
|
||||
$strInner = fxBibAideInner($clef);
|
||||
if ($strInner === '') {
|
||||
return '';
|
||||
}
|
||||
return '<span class="bib-aide-inline bib-aide-trigger" role="button" tabindex="0" aria-label="Aide">'
|
||||
. $strInner
|
||||
. '</span>';
|
||||
}
|
||||
|
||||
/** Libellé info_texte + bouton (?) si info_aide renseigné. */
|
||||
function fxBibTexteAide($clef, $mem_echo = 1, $strFallback = '') {
|
||||
$str = fxBibTexte($clef, 0, $strFallback);
|
||||
@ -2765,9 +2784,8 @@ function renderBibAddRangeButton($epr_id, $extraStyle = '') {
|
||||
<button type="button"
|
||||
class="btn btn-success btn-sm btn-add-range"
|
||||
data-epr-id="<?php echo (int)$epr_id; ?>"<?php echo fxBibTippyAttr('bib_v4_tip_add'); ?>>
|
||||
<?php fxBibTexte('bib_v4_add', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_add', 1); ?><?php echo fxBibAideInline('bib_v4_add'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_add'); ?>
|
||||
</div>
|
||||
<?php
|
||||
return ob_get_clean();
|
||||
@ -2799,27 +2817,23 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
|
||||
<div class="epr-action-row epr-action-row-main">
|
||||
<span class="epr-action-group">
|
||||
<button type="button" class="btn btn-sm btn-secondary btn-assign-batch"<?php echo fxBibTippyAttr('bib_v4_tip_assign_seq'); ?>>
|
||||
<?php fxBibTexte('bib_v4_assign_seq', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_assign_seq', 1); ?><?php echo fxBibAideInline('bib_v4_assign_seq'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_assign_seq'); ?>
|
||||
</span>
|
||||
<span class="epr-action-group">
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-danger btn-reset"
|
||||
style="<?php echo ((int)$infoBib['avec_bib'] > 0 ? '' : 'display:none;'); ?>"<?php echo fxBibTippyAttr('bib_v4_tip_reset'); ?>>
|
||||
<?php fxBibTexte('bib_v4_reset', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_reset', 1); ?><?php echo fxBibAideInline('bib_v4_reset'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_reset'); ?>
|
||||
</span>
|
||||
<span class="epr-action-group">
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-auto <?php echo $blnAutoActive ? 'btn-success' : 'btn-secondary'; ?>"<?php echo fxBibTippyAttr('bib_v4_tip_auto'); ?>>
|
||||
<?php echo fxBibEsc($blnAutoActive ? fxBibTexte('bib_v4_auto_config', 0) : fxBibTexte('bib_v4_auto', 0)); ?>
|
||||
<?php echo fxBibEsc($blnAutoActive ? fxBibTexte('bib_v4_auto_config', 0) : fxBibTexte('bib_v4_auto', 0)); ?><?php echo fxBibAideInline('bib_v4_auto'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_auto'); ?>
|
||||
<span class="bib-auto-badge badge badge-success ml-1"
|
||||
style="<?php echo $blnAutoActive ? '' : 'display:none;'; ?>"><?php fxBibTexte('bib_v4_auto_badge', 1); ?></span>
|
||||
<?php echo fxBibAideButton('bib_v4_auto_badge'); ?>
|
||||
style="<?php echo $blnAutoActive ? '' : 'display:none;'; ?>"><?php fxBibTexte('bib_v4_auto_badge', 1); ?><?php echo fxBibAideInline('bib_v4_auto_badge'); ?></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@ -2830,20 +2844,17 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
|
||||
</div>
|
||||
<div class="epr-action-row">
|
||||
<span class="epr-action-group">
|
||||
<button type="button" class="btn btn-sm btn-success btn-accepter-auto"><?php fxBibTexte('bib_v4_auto_accept', 1); ?></button>
|
||||
<?php echo fxBibAideButton('bib_v4_auto_accept'); ?>
|
||||
<button type="button" class="btn btn-sm btn-success btn-accepter-auto"><?php fxBibTexte('bib_v4_auto_accept', 1); ?><?php echo fxBibAideInline('bib_v4_auto_accept'); ?></button>
|
||||
</span>
|
||||
<span class="epr-action-group">
|
||||
<button type="button" class="btn btn-sm btn-secondary btn-annuler-auto"><?php fxBibTexte('bib_v4_auto_cancel', 1); ?></button>
|
||||
<?php echo fxBibAideButton('bib_v4_auto_cancel'); ?>
|
||||
<button type="button" class="btn btn-sm btn-secondary btn-annuler-auto"><?php fxBibTexte('bib_v4_auto_cancel', 1); ?><?php echo fxBibAideInline('bib_v4_auto_cancel'); ?></button>
|
||||
</span>
|
||||
<span class="epr-action-group">
|
||||
<button type="button"
|
||||
class="btn btn-sm btn-danger btn-desactiver-auto"
|
||||
style="<?php echo $blnAutoActive ? '' : 'display:none;'; ?>">
|
||||
<?php fxBibTexte('bib_v4_auto_disable', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_auto_disable', 1); ?><?php echo fxBibAideInline('bib_v4_auto_disable'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_auto_disable'); ?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -2853,15 +2864,13 @@ function renderBibAssignActions($tabBibAssignments, $strLangue, $infoBib, $blnAu
|
||||
<div class="epr-action-row">
|
||||
<span class="epr-action-group">
|
||||
<button type="button" class="btn btn-sm btn-secondary btn-simuler-batch" style="display:none;">
|
||||
<?php fxBibTexte('bib_v4_batch_simulate', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_batch_simulate', 1); ?><?php echo fxBibAideInline('bib_v4_batch_simulate'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_batch_simulate'); ?>
|
||||
</span>
|
||||
<span class="epr-action-group">
|
||||
<button type="button" class="btn btn-sm btn-success btn-go-batch" style="display:none;">
|
||||
<?php fxBibTexte('bib_v4_batch_go', 1); ?>
|
||||
<?php fxBibTexte('bib_v4_batch_go', 1); ?><?php echo fxBibAideInline('bib_v4_batch_go'); ?>
|
||||
</button>
|
||||
<?php echo fxBibAideButton('bib_v4_batch_go'); ?>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
67
sql/MSIN-4379-bib_v4-traductions.sql
Normal file
67
sql/MSIN-4379-bib_v4-traductions.sql
Normal file
@ -0,0 +1,67 @@
|
||||
-- MSIN-4379 — Traductions écran dossards v4 (table info)
|
||||
-- Terminologie : séquences de dossards (pas « plages »).
|
||||
-- info_prg = compte.php uniquement.
|
||||
-- Exécuter sur la BD client (inscription).
|
||||
|
||||
DELETE FROM info
|
||||
WHERE info_clef LIKE 'bib_v4_%'
|
||||
AND info_prg IN ('compte.php', 'ajax_bib_range.php');
|
||||
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_title', 'fr', 'Assignation de dossard', 'Définissez les séquences de dossards et assignez les numéros aux participants inscrits.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_title', 'en', 'Bib assignment', 'Define bib sequences and assign numbers to registered participants.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_gestion_title', 'fr', 'Gestion de l''épreuve', 'Bloc réservé à la gestion des quantités et paramètres — à venir.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_gestion_title', 'en', 'Event management', 'Reserved for quantities and settings — coming soon.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_gestion_placeholder', 'fr', 'Quantités et paramètres — à venir.', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_gestion_placeholder', 'en', 'Quantities and settings — coming soon.', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_start', 'fr', 'Début', 'Premier numéro de la séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_start', 'en', 'Start', 'First number in the sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_end', 'fr', 'Fin', 'Dernier numéro de la séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_end', 'en', 'End', 'Last number in the sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_ok', 'fr', 'OK', 'Enregistrer cette séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_ok', 'en', 'OK', 'Save this sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_del', 'fr', 'Suppr.', 'Supprimer la séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_del', 'en', 'Del.', 'Delete this sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_last', 'fr', 'Dernier', 'Dernier dossard assigné dans la séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_last', 'en', 'Last', 'Last bib assigned in the sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_used', 'fr', 'Utilisé', 'Nombre de dossards déjà assignés.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_used', 'en', 'Used', 'Number of bibs already assigned.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_avail', 'fr', 'Dispo', 'Dossards encore disponibles dans la séquence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_col_avail', 'en', 'Avail.', 'Bibs still available in the sequence.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_add', 'fr', '+ Ajouter', 'Ajoute une nouvelle séquence de dossards pour cette épreuve.\n\nIndiquez le numéro de début et de fin, puis cliquez OK.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_add', 'en', '+ Add', 'Adds a new bib sequence for this race.\n\nEnter start and end numbers, then click OK.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_add', 'fr', 'Ajouter une séquence de dossards', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_add', 'en', 'Add a bib sequence', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_seq', 'fr', 'Assigner par séquence', 'Mode batch : choisissez une ou plusieurs séquences de dossards et l''ordre d''assignation, puis GO pour assigner tous les participants sans dossard.\n\nUtilisez Simuler pour prévisualiser sans modifier la base.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_seq', 'en', 'Assign by sequence', 'Batch mode: select one or more bib sequences and the assignment order, then GO to assign all participants without a bib.\n\nUse Simulate to preview without saving.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_seq_cancel', 'fr', 'Annuler', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_assign_seq_cancel', 'en', 'Cancel', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_assign_seq', 'fr', 'Assignation groupée par séquences', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_assign_seq', 'en', 'Batch assign by sequences', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_reset', 'fr', 'Réinitialiser', 'Retire les dossards déjà assignés pour les séquences sélectionnées.\n\nAttention : vérifiez l''impact avant de confirmer.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_reset', 'en', 'Reset', 'Removes assigned bibs for the selected sequences.\n\nWarning: check the impact before confirming.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_reset', 'fr', 'Retirer les dossards assignés', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_reset', 'en', 'Remove assigned bibs', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto', 'fr', 'Assignation automatique', 'Active l''assignation automatique à chaque nouvelle inscription dans les séquences choisies.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto', 'en', 'Automatic assignment', 'Automatically assigns a bib on each new registration using the selected sequences.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_config', 'fr', 'Auto — configurer', 'Modifie les séquences utilisées pour l''assignation automatique.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_config', 'en', 'Auto — configure', 'Change the sequences used for automatic assignment.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_auto', 'fr', 'Dossard assigné automatiquement à l''inscription', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_tip_auto', 'en', 'Auto-assign bib on registration', '', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_badge', 'fr', 'Auto actif', 'L''assignation automatique est activée pour cette épreuve.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_badge', 'en', 'Auto on', 'Automatic assignment is enabled for this race.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_select_hint', 'fr', 'Sélectionnez au moins une séquence.', 'Cochez les séquences à utiliser pour l''assignation auto, puis cliquez Accepter.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_select_hint', 'en', 'Select at least one sequence.', 'Check the sequences to use for auto assignment, then click Accept.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_accept', 'fr', 'Accepter', 'Enregistre la configuration d''assignation automatique.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_accept', 'en', 'Accept', 'Saves the automatic assignment configuration.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_cancel', 'fr', 'Annuler', 'Quitte le mode édition sans enregistrer.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_cancel', 'en', 'Cancel', 'Exits edit mode without saving.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_disable', 'fr', 'Désactiver l''auto', 'Désactive l''assignation automatique. Les séquences de dossards restent en place.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_auto_disable', 'en', 'Disable auto', 'Disables automatic assignment. Bib sequences are kept.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_order', 'fr', 'Ordre d''assignation', 'Critère pour trier les participants avant d''attribuer les dossards (nom, date d''inscription, équipe, etc.).', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_order', 'en', 'Assignment order', 'Sort order for participants before assigning bibs (name, registration date, team, etc.).', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_info', 'fr', 'Sélectionnez les séquences puis GO.', 'Le résumé (disponibles / à assigner / manquants) s''affiche ici après simulation ou GO.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_info', 'en', 'Select sequences then click GO.', 'Summary (available / to assign / missing) appears here after simulate or GO.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_simulate', 'fr', 'Simuler', 'Affiche qui recevrait quel dossard sans modifier la base de données.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_simulate', 'en', 'Simulate', 'Shows who would receive which bib without changing the database.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_go', 'fr', 'GO', 'Lance l''assignation batch pour de vrai.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) VALUES ('bib_v4_batch_go', 'en', 'GO', 'Runs the batch assignment for real.', 'compte.php', '', 0, 1, '', '', '', NOW());
|
||||
114
tools/gen_bib_v4_traductions_sql.py
Normal file
114
tools/gen_bib_v4_traductions_sql.py
Normal file
@ -0,0 +1,114 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Génère sql/MSIN-4379-bib_v4-traductions.sql depuis le brouillon Excel (terminologie séquences)."""
|
||||
|
||||
def esc(s):
|
||||
if s is None:
|
||||
return ''
|
||||
s = str(s).replace('\r\n', '\n').replace('\r', '\n')
|
||||
s = s.replace('\\', '\\\\').replace("'", "''").replace('\n', '\\n')
|
||||
return s
|
||||
|
||||
# clef, texte_fr, aide_fr, texte_en, aide_en
|
||||
ROWS = [
|
||||
("bib_v4_assign_title",
|
||||
"Assignation de dossard",
|
||||
"Définissez les séquences de dossards et assignez les numéros aux participants inscrits.",
|
||||
"Bib assignment",
|
||||
"Define bib sequences and assign numbers to registered participants."),
|
||||
("bib_v4_gestion_title",
|
||||
"Gestion de l'épreuve",
|
||||
"Bloc réservé à la gestion des quantités et paramètres — à venir.",
|
||||
"Event management",
|
||||
"Reserved for quantities and settings — coming soon."),
|
||||
("bib_v4_gestion_placeholder",
|
||||
"Quantités et paramètres — à venir.",
|
||||
"",
|
||||
"Quantities and settings — coming soon.",
|
||||
""),
|
||||
("bib_v4_col_start", "Début", "Premier numéro de la séquence.", "Start", "First number in the sequence."),
|
||||
("bib_v4_col_end", "Fin", "Dernier numéro de la séquence.", "End", "Last number in the sequence."),
|
||||
("bib_v4_col_ok", "OK", "Enregistrer cette séquence.", "OK", "Save this sequence."),
|
||||
("bib_v4_col_del", "Suppr.", "Supprimer la séquence.", "Del.", "Delete this sequence."),
|
||||
("bib_v4_col_last", "Dernier", "Dernier dossard assigné dans la séquence.", "Last", "Last bib assigned in the sequence."),
|
||||
("bib_v4_col_used", "Utilisé", "Nombre de dossards déjà assignés.", "Used", "Number of bibs already assigned."),
|
||||
("bib_v4_col_avail", "Dispo", "Dossards encore disponibles dans la séquence.", "Avail.", "Bibs still available in the sequence."),
|
||||
("bib_v4_add", "+ Ajouter",
|
||||
"Ajoute une nouvelle séquence de dossards pour cette épreuve.\n\nIndiquez le numéro de début et de fin, puis cliquez OK.",
|
||||
"+ Add",
|
||||
"Adds a new bib sequence for this race.\n\nEnter start and end numbers, then click OK."),
|
||||
("bib_v4_tip_add", "Ajouter une séquence de dossards", "", "Add a bib sequence", ""),
|
||||
("bib_v4_assign_seq", "Assigner par séquence",
|
||||
"Mode batch : choisissez une ou plusieurs séquences de dossards et l'ordre d'assignation, puis GO pour assigner tous les participants sans dossard.\n\nUtilisez Simuler pour prévisualiser sans modifier la base.",
|
||||
"Assign by sequence",
|
||||
"Batch mode: select one or more bib sequences and the assignment order, then GO to assign all participants without a bib.\n\nUse Simulate to preview without saving."),
|
||||
("bib_v4_assign_seq_cancel", "Annuler", "", "Cancel", ""),
|
||||
("bib_v4_tip_assign_seq", "Assignation groupée par séquences", "", "Batch assign by sequences", ""),
|
||||
("bib_v4_reset", "Réinitialiser",
|
||||
"Retire les dossards déjà assignés pour les séquences sélectionnées.\n\nAttention : vérifiez l'impact avant de confirmer.",
|
||||
"Reset",
|
||||
"Removes assigned bibs for the selected sequences.\n\nWarning: check the impact before confirming."),
|
||||
("bib_v4_tip_reset", "Retirer les dossards assignés", "", "Remove assigned bibs", ""),
|
||||
("bib_v4_auto", "Assignation automatique",
|
||||
"Active l'assignation automatique à chaque nouvelle inscription dans les séquences choisies.",
|
||||
"Automatic assignment",
|
||||
"Automatically assigns a bib on each new registration using the selected sequences."),
|
||||
("bib_v4_auto_config", "Auto — configurer",
|
||||
"Modifie les séquences utilisées pour l'assignation automatique.",
|
||||
"Auto — configure",
|
||||
"Change the sequences used for automatic assignment."),
|
||||
("bib_v4_tip_auto", "Dossard assigné automatiquement à l'inscription", "", "Auto-assign bib on registration", ""),
|
||||
("bib_v4_auto_badge", "Auto actif", "L'assignation automatique est activée pour cette épreuve.", "Auto on", "Automatic assignment is enabled for this race."),
|
||||
("bib_v4_auto_select_hint", "Sélectionnez au moins une séquence.",
|
||||
"Cochez les séquences à utiliser pour l'assignation auto, puis cliquez Accepter.",
|
||||
"Select at least one sequence.",
|
||||
"Check the sequences to use for auto assignment, then click Accept."),
|
||||
("bib_v4_auto_accept", "Accepter", "Enregistre la configuration d'assignation automatique.", "Accept", "Saves the automatic assignment configuration."),
|
||||
("bib_v4_auto_cancel", "Annuler", "Quitte le mode édition sans enregistrer.", "Cancel", "Exits edit mode without saving."),
|
||||
("bib_v4_auto_disable", "Désactiver l'auto",
|
||||
"Désactive l'assignation automatique. Les séquences de dossards restent en place.",
|
||||
"Disable auto",
|
||||
"Disables automatic assignment. Bib sequences are kept."),
|
||||
("bib_v4_batch_order", "Ordre d'assignation",
|
||||
"Critère pour trier les participants avant d'attribuer les dossards (nom, date d'inscription, équipe, etc.).",
|
||||
"Assignment order",
|
||||
"Sort order for participants before assigning bibs (name, registration date, team, etc.)."),
|
||||
("bib_v4_batch_info", "Sélectionnez les séquences puis GO.",
|
||||
"Le résumé (disponibles / à assigner / manquants) s'affiche ici après simulation ou GO.",
|
||||
"Select sequences then click GO.",
|
||||
"Summary (available / to assign / missing) appears here after simulate or GO."),
|
||||
("bib_v4_batch_simulate", "Simuler",
|
||||
"Affiche qui recevrait quel dossard sans modifier la base de données.",
|
||||
"Simulate",
|
||||
"Shows who would receive which bib without changing the database."),
|
||||
("bib_v4_batch_go", "GO", "Lance l'assignation batch pour de vrai.", "GO", "Runs the batch assignment for real."),
|
||||
]
|
||||
|
||||
PRG = 'compte.php'
|
||||
lines = [
|
||||
"-- MSIN-4379 — Traductions écran dossards v4 (table info)",
|
||||
"-- Terminologie : séquences de dossards (pas « plages »).",
|
||||
"-- info_prg = compte.php uniquement.",
|
||||
"-- Exécuter sur la BD client (inscription).",
|
||||
"",
|
||||
"DELETE FROM info",
|
||||
"WHERE info_clef LIKE 'bib_v4_%'",
|
||||
" AND info_prg IN ('compte.php', 'ajax_bib_range.php');",
|
||||
"",
|
||||
]
|
||||
|
||||
for clef, txt_fr, aide_fr, txt_en, aide_en in ROWS:
|
||||
for lang, txt, aide in (('fr', txt_fr, aide_fr), ('en', txt_en, aide_en)):
|
||||
lines.append(
|
||||
"INSERT INTO info (info_clef, info_langue, info_texte, info_aide, info_prg, "
|
||||
"info_description, info_trie, info_actif, info_option1, info_option2, info_option3, info_creation) "
|
||||
"VALUES ("
|
||||
f"'{esc(clef)}', '{lang}', '{esc(txt)}', '{esc(aide)}', '{PRG}', "
|
||||
"'', 0, 1, '', '', '', NOW());"
|
||||
)
|
||||
|
||||
out = r"c:\dev_v4\ms1inscription4\sql\MSIN-4379-bib_v4-traductions.sql"
|
||||
with open(out, 'w', encoding='utf-8') as f:
|
||||
f.write('\n'.join(lines) + '\n')
|
||||
|
||||
print(f"Written: {out}")
|
||||
print(f"INSERT rows: {len(ROWS) * 2}")
|
||||
177
tools/gen_bib_v4_traductions_xlsx.py
Normal file
177
tools/gen_bib_v4_traductions_xlsx.py
Normal file
@ -0,0 +1,177 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Génère MSIN-4379-bib_v4-traductions.xlsx — brouillon traductions table info."""
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.styles import Font, PatternFill, Alignment
|
||||
from openpyxl.utils import get_column_letter
|
||||
|
||||
rows = [
|
||||
("bib_v4_assign_title", "En-tête bloc assignation", "libellé",
|
||||
"Assignation de dossard",
|
||||
"Définissez les plages de numéros et assignez les dossards aux participants inscrits.",
|
||||
"Bib assignment",
|
||||
"Define bib ranges and assign numbers to registered participants.",
|
||||
"info_texte max 50 car."),
|
||||
("bib_v4_gestion_title", "En-tête bloc gestion (masqué phase 2)", "libellé",
|
||||
"Gestion de l'épreuve",
|
||||
"Bloc réservé à la gestion des quantités et paramètres — à venir.",
|
||||
"Event management",
|
||||
"Reserved for quantities and settings — coming soon.",
|
||||
"Phase 2 — masqué pour l'instant"),
|
||||
("bib_v4_gestion_placeholder", "Contenu bloc gestion", "libellé",
|
||||
"Quantités et paramètres — à venir.",
|
||||
"",
|
||||
"Quantities and settings — coming soon.",
|
||||
"",
|
||||
""),
|
||||
("bib_v4_col_start", "Colonne tableau séquences", "colonne",
|
||||
"Début", "Premier numéro de la plage.", "Start", "First number in the range.", "aide optionnelle"),
|
||||
("bib_v4_col_end", "Colonne tableau séquences", "colonne",
|
||||
"Fin", "Dernier numéro de la plage.", "End", "Last number in the range.", ""),
|
||||
("bib_v4_col_ok", "Colonne tableau séquences", "colonne",
|
||||
"OK", "Enregistrer cette plage.", "OK", "Save this range.", ""),
|
||||
("bib_v4_col_del", "Colonne tableau séquences", "colonne",
|
||||
"Suppr.", "Supprimer la plage.", "Del.", "Delete this range.", ""),
|
||||
("bib_v4_col_last", "Colonne tableau séquences", "colonne",
|
||||
"Dernier", "Dernier dossard assigné dans la plage.", "Last", "Last bib assigned in the range.", ""),
|
||||
("bib_v4_col_used", "Colonne tableau séquences", "colonne",
|
||||
"Utilisé", "Nombre de dossards déjà assignés.", "Used", "Number of bibs already assigned.", ""),
|
||||
("bib_v4_col_avail", "Colonne tableau séquences", "colonne",
|
||||
"Dispo", "Dossards encore disponibles dans la plage.", "Avail.", "Bibs still available in the range.", ""),
|
||||
("bib_v4_add", "Bouton + ajouter séquence", "libellé + ?",
|
||||
"+ Ajouter",
|
||||
"Ajoute une nouvelle plage de dossards pour cette épreuve.\n\nIndiquez le numéro de début et de fin, puis cliquez OK.",
|
||||
"+ Add",
|
||||
"Adds a new bib range for this race.\n\nEnter start and end numbers, then click OK.",
|
||||
"Libellé bouton ; aide = pop-up ?"),
|
||||
("bib_v4_tip_add", "Survol bouton +", "tip",
|
||||
"Ajouter une plage de dossards", "", "Add a bib range", "", "info_texte seulement — pas de ?"),
|
||||
("bib_v4_assign_seq", "Bouton assignation batch", "libellé + ?",
|
||||
"Assigner par séquence",
|
||||
"Mode batch : choisissez une ou plusieurs plages et l'ordre d'assignation, puis GO pour assigner tous les participants sans dossard.\n\nUtilisez Simuler pour prévisualiser sans modifier la base.",
|
||||
"Assign by range",
|
||||
"Batch mode: select one or more ranges and the assignment order, then GO to assign all participants without a bib.\n\nUse Simulate to preview without saving.",
|
||||
""),
|
||||
("bib_v4_assign_seq_cancel", "Libellé JS annuler batch", "libellé",
|
||||
"Annuler", "", "Cancel", "", "data-batch-label-cancel"),
|
||||
("bib_v4_tip_assign_seq", "Survol bouton batch", "tip",
|
||||
"Assignation groupée par plages", "", "Batch assign by ranges", "", ""),
|
||||
("bib_v4_reset", "Bouton réinitialiser", "libellé + ?",
|
||||
"Réinitialiser",
|
||||
"Retire les dossards déjà assignés pour les plages sélectionnées.\n\nAttention : vérifiez l'impact avant de confirmer.",
|
||||
"Reset",
|
||||
"Removes assigned bibs for the selected ranges.\n\nWarning: check the impact before confirming.",
|
||||
""),
|
||||
("bib_v4_tip_reset", "Survol bouton reset", "tip",
|
||||
"Retirer les dossards assignés", "", "Remove assigned bibs", "", ""),
|
||||
("bib_v4_auto", "Bouton auto (inactif)", "libellé + ?",
|
||||
"Assignation automatique",
|
||||
"Active l'assignation automatique à chaque nouvelle inscription dans les plages choisies.",
|
||||
"Automatic assignment",
|
||||
"Automatically assigns a bib on each new registration using the selected ranges.",
|
||||
"Même info_aide que auto_config"),
|
||||
("bib_v4_auto_config", "Bouton auto (actif)", "libellé",
|
||||
"Auto — configurer",
|
||||
"Modifie les plages utilisées pour l'assignation automatique.",
|
||||
"Auto — configure",
|
||||
"Change the ranges used for automatic assignment.",
|
||||
"Libellé quand auto déjà actif"),
|
||||
("bib_v4_tip_auto", "Survol bouton auto", "tip",
|
||||
"Dossard assigné automatiquement à l'inscription", "", "Auto-assign bib on registration", "", ""),
|
||||
("bib_v4_auto_badge", "Badge « auto actif »", "libellé + ?",
|
||||
"Auto actif", "L'assignation automatique est activée pour cette épreuve.",
|
||||
"Auto on", "Automatic assignment is enabled for this race.", ""),
|
||||
("bib_v4_auto_select_hint", "Texte mode édition auto", "libellé + ?",
|
||||
"Sélectionnez au moins une séquence.",
|
||||
"Cochez les plages à utiliser pour l'assignation auto, puis cliquez Accepter.",
|
||||
"Select at least one range.",
|
||||
"Check the ranges to use for auto assignment, then click Accept.",
|
||||
"Message dynamique JS si sélection"),
|
||||
("bib_v4_auto_accept", "Bouton accepter auto", "libellé + ?",
|
||||
"Accepter", "Enregistre la configuration d'assignation automatique.",
|
||||
"Accept", "Saves the automatic assignment configuration.", ""),
|
||||
("bib_v4_auto_cancel", "Bouton annuler auto", "libellé + ?",
|
||||
"Annuler", "Quitte le mode édition sans enregistrer.",
|
||||
"Cancel", "Exits edit mode without saving.", ""),
|
||||
("bib_v4_auto_disable", "Bouton désactiver auto", "libellé + ?",
|
||||
"Désactiver l'auto",
|
||||
"Désactive l'assignation automatique. Les plages de dossards restent en place.",
|
||||
"Disable auto",
|
||||
"Disables automatic assignment. Bib ranges are kept.", ""),
|
||||
("bib_v4_batch_order", "Label ordre batch", "libellé + ?",
|
||||
"Ordre d'assignation",
|
||||
"Critère pour trier les participants avant d'attribuer les dossards (nom, date d'inscription, équipe, etc.).",
|
||||
"Assignment order",
|
||||
"Sort order for participants before assigning bibs (name, registration date, team, etc.).", ""),
|
||||
("bib_v4_batch_info", "Texte info batch", "libellé + ?",
|
||||
"Sélectionnez les plages puis GO.",
|
||||
"Le résumé (disponibles / à assigner / manquants) s'affiche ici après simulation ou GO.",
|
||||
"Select ranges then click GO.",
|
||||
"Summary (available / to assign / missing) appears here after simulate or GO.",
|
||||
"Texte initial ; message dynamique en JS"),
|
||||
("bib_v4_batch_simulate", "Bouton simuler batch", "libellé + ?",
|
||||
"Simuler", "Affiche qui recevrait quel dossard sans modifier la base de données.",
|
||||
"Simulate", "Shows who would receive which bib without changing the database.", ""),
|
||||
("bib_v4_batch_go", "Bouton GO batch", "libellé + ?",
|
||||
"GO", "Lance l'assignation batch pour de vrai.",
|
||||
"GO", "Runs the batch assignment for real.", ""),
|
||||
]
|
||||
|
||||
headers = [
|
||||
"info_clef", "zone_ecran", "type", "info_prg",
|
||||
"info_texte_fr", "info_aide_fr", "info_texte_en", "info_aide_en",
|
||||
"statut", "notes",
|
||||
]
|
||||
|
||||
wb = Workbook()
|
||||
ws = wb.active
|
||||
ws.title = "bib_v4_traductions"
|
||||
|
||||
header_fill = PatternFill("solid", fgColor="4472C4")
|
||||
header_font = Font(bold=True, color="FFFFFF")
|
||||
|
||||
for col, h in enumerate(headers, 1):
|
||||
cell = ws.cell(row=1, column=col, value=h)
|
||||
cell.fill = header_fill
|
||||
cell.font = header_font
|
||||
cell.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)
|
||||
|
||||
for r, row in enumerate(rows, 2):
|
||||
ws.cell(row=r, column=1, value=row[0])
|
||||
ws.cell(row=r, column=2, value=row[1])
|
||||
ws.cell(row=r, column=3, value=row[2])
|
||||
ws.cell(row=r, column=4, value="compte.php")
|
||||
ws.cell(row=r, column=5, value=row[3])
|
||||
ws.cell(row=r, column=6, value=row[4])
|
||||
ws.cell(row=r, column=7, value=row[5])
|
||||
ws.cell(row=r, column=8, value=row[6])
|
||||
ws.cell(row=r, column=9, value="à corriger")
|
||||
ws.cell(row=r, column=10, value=row[7])
|
||||
for c in (5, 6, 7, 8, 10):
|
||||
ws.cell(row=r, column=c).alignment = Alignment(wrap_text=True, vertical="top")
|
||||
|
||||
widths = [28, 32, 14, 14, 28, 48, 28, 48, 12, 36]
|
||||
for i, w in enumerate(widths, 1):
|
||||
ws.column_dimensions[get_column_letter(i)].width = w
|
||||
|
||||
ws.freeze_panes = "A2"
|
||||
|
||||
ws2 = wb.create_sheet("README")
|
||||
readme = [
|
||||
"MSIN-4379 — Traductions écran dossards v4",
|
||||
"",
|
||||
"1. Éditez info_texte_fr/en (libellé visible, max ~50 car.) et info_aide_fr/en (pop-up ?).",
|
||||
"2. Les clés bib_v4_tip_* : info_texte seulement (survol court), pas d'info_aide.",
|
||||
"3. info_prg = compte.php pour toutes les entrées.",
|
||||
"4. Mettez statut = OK quand une ligne est validée.",
|
||||
"5. Renvoyez le fichier ; un script SQL INSERT sera généré (fr + en par clé).",
|
||||
"",
|
||||
"Avant import SQL :",
|
||||
"DELETE FROM info WHERE info_clef LIKE 'bib_v4_%' AND info_prg IN ('compte.php','ajax_bib_range.php');",
|
||||
]
|
||||
for i, line in enumerate(readme, 1):
|
||||
ws2.cell(row=i, column=1, value=line)
|
||||
|
||||
out = r"c:\dev_v4\ms1inscription4\MSIN-4379-bib_v4-traductions.xlsx"
|
||||
wb.save(out)
|
||||
print("Created:", out)
|
||||
print("Rows:", len(rows))
|
||||
BIN
~$MSIN-4379-bib_v4-traductions.xlsx
Normal file
BIN
~$MSIN-4379-bib_v4-traductions.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user