Skip to content

Commit 5742a6e

Browse files
authored
Fix: Prevent unnecessary title-case conversion in i18n helper function (sugarlabs#4782)
* Simplify translation fallback mechanism Refactor translation logic to remove title case fallback. * Update utils.js * Updated _getPitch(c) in block.js
1 parent 74ca451 commit 5742a6e

File tree

2 files changed

+19
-32
lines changed

2 files changed

+19
-32
lines changed

js/block.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2471,28 +2471,35 @@ class Block {
24712471
c2 = this.blocks.blockList[c].connections[2];
24722472
if (this.blocks.blockList[c2].name === "number") {
24732473
if (this.blocks.blockList[c1].name === "solfege") {
2474-
const solfnotes_ = _("ti la sol fa mi re do").split(" ");
2474+
// English reference for logic
2475+
const solfnotesRef = ["ti", "la", "sol", "fa", "mi", "re", "do"];
2476+
// Localized notes for display
2477+
const solfnotesLocalized = _("ti la sol fa mi re do").split(" ");
2478+
24752479
const stripped = this.blocks.blockList[c1].value
24762480
.replace(SHARP, "")
24772481
.replace(FLAT, "")
24782482
.replace(DOUBLESHARP, "")
24792483
.replace(DOUBLEFLAT, "");
2480-
const i = ["ti", "la", "sol", "fa", "mi", "re", "do"].indexOf(stripped);
2484+
2485+
const i = solfnotesRef.indexOf(stripped);
2486+
if (i === -1) {
2487+
// fallback if note not found
2488+
return stripped + " " + this.blocks.blockList[c2].value;
2489+
}
2490+
24812491
if (this.blocks.blockList[c1].value.includes(SHARP)) {
2482-
return solfnotes_[i] + SHARP + " " + this.blocks.blockList[c2].value;
2492+
return solfnotesLocalized[i] + SHARP + " " + this.blocks.blockList[c2].value;
24832493
} else if (this.blocks.blockList[c1].value.includes(FLAT)) {
2484-
return solfnotes_[i] + FLAT + " " + this.blocks.blockList[c2].value;
2494+
return solfnotesLocalized[i] + FLAT + " " + this.blocks.blockList[c2].value;
24852495
} else if (this.blocks.blockList[c1].value.includes(DOUBLESHARP)) {
2486-
return (
2487-
solfnotes_[i] + DOUBLESHARP + " " + this.blocks.blockList[c2].value
2488-
);
2496+
return solfnotesLocalized[i] + DOUBLESHARP + " " + this.blocks.blockList[c2].value;
24892497
} else if (this.blocks.blockList[c1].value.includes(DOUBLEFLAT)) {
2490-
return (
2491-
solfnotes_[i] + DOUBLEFLAT + " " + this.blocks.blockList[c2].value
2492-
);
2498+
return solfnotesLocalized[i] + DOUBLEFLAT + " " + this.blocks.blockList[c2].value;
24932499
} else {
2494-
return solfnotes_[i] + " " + this.blocks.blockList[c2].value;
2500+
return solfnotesLocalized[i] + " " + this.blocks.blockList[c2].value;
24952501
}
2502+
24962503
} else if (this.blocks.blockList[c1].name === "notename") {
24972504
return (
24982505
this.blocks.blockList[c1].value + " " + this.blocks.blockList[c2].value

js/utils/utils.js

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -94,28 +94,8 @@ function _(text, options = {}) {
9494
};
9595

9696
translated = resolveObj(text);
97-
if (!translated || translated === text) translated = resolveObj(cleanedText);
98-
if (!translated || translated === text) translated = resolveObj(text.toLowerCase());
99-
if (!translated || translated === text) {
100-
const titleCase = text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
101-
translated = resolveObj(titleCase);
102-
}
103-
if (!translated || translated === text) {
104-
const hyphenatedText = cleanedText.replace(/ /g, "-");
105-
translated = resolveObj(hyphenatedText);
106-
}
10797
} else {
10898
translated = i18next.t(text, options);
109-
if (!translated || translated === text) translated = i18next.t(cleanedText, options);
110-
if (!translated || translated === text) translated = i18next.t(text.toLowerCase(), options);
111-
if (!translated || translated === text) {
112-
const titleCase = text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
113-
translated = i18next.t(titleCase, options);
114-
}
115-
if (!translated || translated === text) {
116-
const hyphenatedText = cleanedText.replace(/ /g, "-");
117-
translated = i18next.t(hyphenatedText, options);
118-
}
11999
}
120100

121101
return translated || text;
@@ -1649,4 +1629,4 @@ if (typeof module !== "undefined" && module.exports) {
16491629
hexToRGB,
16501630
hex2rgb
16511631
};
1652-
}
1632+
}

0 commit comments

Comments
 (0)