CH-J Server Managerการจัดการเซิร์ฟเวอร์ผ่าน SSH
เมนู
ซอร์สที่เผยแพร่

CH-J Server Manager

เรียกดูไดเรกทอรีและไฟล์ของรุ่นแอปพลิเคชันที่ระบุ

ดาวน์โหลด ZIP ของซอร์ส
CH-J / Server Manager 193 ไฟล์
core-20261011T184039Z-4148710795d0 วันที่เพิ่ม: ไม่ได้บันทึกวันที่ · วันที่บิลด์:
i18n.test.js วันที่เพิ่ม: ไม่ได้บันทึกวันที่ 1.8 KB · 36 บรรทัด
โค้ด ดาวน์โหลดไฟล์
1"use strict";
3const test = require("node:test");
4const assert = require("node:assert/strict");
5const fs = require("node:fs");
6const path = require("node:path");
7const { catalogs, createI18n, normalizeLanguage, supportedLanguages } = require("../src/renderer/i18n");
9test("all i18n catalogs expose the same translation keys", () => {
10 const expected = Object.keys(catalogs.cs).sort();
11 assert.deepEqual(supportedLanguages, ["cs", "de", "en"]);
12 for (const language of supportedLanguages) assert.deepEqual(Object.keys(catalogs[language]).sort(), expected);
13});
15test("i18n selects a supported language, interpolates values and falls back safely", () => {
16 const i18n = createI18n("de-DE");
17 assert.equal(i18n.getLanguage(), "de");
18 assert.equal(i18n.t("updates.channel", { channel: "alpha" }), "Kanal alpha");
19 assert.equal(i18n.t("missing.translation"), "missing.translation");
20 assert.equal(i18n.setLanguage("../../en"), "cs");
21 assert.equal(normalizeLanguage("en-US"), "en");
22});
24test("every translation key used by renderer markup exists in the catalogs", () => {
25 const html = fs.readFileSync(path.join(__dirname, "..", "src", "renderer", "index.html"), "utf8");
26 const keys = [...html.matchAll(/data-i18n(?:-placeholder|-aria-label)?="([^"]+)"/g)].map((match) => match[1]);
27 assert.ok(keys.length > 50);
28 for (const key of keys) assert.ok(key in catalogs.cs, `Missing renderer translation: ${key}`);
29});
31test("every literal dynamic translation key exists in the catalogs", () => {
32 const source = fs.readFileSync(path.join(__dirname, "..", "src", "renderer", "app.js"), "utf8");
33 const keys = [...source.matchAll(/\bt\("([^"]+)"/g)].map((match) => match[1]);
34 assert.ok(keys.length > 25);
35 for (const key of keys) assert.ok(key in catalogs.cs, `Missing dynamic translation: ${key}`);
36});
SHA-256e28748ae243a3775079c60abaf1504fb81377f238c8c952674467b60ff35dcf0

CH-J Proprietary Software License 1.14 · ซอร์สโค้ดนี้ให้ไว้ภายใต้ CH-J Proprietary Software License 1.14 การเปิดให้เข้าถึงไม่ได้เปลี่ยนแปลงเงื่อนไขของสัญญาอนุญาตหรือให้สิทธิ์เพิ่มเติม

SHA-256 ของไฟล์บีบอัด5a8ea02d06a5643cf2330fe9f54b8767a06c1c59d36527705e536fa9dbca7614
ไฟล์