abinazebinoy commited on
Commit
729c0c5
·
1 Parent(s): b0e0450

fix(M-05): cache language labels in applyLanguage() -- avoids redundant API calls on rapid language switching

Browse files
Files changed (1) hide show
  1. frontend/js/app.js +8 -1
frontend/js/app.js CHANGED
@@ -909,6 +909,9 @@ function toggleTheme() {
909
 
910
  // ?? Language Application ??????????????????????????????????????????????????????
911
  // BUG-10 FIX: full DOM translation via data-i18n attributes
 
 
 
912
  async function applyLanguage(lang) {
913
  const badge = document.getElementById("lang-badge");
914
  if (!lang || lang === "en") {
@@ -923,7 +926,11 @@ async function applyLanguage(lang) {
923
  return;
924
  }
925
  try {
926
- const data = await Api.uiLabels(lang);
 
 
 
 
927
  const labels = data.labels || {};
928
  // Apply every translated label to every matching data-i18n DOM element.
929
  // Auto-scales: new keys in languages.py are applied automatically.
 
909
 
910
  // ?? Language Application ??????????????????????????????????????????????????????
911
  // BUG-10 FIX: full DOM translation via data-i18n attributes
912
+ // M-05 FIX: cache language labels to avoid re-fetching on every change
913
+ const _langLabelCache = {};
914
+
915
  async function applyLanguage(lang) {
916
  const badge = document.getElementById("lang-badge");
917
  if (!lang || lang === "en") {
 
926
  return;
927
  }
928
  try {
929
+ // Return cached labels if we already fetched this language
930
+ const data = _langLabelCache[lang] || await Api.uiLabels(lang).then(d => {
931
+ _langLabelCache[lang] = d;
932
+ return d;
933
+ });
934
  const labels = data.labels || {};
935
  // Apply every translated label to every matching data-i18n DOM element.
936
  // Auto-scales: new keys in languages.py are applied automatically.