@prosopo/locale 3.6.0 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$cjs.log +9 -7
- package/.turbo/turbo-build$colon$tsc.log +6 -6
- package/.turbo/turbo-build.log +11 -9
- package/CHANGELOG.md +31 -0
- package/dist/cjs/direction.cjs +19 -0
- package/dist/cjs/errorMessage.cjs +15 -0
- package/dist/cjs/index.cjs +5 -0
- package/dist/cjs/locales/en/translation.cjs +21 -4
- package/dist/cjs/translationKey.cjs +4 -0
- package/dist/direction.d.ts +3 -0
- package/dist/direction.d.ts.map +1 -0
- package/dist/direction.js +19 -0
- package/dist/direction.js.map +1 -0
- package/dist/errorMessage.d.ts +7 -0
- package/dist/errorMessage.d.ts.map +1 -0
- package/dist/errorMessage.js +15 -0
- package/dist/errorMessage.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/locales/ar/translation.json +21 -4
- package/dist/locales/az/translation.json +21 -4
- package/dist/locales/cs/translation.json +21 -4
- package/dist/locales/de/translation.json +21 -4
- package/dist/locales/el/translation.json +21 -4
- package/dist/locales/en/translation.js +21 -4
- package/dist/locales/en/translation.json +21 -4
- package/dist/locales/es/translation.json +21 -4
- package/dist/locales/fi/translation.json +22 -5
- package/dist/locales/fr/translation.json +21 -4
- package/dist/locales/hi/translation.json +424 -407
- package/dist/locales/hu/translation.json +21 -4
- package/dist/locales/id/translation.json +21 -4
- package/dist/locales/it/translation.json +21 -4
- package/dist/locales/ja/translation.json +21 -4
- package/dist/locales/jv/translation.json +21 -4
- package/dist/locales/ko/translation.json +21 -4
- package/dist/locales/ml/translation.json +21 -4
- package/dist/locales/ms/translation.json +21 -4
- package/dist/locales/nl/translation.json +22 -5
- package/dist/locales/no/translation.json +21 -4
- package/dist/locales/pl/translation.json +21 -4
- package/dist/locales/pt/translation.json +21 -4
- package/dist/locales/pt-BR/translation.json +21 -4
- package/dist/locales/ro/translation.json +21 -4
- package/dist/locales/ru/translation.json +21 -4
- package/dist/locales/sr/translation.json +21 -4
- package/dist/locales/sv/translation.json +21 -4
- package/dist/locales/th/translation.json +21 -4
- package/dist/locales/tr/translation.json +21 -4
- package/dist/locales/uk/translation.json +21 -4
- package/dist/locales/vi/translation.json +21 -4
- package/dist/locales/zh-CN/translation.json +21 -4
- package/dist/tests/direction.unit.test.d.ts +2 -0
- package/dist/tests/direction.unit.test.d.ts.map +1 -0
- package/dist/tests/direction.unit.test.js +31 -0
- package/dist/tests/direction.unit.test.js.map +1 -0
- package/dist/tests/errorMessage.unit.test.d.ts +2 -0
- package/dist/tests/errorMessage.unit.test.d.ts.map +1 -0
- package/dist/tests/errorMessage.unit.test.js +49 -0
- package/dist/tests/errorMessage.unit.test.js.map +1 -0
- package/dist/tests/i18nFrontend.unit.test.js +22 -11
- package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
- package/dist/tests/locale.test-d.js +18 -3
- package/dist/tests/locale.test-d.js.map +1 -1
- package/dist/tests/localePlaceholders.unit.test.d.ts +2 -0
- package/dist/tests/localePlaceholders.unit.test.d.ts.map +1 -0
- package/dist/tests/localePlaceholders.unit.test.js +35 -0
- package/dist/tests/localePlaceholders.unit.test.js.map +1 -0
- package/dist/tests/thrownErrorKeys.unit.test.d.ts +2 -0
- package/dist/tests/thrownErrorKeys.unit.test.d.ts.map +1 -0
- package/dist/tests/thrownErrorKeys.unit.test.js +59 -0
- package/dist/tests/thrownErrorKeys.unit.test.js.map +1 -0
- package/dist/tests/translationKey.unit.test.js +13 -1
- package/dist/tests/translationKey.unit.test.js.map +1 -1
- package/dist/translationKey.d.ts +7 -1
- package/dist/translationKey.d.ts.map +1 -1
- package/dist/translationKey.js +4 -1
- package/dist/translationKey.js.map +1 -1
- package/dist/translator.d.ts +2 -1
- package/dist/translator.d.ts.map +1 -1
- package/dist/translator.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/direction.ts +36 -0
- package/src/errorMessage.ts +37 -0
- package/src/index.ts +5 -1
- package/src/locales/ar/translation.json +21 -4
- package/src/locales/az/translation.json +21 -4
- package/src/locales/cs/translation.json +21 -4
- package/src/locales/de/translation.json +21 -4
- package/src/locales/el/translation.json +21 -4
- package/src/locales/en/translation.json +21 -4
- package/src/locales/es/translation.json +21 -4
- package/src/locales/fi/translation.json +22 -5
- package/src/locales/fr/translation.json +21 -4
- package/src/locales/hi/translation.json +424 -407
- package/src/locales/hu/translation.json +21 -4
- package/src/locales/id/translation.json +21 -4
- package/src/locales/it/translation.json +21 -4
- package/src/locales/ja/translation.json +21 -4
- package/src/locales/jv/translation.json +21 -4
- package/src/locales/ko/translation.json +21 -4
- package/src/locales/ml/translation.json +21 -4
- package/src/locales/ms/translation.json +21 -4
- package/src/locales/nl/translation.json +22 -5
- package/src/locales/no/translation.json +21 -4
- package/src/locales/pl/translation.json +21 -4
- package/src/locales/pt/translation.json +21 -4
- package/src/locales/pt-BR/translation.json +21 -4
- package/src/locales/ro/translation.json +21 -4
- package/src/locales/ru/translation.json +21 -4
- package/src/locales/sr/translation.json +21 -4
- package/src/locales/sv/translation.json +21 -4
- package/src/locales/th/translation.json +21 -4
- package/src/locales/tr/translation.json +21 -4
- package/src/locales/uk/translation.json +21 -4
- package/src/locales/vi/translation.json +21 -4
- package/src/locales/zh-CN/translation.json +21 -4
- package/src/tests/direction.unit.test.ts +52 -0
- package/src/tests/errorMessage.unit.test.ts +84 -0
- package/src/tests/i18nFrontend.unit.test.ts +25 -14
- package/src/tests/locale.test-d.ts +26 -2
- package/src/tests/localePlaceholders.unit.test.ts +81 -0
- package/src/tests/thrownErrorKeys.unit.test.ts +91 -0
- package/src/tests/translationKey.unit.test.ts +15 -0
- package/src/translationKey.ts +14 -5
- package/src/translator.ts +3 -2
- package/src/types.ts +6 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "Chữ ký không hợp lệ",
|
|
11
11
|
"SITE_KEY_MISSING": "SITE KEY thiếu",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "Không tìm thấy tài khoản",
|
|
13
|
-
"INVALID_TIMESTAMP": "Thời điểm không hợp lệ"
|
|
13
|
+
"INVALID_TIMESTAMP": "Thời điểm không hợp lệ",
|
|
14
|
+
"MISSING_AUTH_HEADER": "Thiếu tiêu đề ủy quyền",
|
|
15
|
+
"INVALID_JWT": "JWT không hợp lệ"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "Không đủ quyền để thực hiện hành động này",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "Các yêu cầu từ kết nối mạng di động không được phép cho trang web này",
|
|
55
57
|
"SATELLITE_BLOCKED": "Các yêu cầu từ kết nối vệ tinh không được phép cho trang web này",
|
|
56
58
|
"CRAWLER_BLOCKED": "Các yêu cầu từ trình thu thập dữ liệu đã biết không được phép cho trang web này",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "Yêu cầu từ trình duyệt trong ứng dụng (WebView) không được phép cho trang web này"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "Yêu cầu từ trình duyệt trong ứng dụng (WebView) không được phép cho trang web này",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "Lỗi máy chủ nội bộ"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "Không thể sửa đổi người dùng chủ sở hữu",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "Procaptcha yêu cầu kết nối an toàn (HTTPS)",
|
|
382
385
|
"CHECKING": "Đang xác minh bạn là người thật",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "Thử thách hình ảnh",
|
|
387
|
+
"CANNOT_LOAD": "Không thể tải CAPTCHA",
|
|
388
|
+
"RELOAD": "Tải lại",
|
|
389
|
+
"VERIFIED_AGENT": "Tác nhân đã xác minh",
|
|
390
|
+
"TRUSTED_REQUEST": "Yêu cầu đáng tin cậy",
|
|
391
|
+
"LOADING": "Đang tải",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "Thử thách ghép hình",
|
|
386
394
|
"DRAG": "Kéo mảnh ghép đến vị trí đích",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "Bảng chưa xác định",
|
|
437
445
|
"CONNECTION_UNDEFINED": "Kết nối không xác định",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "Không thể đánh dấu cam kết là đã xử lý",
|
|
439
|
-
"UNKNOWN": "Lỗi cơ sở dữ liệu không xác định"
|
|
447
|
+
"UNKNOWN": "Lỗi cơ sở dữ liệu không xác định",
|
|
448
|
+
"QUERY_ERROR": "Truy vấn cơ sở dữ liệu thất bại",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Chưa xác định kết nối Redis cho quy tắc truy cập",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "Chưa xác định bộ lưu trữ quy tắc truy cập người dùng",
|
|
451
|
+
"SESSION_STORE_FAILED": "Không thể lưu phiên",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "Không thể kiểm tra và xóa phiên",
|
|
453
|
+
"SESSION_GET_FAILED": "Không thể lấy phiên"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "Lỗi phân tích captcha",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "Salt không hợp lệ",
|
|
456
470
|
"INVALID_TOKEN": "Token không hợp lệ",
|
|
457
471
|
"INVALID_SOLUTION": "Giải pháp không hợp lệ",
|
|
458
|
-
"DECRYPTION_ERROR": "Lỗi giải mã"
|
|
472
|
+
"DECRYPTION_ERROR": "Lỗi giải mã",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "Không tìm thấy lời giải",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "Bị máy quyết định từ chối",
|
|
475
|
+
"INVALID_TIMESTAMP": "Thời điểm không hợp lệ"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "Tham số không hợp lệ"
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"INVALID_SIGNATURE": "无效的签名",
|
|
11
11
|
"SITE_KEY_MISSING": "缺少SITE KEY",
|
|
12
12
|
"ACCOUNT_NOT_FOUND": "找不到帐户",
|
|
13
|
-
"INVALID_TIMESTAMP": "无效的时间戳"
|
|
13
|
+
"INVALID_TIMESTAMP": "无效的时间戳",
|
|
14
|
+
"MISSING_AUTH_HEADER": "缺少授权标头",
|
|
15
|
+
"INVALID_JWT": "无效的 JWT"
|
|
14
16
|
},
|
|
15
17
|
"API": {
|
|
16
18
|
"INSUFFICIENT_PERMISSIONS": "权限不足,无法执行此操作",
|
|
@@ -54,7 +56,8 @@
|
|
|
54
56
|
"MOBILE_BLOCKED": "此网站不允许来自移动网络连接的请求",
|
|
55
57
|
"SATELLITE_BLOCKED": "此网站不允许来自卫星连接的请求",
|
|
56
58
|
"CRAWLER_BLOCKED": "此网站不允许来自已知爬虫的请求",
|
|
57
|
-
"DISALLOWED_WEBVIEW": "此站点不允许来自应用内浏览器 (WebView) 的请求"
|
|
59
|
+
"DISALLOWED_WEBVIEW": "此站点不允许来自应用内浏览器 (WebView) 的请求",
|
|
60
|
+
"INTERNAL_SERVER_ERROR": "服务器内部错误"
|
|
58
61
|
},
|
|
59
62
|
"PORTAL": {
|
|
60
63
|
"CANNOT_MODIFY_OWNER_USER": "无法修改所有者用户",
|
|
@@ -381,6 +384,11 @@
|
|
|
381
384
|
"INSECURE_CONTEXT": "Procaptcha 需要安全连接 (HTTPS)",
|
|
382
385
|
"CHECKING": "正在验证您是真人",
|
|
383
386
|
"IMAGE_DIALOG_LABEL": "图片验证",
|
|
387
|
+
"CANNOT_LOAD": "无法加载验证码",
|
|
388
|
+
"RELOAD": "重新加载",
|
|
389
|
+
"VERIFIED_AGENT": "已验证的代理",
|
|
390
|
+
"TRUSTED_REQUEST": "受信任的请求",
|
|
391
|
+
"LOADING": "加载中",
|
|
384
392
|
"PUZZLE": {
|
|
385
393
|
"DIALOG_LABEL": "拼图验证",
|
|
386
394
|
"DRAG": "将拼块拖到目标位置",
|
|
@@ -436,7 +444,13 @@
|
|
|
436
444
|
"TABLES_UNDEFINED": "未定义表",
|
|
437
445
|
"CONNECTION_UNDEFINED": "连接未定义",
|
|
438
446
|
"COMMITMENT_FLAG_FAILED": "标记承诺为已处理失败",
|
|
439
|
-
"UNKNOWN": "未知数据库错误"
|
|
447
|
+
"UNKNOWN": "未知数据库错误",
|
|
448
|
+
"QUERY_ERROR": "数据库查询失败",
|
|
449
|
+
"REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "访问规则的 Redis 连接未定义",
|
|
450
|
+
"USER_ACCESS_RULES_STORAGE_UNDEFINED": "用户访问规则存储未定义",
|
|
451
|
+
"SESSION_STORE_FAILED": "存储会话失败",
|
|
452
|
+
"SESSION_CHECK_REMOVE_FAILED": "检查并移除会话失败",
|
|
453
|
+
"SESSION_GET_FAILED": "获取会话失败"
|
|
440
454
|
},
|
|
441
455
|
"CAPTCHA": {
|
|
442
456
|
"PARSE_ERROR": "解析验证码时出错",
|
|
@@ -455,7 +469,10 @@
|
|
|
455
469
|
"INVALID_SALT": "盐值无效",
|
|
456
470
|
"INVALID_TOKEN": "无效的令牌",
|
|
457
471
|
"INVALID_SOLUTION": "无效的解决方案",
|
|
458
|
-
"DECRYPTION_ERROR": "解密错误"
|
|
472
|
+
"DECRYPTION_ERROR": "解密错误",
|
|
473
|
+
"SOLUTION_NOT_FOUND": "未找到解答",
|
|
474
|
+
"DECISION_MACHINE_DENIED": "被决策机拒绝",
|
|
475
|
+
"INVALID_TIMESTAMP": "无效的时间戳"
|
|
459
476
|
},
|
|
460
477
|
"CLI": {
|
|
461
478
|
"PARAMETER_ERROR": "无效的参数"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direction.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/direction.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { getLanguageDirection } from "../direction.js";
|
|
3
|
+
import { LanguageCodes } from "../translations.js";
|
|
4
|
+
describe("getLanguageDirection", () => {
|
|
5
|
+
test("is rtl for Arabic", () => {
|
|
6
|
+
expect(getLanguageDirection("ar")).toBe("rtl");
|
|
7
|
+
});
|
|
8
|
+
test("is rtl for regional and differently-cased Arabic tags", () => {
|
|
9
|
+
expect(getLanguageDirection("ar-EG")).toBe("rtl");
|
|
10
|
+
expect(getLanguageDirection("AR_sa")).toBe("rtl");
|
|
11
|
+
});
|
|
12
|
+
test("is rtl for other right-to-left scripts", () => {
|
|
13
|
+
for (const language of ["he", "fa", "ur", "yi"]) {
|
|
14
|
+
expect(getLanguageDirection(language)).toBe("rtl");
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
test("is ltr for every other shipped language", () => {
|
|
18
|
+
const others = LanguageCodes.filter((code) => code !== "ar");
|
|
19
|
+
for (const language of others) {
|
|
20
|
+
expect(getLanguageDirection(language)).toBe("ltr");
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
test("is ltr for an empty or unknown tag", () => {
|
|
24
|
+
expect(getLanguageDirection("")).toBe("ltr");
|
|
25
|
+
expect(getLanguageDirection("xx")).toBe("ltr");
|
|
26
|
+
});
|
|
27
|
+
test("matches only the primary subtag", () => {
|
|
28
|
+
expect(getLanguageDirection("en-AR")).toBe("ltr");
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=direction.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direction.unit.test.js","sourceRoot":"","sources":["../../src/tests/direction.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACnD,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAa,aAAa,CAAC,MAAM,CAC5C,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAC/B,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMessage.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/errorMessage.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { flatten } from "@prosopo/util";
|
|
2
|
+
import { describe, expect, test } from "vitest";
|
|
3
|
+
import { localiseErrorMessage } from "../errorMessage.js";
|
|
4
|
+
import de from "../locales/de/translation.json" with { type: "json" };
|
|
5
|
+
const i18nIn = (catalogue, isInitialized = true) => {
|
|
6
|
+
const flat = flatten(catalogue);
|
|
7
|
+
return {
|
|
8
|
+
language: "de",
|
|
9
|
+
isInitialized,
|
|
10
|
+
t: (key, options) => flat[key] ?? options?.defaultValue ?? key,
|
|
11
|
+
changeLanguage: async () => undefined,
|
|
12
|
+
hasLoadedNamespace: () => isInitialized,
|
|
13
|
+
on: () => undefined,
|
|
14
|
+
off: () => undefined,
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const germanI18n = () => i18nIn(de);
|
|
18
|
+
describe("localiseErrorMessage", () => {
|
|
19
|
+
test("translates a catalogue key into the widget's language, not the server's", () => {
|
|
20
|
+
const i18n = germanI18n();
|
|
21
|
+
expect(localiseErrorMessage(i18n, {
|
|
22
|
+
message: "Invalid site key",
|
|
23
|
+
key: "API.INVALID_SITE_KEY",
|
|
24
|
+
})).toBe("Ungültiger Site-Schlüssel");
|
|
25
|
+
});
|
|
26
|
+
test("keeps the server message when the key is not in the catalogue", () => {
|
|
27
|
+
const i18n = germanI18n();
|
|
28
|
+
expect(localiseErrorMessage(i18n, {
|
|
29
|
+
message: "upstream timed out",
|
|
30
|
+
key: "API.NOT_A_REAL_KEY",
|
|
31
|
+
})).toBe("upstream timed out");
|
|
32
|
+
});
|
|
33
|
+
test("keeps the server message when there is no key", () => {
|
|
34
|
+
const i18n = germanI18n();
|
|
35
|
+
expect(localiseErrorMessage(i18n, { message: "Invalid site key" })).toBe("Invalid site key");
|
|
36
|
+
});
|
|
37
|
+
test("keeps the server message until i18n is initialised", () => {
|
|
38
|
+
const i18n = i18nIn(de, false);
|
|
39
|
+
expect(localiseErrorMessage(i18n, {
|
|
40
|
+
message: "Invalid site key",
|
|
41
|
+
key: "API.INVALID_SITE_KEY",
|
|
42
|
+
})).toBe("Invalid site key");
|
|
43
|
+
expect(localiseErrorMessage(undefined, {
|
|
44
|
+
message: "Invalid site key",
|
|
45
|
+
key: "API.INVALID_SITE_KEY",
|
|
46
|
+
})).toBe("Invalid site key");
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=errorMessage.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorMessage.unit.test.js","sourceRoot":"","sources":["../../src/tests/errorMessage.unit.test.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAKtE,MAAM,MAAM,GAAG,CACd,SAAkC,EAClC,aAAa,GAAG,IAAI,EACZ,EAAE;IACV,MAAM,IAAI,GAA2B,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,OAAO;QACN,QAAQ,EAAE,IAAI;QACd,aAAa;QACb,CAAC,EAAE,CAAC,GAAW,EAAE,OAA0B,EAAU,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,YAAY,IAAI,GAAG;QAC1C,cAAc,EAAE,KAAK,IAAmB,EAAE,CAAC,SAAS;QACpD,kBAAkB,EAAE,GAAY,EAAE,CAAC,aAAa;QAChD,EAAE,EAAE,GAAS,EAAE,CAAC,SAAS;QACzB,GAAG,EAAE,GAAS,EAAE,CAAC,SAAS;KAC1B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACpF,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QAC1E,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,oBAAoB;SACzB,CAAC,CACF,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CACvE,kBAAkB,CAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,MAAM,CACL,oBAAoB,CAAC,SAAS,EAAE;YAC/B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -129,17 +129,25 @@ describe("translating", () => {
|
|
|
129
129
|
});
|
|
130
130
|
test("substitutes interpolation values", async () => {
|
|
131
131
|
const harness = await load({
|
|
132
|
-
catalogues: {
|
|
132
|
+
catalogues: {
|
|
133
|
+
en: { WIDGET: { PUZZLE: { POSITION: "{{x}} across, {{y}} down" } } },
|
|
134
|
+
},
|
|
133
135
|
});
|
|
134
|
-
expect((await initialised(harness)).t("POSITION", {
|
|
136
|
+
expect((await initialised(harness)).t("WIDGET.PUZZLE.POSITION", {
|
|
137
|
+
x: 10,
|
|
138
|
+
y: 20,
|
|
139
|
+
})).toBe("10 across, 20 down");
|
|
135
140
|
});
|
|
136
141
|
test("falls back to English when the translation lacks the key", async () => {
|
|
137
142
|
const harness = await load({
|
|
138
|
-
catalogues: {
|
|
143
|
+
catalogues: {
|
|
144
|
+
fr: { WIDGET: { SUBMIT: "gardé" } },
|
|
145
|
+
en: { WIDGET: { SUBMIT: "kept", CANCEL: "only" } },
|
|
146
|
+
},
|
|
139
147
|
});
|
|
140
148
|
const i18n = await initialised(harness, "fr");
|
|
141
|
-
expect(i18n.t("
|
|
142
|
-
expect(i18n.t("
|
|
149
|
+
expect(i18n.t("WIDGET.SUBMIT")).toBe("gardé");
|
|
150
|
+
expect(i18n.t("WIDGET.CANCEL")).toBe("only");
|
|
143
151
|
});
|
|
144
152
|
test("falls back to the caller's default when no catalogue has the key", async () => {
|
|
145
153
|
const harness = await load({ catalogues: { en: {} } });
|
|
@@ -149,20 +157,20 @@ describe("translating", () => {
|
|
|
149
157
|
});
|
|
150
158
|
test("interpolates the default too", async () => {
|
|
151
159
|
const harness = await load({ catalogues: { en: {} } });
|
|
152
|
-
expect((await initialised(harness)).t("POSITION", {
|
|
160
|
+
expect((await initialised(harness)).t("WIDGET.PUZZLE.POSITION", {
|
|
153
161
|
defaultValue: "{{x}} across",
|
|
154
162
|
x: 7,
|
|
155
163
|
})).toBe("7 across");
|
|
156
164
|
});
|
|
157
165
|
test("falls back to the key when there is no default either", async () => {
|
|
158
166
|
const harness = await load({ catalogues: { en: {} } });
|
|
159
|
-
expect((await initialised(harness)).t("WIDGET.
|
|
167
|
+
expect((await initialised(harness)).t("WIDGET.SUBMIT")).toBe("WIDGET.SUBMIT");
|
|
160
168
|
});
|
|
161
169
|
test("leaves a placeholder alone when no value was supplied for it", async () => {
|
|
162
170
|
const harness = await load({
|
|
163
|
-
catalogues: { en: {
|
|
171
|
+
catalogues: { en: { WIDGET: { SUBMIT: "hello {{name}}" } } },
|
|
164
172
|
});
|
|
165
|
-
expect((await initialised(harness)).t("
|
|
173
|
+
expect((await initialised(harness)).t("WIDGET.SUBMIT", { other: 1 })).toBe("hello {{name}}");
|
|
166
174
|
});
|
|
167
175
|
});
|
|
168
176
|
describe("when the catalogue cannot be fetched", () => {
|
|
@@ -180,12 +188,15 @@ describe("when the catalogue cannot be fetched", () => {
|
|
|
180
188
|
describe("switching language", () => {
|
|
181
189
|
test("loads the new catalogue and translates against it", async () => {
|
|
182
190
|
const harness = await load({
|
|
183
|
-
catalogues: {
|
|
191
|
+
catalogues: {
|
|
192
|
+
en: { WIDGET: { SUBMIT: "yes" } },
|
|
193
|
+
de: { WIDGET: { SUBMIT: "ja" } },
|
|
194
|
+
},
|
|
184
195
|
});
|
|
185
196
|
const i18n = await initialised(harness, "en");
|
|
186
197
|
await i18n.changeLanguage("de");
|
|
187
198
|
expect(i18n.language).toBe("de");
|
|
188
|
-
expect(i18n.t("
|
|
199
|
+
expect(i18n.t("WIDGET.SUBMIT")).toBe("ja");
|
|
189
200
|
});
|
|
190
201
|
test("notifies subscribers", async () => {
|
|
191
202
|
const harness = await load({ catalogues: { en: {}, de: {} } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18nFrontend.unit.test.js","sourceRoot":"","sources":["../../src/tests/i18nFrontend.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18nFrontend.unit.test.js","sourceRoot":"","sources":["../../src/tests/i18nFrontend.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assertType, describe, expectTypeOf, it } from "vitest";
|
|
2
|
-
import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, loadI18next, translationKeys, } from "../index.js";
|
|
2
|
+
import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, isTranslationKey, loadI18next, translationKeys, } from "../index.js";
|
|
3
3
|
describe("Languages", () => {
|
|
4
4
|
it("is a frozen const map of name to code, not a widened record", () => {
|
|
5
5
|
expectTypeOf(Languages.english).toEqualTypeOf();
|
|
@@ -25,8 +25,23 @@ describe("isLanguage", () => {
|
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
describe("TranslationKey", () => {
|
|
28
|
-
it("is
|
|
29
|
-
expectTypeOf().
|
|
28
|
+
it("is the union of the English catalogue's leaf paths", () => {
|
|
29
|
+
expectTypeOf().toExtend();
|
|
30
|
+
expectTypeOf().toExtend();
|
|
31
|
+
expectTypeOf().not.toExtend();
|
|
32
|
+
});
|
|
33
|
+
it("rejects a mistyped key", () => {
|
|
34
|
+
assertType("WIDGET.I_AM_HUMANN");
|
|
35
|
+
});
|
|
36
|
+
it("rejects a branch, which has no text of its own", () => {
|
|
37
|
+
assertType("WIDGET");
|
|
38
|
+
});
|
|
39
|
+
it("rejects a mistyped key at a translate call", () => {
|
|
40
|
+
const translate = (key) => key;
|
|
41
|
+
translate("API.UNKNOWNN");
|
|
42
|
+
});
|
|
43
|
+
it("narrows a runtime string with isTranslationKey", () => {
|
|
44
|
+
expectTypeOf(isTranslationKey).guards.toEqualTypeOf();
|
|
30
45
|
});
|
|
31
46
|
it("accepts a key literal, so error call sites need no cast", () => {
|
|
32
47
|
assertType("API.UNKNOWN");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAEN,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAEN,aAAa,EACb,SAAS,EAIT,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,eAAe,GACf,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QAItE,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,EAAQ,CAAC;QACtD,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,EAAW,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAEvC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAE3D,SAAS,CAAC,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,YAAY,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,aAAa,EAAY,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACzE,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,YAAY,EAAY,CAAC,QAAQ,EAAU,CAAC;QAC5C,UAAU,CAAW,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,YAAY,EAAuB,CAAC,QAAQ,EAAkB,CAAC;QAC/D,YAAY,EAAyB,CAAC,QAAQ,EAAkB,CAAC;QACjE,YAAY,EAAU,CAAC,GAAG,CAAC,QAAQ,EAAkB,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAEjC,UAAU,CAAiB,oBAAoB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAEzD,UAAU,CAAiB,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,SAAS,GAAgB,CAAC,GAAmB,EAAU,EAAE,CAAC,GAAG,CAAC;QAEpE,SAAS,CAAC,cAAc,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,YAAY,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,aAAa,EAAkB,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAGlE,UAAU,CAAiB,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE/C,YAAY,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAqB,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC1D,YAAY,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAqB,CAAC;IAC3D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,YAAY,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,EAAM,CAAC;QAC1D,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,aAAa,EAAW,CAAC;IAC7D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,YAAY,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,YAAY,CAAC,WAAW,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE3C,WAAW,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAG/C,WAAW,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,aAAa,EAAkB,CAAC;IACnE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,YAAY,EAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1C,YAAY,EAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,YAAY,EAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,YAAY,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAClD,YAAY,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAoB,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAEpC,cAAc,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE/C,cAAc,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC5E,YAAY,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC3D,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjE,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnE,YAAY,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAE3D,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localePlaceholders.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { Languages } from "../index.js";
|
|
5
|
+
const readLocale = (locale) => JSON.parse(fs.readFileSync(path.resolve(`./src/locales/${locale}/translation.json`), "utf8"));
|
|
6
|
+
const flatten = (tree, prefix = "") => Object.entries(tree).flatMap(([key, value]) => typeof value === "string"
|
|
7
|
+
? [[`${prefix}${key}`, value]]
|
|
8
|
+
: flatten(value, `${prefix}${key}.`));
|
|
9
|
+
const placeholders = (text) => (text.match(/\{\{[^}]*\}\}/g) ?? [])
|
|
10
|
+
.map((token) => token.replace(/\s+/g, ""))
|
|
11
|
+
.sort();
|
|
12
|
+
const en = new Map(flatten(readLocale("en")));
|
|
13
|
+
const locales = Object.values(Languages).filter((locale) => locale !== "en");
|
|
14
|
+
describe("locale interpolation placeholders", () => {
|
|
15
|
+
it.each(locales)("%s keeps every {{placeholder}} of the en source", (locale) => {
|
|
16
|
+
const mismatches = flatten(readLocale(locale))
|
|
17
|
+
.filter(([key, value]) => en.has(key) &&
|
|
18
|
+
placeholders(value).join() !==
|
|
19
|
+
placeholders(en.get(key) ?? "").join())
|
|
20
|
+
.map(([key, value]) => `${key}: ${value}`);
|
|
21
|
+
expect(mismatches).toEqual([]);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
describe("hi translations", () => {
|
|
25
|
+
it("keep their Devanagari vowel signs", () => {
|
|
26
|
+
const devanagariLetter = /[ऄ-हक़-ॡ]/gu;
|
|
27
|
+
const sign = /[ऀ-ःऺ-ॏॕ-ॗॢॣ]/u;
|
|
28
|
+
const stripped = flatten(readLocale("hi"))
|
|
29
|
+
.filter(([, value]) => (value.match(devanagariLetter) ?? []).length >= 4 &&
|
|
30
|
+
!sign.test(value))
|
|
31
|
+
.map(([key, value]) => `${key}: ${value}`);
|
|
32
|
+
expect(stripped).toEqual([]);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=localePlaceholders.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localePlaceholders.unit.test.js","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thrownErrorKeys.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/thrownErrorKeys.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { describe, expect, test } from "vitest";
|
|
4
|
+
import translationEn from "../locales/en/translation.json" with {
|
|
5
|
+
type: "json"
|
|
6
|
+
};
|
|
7
|
+
const PACKAGES_DIR = path.resolve("..");
|
|
8
|
+
const THROWN_KEY = /Error\(\s*["']([A-Z][A-Z_]*\.[A-Z0-9_]+)["']/g;
|
|
9
|
+
const REASON_KEY = /=\s*"([A-Z][A-Z_]*\.[A-Z0-9_]+)"/g;
|
|
10
|
+
const isCatalogueKey = (key) => {
|
|
11
|
+
const [section, name] = key.split(".");
|
|
12
|
+
const entries = section && section in translationEn
|
|
13
|
+
? translationEn[section]
|
|
14
|
+
: undefined;
|
|
15
|
+
return name !== undefined && entries !== undefined && name in entries;
|
|
16
|
+
};
|
|
17
|
+
const sourceFiles = (dir) => fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
|
|
18
|
+
const full = path.join(dir, entry.name);
|
|
19
|
+
if (entry.isDirectory()) {
|
|
20
|
+
return entry.name === "tests" || entry.name === "node_modules"
|
|
21
|
+
? []
|
|
22
|
+
: sourceFiles(full);
|
|
23
|
+
}
|
|
24
|
+
return entry.name.endsWith(".ts") && !entry.name.includes(".test.")
|
|
25
|
+
? [full]
|
|
26
|
+
: [];
|
|
27
|
+
});
|
|
28
|
+
const workspaceSources = () => fs
|
|
29
|
+
.readdirSync(PACKAGES_DIR)
|
|
30
|
+
.map((name) => path.join(PACKAGES_DIR, name, "src"))
|
|
31
|
+
.filter((dir) => fs.existsSync(dir))
|
|
32
|
+
.flatMap(sourceFiles);
|
|
33
|
+
const uncataloguedKeys = (files, pattern) => {
|
|
34
|
+
const missing = new Set();
|
|
35
|
+
for (const file of files) {
|
|
36
|
+
for (const match of fs.readFileSync(file, "utf8").matchAll(pattern)) {
|
|
37
|
+
const key = match[1];
|
|
38
|
+
if (key && !isCatalogueKey(key)) {
|
|
39
|
+
missing.add(`${key} (${path.relative(PACKAGES_DIR, file)})`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return [...missing].sort();
|
|
44
|
+
};
|
|
45
|
+
describe("error keys", () => {
|
|
46
|
+
test("every key an error class is constructed with is in the catalogue", () => {
|
|
47
|
+
expect(uncataloguedKeys(workspaceSources(), THROWN_KEY)).toEqual([]);
|
|
48
|
+
});
|
|
49
|
+
test("every ResultReason is in the catalogue", () => {
|
|
50
|
+
const reasons = path.join(PACKAGES_DIR, "types/src/provider/reasons.ts");
|
|
51
|
+
expect(uncataloguedKeys([reasons], REASON_KEY)).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
test("the scan finds the keys it is looking for", () => {
|
|
54
|
+
const found = workspaceSources().flatMap((file) => [...fs.readFileSync(file, "utf8").matchAll(THROWN_KEY)].map((match) => match[1]));
|
|
55
|
+
expect(found).toContain("DATABASE.DATABASE_IMPORT_FAILED");
|
|
56
|
+
expect(found.length).toBeGreaterThan(100);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=thrownErrorKeys.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thrownErrorKeys.unit.test.js","sourceRoot":"","sources":["../../src/tests/thrownErrorKeys.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { describe, expect, test } from "vitest";
|
|
|
2
2
|
import translationEn from "../locales/en/translation.json" with {
|
|
3
3
|
type: "json"
|
|
4
4
|
};
|
|
5
|
-
import { getLeafFieldPath, translationKeys, } from "../translationKey.js";
|
|
5
|
+
import { getLeafFieldPath, isTranslationKey, translationKeys, } from "../translationKey.js";
|
|
6
6
|
describe("getLeafFieldPath", () => {
|
|
7
7
|
test("returns no paths for a bare string, which is a leaf and not a container", () => {
|
|
8
8
|
expect(getLeafFieldPath("a string")).toEqual([]);
|
|
@@ -83,4 +83,16 @@ describe("translationKeys", () => {
|
|
|
83
83
|
expect(translationKeys).not.toContain("");
|
|
84
84
|
});
|
|
85
85
|
});
|
|
86
|
+
describe("isTranslationKey", () => {
|
|
87
|
+
test("accepts a leaf of the English catalogue", () => {
|
|
88
|
+
expect(isTranslationKey("WIDGET.I_AM_HUMAN")).toBe(true);
|
|
89
|
+
expect(isTranslationKey("API.INVALID_SITE_KEY")).toBe(true);
|
|
90
|
+
});
|
|
91
|
+
test("rejects a section, a mistyped key, free text and the empty string", () => {
|
|
92
|
+
expect(isTranslationKey("WIDGET")).toBe(false);
|
|
93
|
+
expect(isTranslationKey("WIDGET.I_AM_HUMANN")).toBe(false);
|
|
94
|
+
expect(isTranslationKey("Invalid site key")).toBe(false);
|
|
95
|
+
expect(isTranslationKey("")).toBe(false);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
86
98
|
//# sourceMappingURL=translationKey.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translationKey.unit.test.js","sourceRoot":"","sources":["../../src/tests/translationKey.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"translationKey.unit.test.js","sourceRoot":"","sources":["../../src/tests/translationKey.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,aAAa,MAAM,gCAAgC,CAAC;IAC1D,IAAI,EAAE,MAAM;CACZ,CAAC;AACF,OAAO,EAEN,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GACf,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACpF,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAMH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/D,aAAa;SACb,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC7D,MAAM,CACL,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CACtE,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACpE,SAAS;SACT,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACxD,MAAM,CACL,gBAAgB,CAAC;YAChB,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YACrB,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;SAC9B,CAAC,CACF,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAKH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,UAAU;SACV,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAOH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG;YACZ,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SACA,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAC3C,gCAAgC,CAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG;YACZ,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE;SACT,CAAC;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACtC,MAAM,IAAI,GAAoB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,MAAM,IAAI,GAAG,gBAAgB,CAAC,aAAgC,CAAC,CAAC;IAEhE,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC9E,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/translationKey.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import translationEn from "./locales/en/translation.json";
|
|
1
2
|
export type TranslationNode = {
|
|
2
3
|
[key: string]: TranslationNode | string;
|
|
3
4
|
} | string;
|
|
4
5
|
export declare function getLeafFieldPath(obj: TranslationNode): string[];
|
|
5
6
|
export declare const translationKeys: string[];
|
|
6
|
-
|
|
7
|
+
type LeafPath<Node> = {
|
|
8
|
+
[Key in keyof Node & string]: Node[Key] extends string ? Key : `${Key}.${LeafPath<Node[Key]>}`;
|
|
9
|
+
}[keyof Node & string];
|
|
10
|
+
export type TranslationKey = LeafPath<typeof translationEn>;
|
|
11
|
+
export declare const isTranslationKey: (value: string) => value is TranslationKey;
|
|
12
|
+
export {};
|
|
7
13
|
//# sourceMappingURL=translationKey.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translationKey.d.ts","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"translationKey.d.ts","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"AAcA,OAAO,aAAa,MAAM,+BAA+B,CAAuB;AAEhF,MAAM,MAAM,eAAe,GACxB;IACA,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC;CACvC,GACD,MAAM,CAAC;AAKV,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA8B/D;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,EAAoC,CAAC;AAEzE,KAAK,QAAQ,CAAC,IAAI,IAAI;KACpB,GAAG,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,GACnD,GAAG,GACH,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;CAClC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC;AAGvB,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAK5D,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,KAAK,IAAI,cAC7B,CAAC"}
|