refacto: Adding i18n support with FR and EN as base

This commit is contained in:
gauvainboiche
2026-08-01 18:32:46 +02:00
parent 1cd6061d39
commit 683105fa3b
12 changed files with 290 additions and 200 deletions
+18 -8
View File
@@ -1,7 +1,8 @@
import { MODES, PK_MODELS, CLINICAL_THRESHOLDS, generateSimulationData } from '../../pkCore.js';
import { MODES, PK_MODELS, CLINICAL_THRESHOLDS, generateSimulationData } from '/pkCore.js';
import { adjustChartYScale } from './chartManager.js';
import { initCalculatorUI } from './calculator.js';
import { generatePDFReport } from './pdfExport.js';
import { initI18n, getCurrentLang, t } from './i18n.js';
let currentMode = MODES.ESKETAMINE;
let pkChart = null;
@@ -12,10 +13,22 @@ const timelineInputs = Array.from({ length: 61 }, (_, i) => ({
perfRateMgKgH: 0
}));
document.addEventListener('DOMContentLoaded', () => {
document.addEventListener('DOMContentLoaded', async () => {
await initI18n();
const selectLang = document.getElementById('selectLang');
if (selectLang) {
selectLang.value = getCurrentLang();
selectLang.addEventListener('change', async (e) => {
await initI18n(e.target.value);
renderTimelineGrid();
updateSimulation();
});
}
initChart();
renderTimelineGrid();
initCalculatorUI(); // Initialise la modale et les événements du calculateur
initCalculatorUI();
setupEventListeners();
updateSimulation();
});
@@ -87,10 +100,7 @@ function updateSimulation() {
}
pkChart.data.datasets = datasets;
// Ajustement dynamique de l'échelle Y à 110 % si besoin
adjustChartYScale(pkChart, currentMode, datasets);
pkChart.update();
}
@@ -104,11 +114,11 @@ function renderTimelineGrid() {
col.innerHTML = `
<div class="font-bold text-amber-400 border-b border-slate-800 pb-1">${item.time} min</div>
<div>
<span class="text-[10px] text-slate-400 block mb-0.5">Bolus (mg)</span>
<span class="text-[10px] text-slate-400 block mb-0.5">${t('timeline.bolus')}</span>
<input type="number" data-idx="${idx}" data-field="bolusMg" value="${item.bolusMg || ''}" placeholder="0" class="w-full bg-slate-800 border border-slate-700 text-center rounded text-white py-1 outline-none focus:border-amber-500">
</div>
<div>
<span class="text-[10px] text-slate-400 block mb-0.5">Perf (mg/kg/h)</span>
<span class="text-[10px] text-slate-400 block mb-0.5">${t('timeline.perf')}</span>
<input type="number" data-idx="${idx}" data-field="perfRateMgKgH" value="${item.perfRateMgKgH || ''}" placeholder="0" class="w-full bg-slate-800 border border-slate-700 text-center rounded text-white py-1 outline-none focus:border-amber-500">
</div>
`;