Spaces:
Build error
Build error
Commit ·
729c0c5
1
Parent(s): b0e0450
fix(M-05): cache language labels in applyLanguage() -- avoids redundant API calls on rapid language switching
Browse files- 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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.
|