Skip to content

Commit cb29b1e

Browse files
committed
chore: add missing translations in UI
1 parent d114372 commit cb29b1e

File tree

5 files changed

+111
-28
lines changed

5 files changed

+111
-28
lines changed

i18n/english.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,35 @@ const cli = {
88
}
99
};
1010

11-
export default { cli };
11+
const ui = {
12+
popup: {
13+
maintainer: {
14+
intree: "packages in the dependency tree"
15+
}
16+
},
17+
home: {
18+
overview: {
19+
title: "Overview"
20+
},
21+
watch: "Packages in the dependency tree requiring greater attention",
22+
criticalWarnings: "Critical Warnings",
23+
maintainers: "Maintainers"
24+
},
25+
settings: {
26+
general: {
27+
title: "General",
28+
save: "save",
29+
defaultPannel: "Default Package Menu",
30+
warnings: "SAST Warnings to ignore",
31+
flags: "Flags (emojis) to ignore"
32+
},
33+
shortcuts: {
34+
title: "Shortcuts",
35+
blockquote: "Click on hotkey to update",
36+
goto: "Goto",
37+
openCloseWiki: "Open/Close wiki"
38+
}
39+
}
40+
};
41+
42+
export default { cli, ui };

i18n/french.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,35 @@ const cli = {
88
}
99
};
1010

11-
export default { cli };
11+
const ui = {
12+
popup: {
13+
maintainer: {
14+
intree: "packages dans l'abre de dépendances"
15+
}
16+
},
17+
home: {
18+
overview: {
19+
title: "Vue d'ensemble"
20+
},
21+
watch: "Packages dans l'arbre de dépendance nécessitant une plus grande attention",
22+
criticalWarnings: "Avertissements critiques",
23+
maintainers: "Mainteneurs"
24+
},
25+
settings: {
26+
general: {
27+
title: "Général",
28+
save: "sauvegarder",
29+
defaultPannel: "Panneau par défaut",
30+
warnings: "Avertissements à ignorer",
31+
flags: "Drapeau (emojis) à ignorer"
32+
},
33+
shortcuts: {
34+
title: "Raccourcis",
35+
blockquote: "Cliquer sur le raccourci clavier pour mettre à jour",
36+
goto: "Ouvrir",
37+
openCloseWiki: "Ouverture/Fermeture du wiki"
38+
}
39+
}
40+
};
41+
42+
export default { cli, ui };

public/components/expandable/expandable.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,31 @@
11
// Import Internal Dependencies
22
import { createDOMElement } from "../../common/utils";
33

4+
// TODO: migrate this to ./i18n ?
5+
const ki18nTranslaction = {
6+
french: {
7+
showMore: "voir plus",
8+
showLess: "voir moins"
9+
},
10+
english: {
11+
showMore: "show more",
12+
showLess: "show less"
13+
}
14+
};
15+
416
export function createExpandableSpan(
517
hideItemsLength,
618
onclick = () => void 0
719
) {
20+
const detectedLang = document.getElementById("lang").dataset.lang;
21+
const lang = detectedLang in ki18nTranslaction ? detectedLang : "english";
22+
823
const span = createDOMElement("span", {
924
classList: ["expandable"],
1025
attributes: { "data-value": "closed" },
1126
childs: [
1227
createDOMElement("i", { className: "icon-plus-squared-alt" }),
13-
createDOMElement("p", { text: "show more" })
28+
createDOMElement("p", { text: ki18nTranslaction[lang].showMore })
1429
]
1530
});
1631
span.addEventListener("click", function itemListClickAction() {
@@ -20,7 +35,9 @@ export function createExpandableSpan(
2035
innerI.classList.remove(isClosed ? "icon-plus-squared-alt" : "icon-minus-squared-alt");
2136
innerI.classList.add(isClosed ? "icon-minus-squared-alt" : "icon-plus-squared-alt");
2237
}
23-
this.querySelector("p").textContent = isClosed ? "show less" : "show more";
38+
39+
this.querySelector("p").textContent = isClosed ?
40+
ki18nTranslaction[lang].showLess : ki18nTranslaction[lang].showMore;
2441
this.setAttribute("data-value", isClosed ? "opened" : "closed");
2542

2643
for (let id = 0; id < this.parentNode.childNodes.length; id++) {

src/http-server/endpoints/root.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
1212
const kProjectRootDir = join(__dirname, "..", "..", "..");
1313

1414
export async function buildHtml() {
15-
await i18n.getLocalLang();
15+
const i18nLangName = await i18n.getLocalLang();
16+
1617
const HTMLStr = await readFile(join(kProjectRootDir, "views", "index.html"), "utf-8");
1718
const templateStr = zup(HTMLStr)({
1819
lang: i18n.getTokenSync("lang"),
20+
i18nLangName,
1921
token: (tokenName) => i18n.getTokenSync(`ui.${tokenName}`)
2022
});
2123

views/index.html

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
<script src="public/main.js" defer></script>
1313
<title>NodeSecure</title>
1414

15+
<div id="lang" data-lang="[[=z.i18nLangName]]" style="display: none;"></div>
16+
1517
<main>
1618
<nav>
1719
<a class="nsecure-logo" href="https://github.com/NodeSecure" target="_blank" rel="noopener">
@@ -85,20 +87,20 @@
8587
<div class="module">
8688
<div class="title">
8789
<i class="icon-eye"></i>
88-
<p>Overview</p>
90+
<p>[[=z.token('home.overview.title')]]</p>
8991
</div>
9092
<div class="content">
9193
<div class="home--overview"></div>
9294
</div>
9395
<div class="content" id="homewatch">
94-
<p>Packages in the dependency tree requiring greater attention</p>
96+
<p>[[=z.token('home.watch')]]</p>
9597
<div class="home--packages--overview"></div>
9698
</div>
9799
</div>
98100
<div class="module" id="warnings-module">
99101
<div class="title warning">
100102
<i class="icon-warning"></i>
101-
<p>Critical Warnings</p>
103+
<p>[[=z.token('home.criticalWarnings')]]</p>
102104
<span class="count">1</span>
103105
</div>
104106
<div class="content">
@@ -117,7 +119,7 @@
117119
<div class="module">
118120
<div class="title">
119121
<i class="icon-users"></i>
120-
<p>Authors</p>
122+
<p>[[=z.token('home.maintainers')]]</p>
121123
<span class="count" id="authors-count">0</span>
122124
</div>
123125
<div class="content">
@@ -150,21 +152,21 @@
150152
</div>
151153
</div>
152154
<div id="settings--view" class="view hidden">
153-
<h1><i class="icon-cog"></i>General</h1>
155+
<h1><i class="icon-cog"></i>[[=z.token('settings.general.title')]]</h1>
154156
<form>
155157
<div class="line">
156-
<label for="default_package_menu">Default Package Menu:</label>
158+
<label for="default_package_menu">[[=z.token('settings.general.defaultPannel')]]:</label>
157159
<select name="defaultPackageMenu" id="default_package_menu">
158-
<option value="info">overview</option>
159-
<option value="files">files</option>
160-
<option value="dependencies">scripts & dependencies</option>
161-
<option value="warnings">warnings</option>
162-
<option value="vulnerabilities">vulnerabilities</option>
163-
<option value="licenses" selected>licenses conformance</option>
160+
<option value="info">[[=z.token('package_info.navigation.overview')]]</option>
161+
<option value="files">[[=z.token('package_info.navigation.files')]]</option>
162+
<option value="dependencies">[[=z.token('package_info.navigation.dependencies')]]</option>
163+
<option value="warnings">[[=z.token('package_info.navigation.warnings')]]</option>
164+
<option value="vulnerabilities">[[=z.token('package_info.navigation.vulnerabilities')]]</option>
165+
<option value="licenses" selected>[[=z.token('package_info.navigation.licenses')]]</option>
164166
</select>
165167
</div>
166168
<div class="line">
167-
<p>SAST Warnings to ignore:</p>
169+
<p>[[=z.token('settings.general.warnings')]]:</p>
168170
<div>
169171
<input type="checkbox" checked name="warnings" value="parsing-error" id="parsing-error">
170172
<label for="parsing-error">parsing error</label>
@@ -219,7 +221,7 @@ <h1><i class="icon-cog"></i>General</h1>
219221
</div>
220222
</div>
221223
<div class="line">
222-
<p>Flags to ignore:</p>
224+
<p>[[=z.token('settings.general.flags')]]:</p>
223225
<div>
224226
<input type="checkbox" name="flags" value="hasManyPublishers" id="hasManyPublishers">
225227
<label for="hasManyPublishers">👥 hasManyPublishers</label>
@@ -246,26 +248,26 @@ <h1><i class="icon-cog"></i>General</h1>
246248
</div>
247249
</div>
248250
</form>
249-
<button class="save">save</button>
251+
<button class="save">[[=z.token('settings.general.save')]]</button>
250252
<div class="line">
251-
<h2><i class="icon-keyboard"></i>Shortcuts</h2>
253+
<h2><i class="icon-keyboard"></i>[[=z.token('settings.shortcuts.title')]]</h2>
252254
<div class="shortcuts">
253-
<div class="note">💡 Click on hotkey to update</div>
255+
<div class="note">💡 [[=z.token('settings.shortcuts.blockquote')]]</div>
254256
<div>
255257
<input readonly id="home" class="hotkey">
256-
<label for="home">Goto Home view</label>
258+
<label for="home">[[=z.token('settings.shortcuts.goto')]] Home view</label>
257259
</div>
258260
<div>
259261
<input readonly id="network" class="hotkey">
260-
<label for="network">Goto Network view</label>
262+
<label for="network">[[=z.token('settings.shortcuts.goto')]] Network view</label>
261263
</div>
262264
<div>
263265
<input readonly id="settings" class="hotkey">
264-
<label for="settings">Goto Settings view</label>
266+
<label for="settings">[[=z.token('settings.shortcuts.goto')]] Settings view</label>
265267
</div>
266268
<div>
267269
<input readonly id="wiki" class="hotkey">
268-
<label for="wiki">Open/Close wiki</label>
270+
<label for="wiki">[[=z.token('settings.shortcuts.openCloseWiki')]]</label>
269271
</div>
270272
</div>
271273
</div>
@@ -313,7 +315,7 @@ <h2><i class="icon-keyboard"></i>Shortcuts</h2>
313315
</div>
314316
</div>
315317
<div class="separator">
316-
<p>packages in tree</p>
318+
<p>[[=z.token('popup.maintainer.intree')]]</p>
317319
</div>
318320
<ul class="maintainers--packages"></ul>
319321
</div>
@@ -333,7 +335,7 @@ <h2><i class="icon-keyboard"></i>Shortcuts</h2>
333335
</div>
334336

335337
<div class="package-navigation">
336-
<span class="container-title">overview</span>
338+
<span class="container-title">[[=z.token('package_info.navigation.overview')]]</span>
337339

338340
<div class="active" data-menu="info" data-title="[[=z.token('package_info.navigation.overview')]]">
339341
<i class="icon-cube"></i>

0 commit comments

Comments
 (0)