




























@@ -1,6 +1,6 @@
11import fs from "node:fs";
22import { fileURLToPath } from "node:url";
3-import { beforeAll, describe, expect, it } from "vitest";
3+import { describe, expect, it } from "vitest";
4455type TranslationTree = {
66readonly [key: string]: string | TranslationTree | undefined;
@@ -18,7 +18,17 @@ const describeWhenUiI18nPresent = fs.existsSync(fileURLToPath(registryModuleUrl)
1818 ? describe
1919 : describe.skip;
202021-let registry: LocaleRegistry;
21+const registry =
22+describeWhenUiI18nPresent === describe
23+ ? ((await import("../../ui/src/i18n/lib/registry.ts")) as LocaleRegistry)
24+ : undefined;
25+26+function getRegistry(): LocaleRegistry {
27+if (registry === undefined) {
28+throw new Error("expected UI i18n registry to be present");
29+}
30+return registry;
31+}
22322333function getNestedTranslation(map: TranslationTree | null, ...path: string[]): string | undefined {
2434let value: string | TranslationTree | undefined = map ?? undefined;
@@ -32,12 +42,10 @@ function getNestedTranslation(map: TranslationTree | null, ...path: string[]): s
3242}
33433444describeWhenUiI18nPresent("ui i18n locale registry", () => {
35-beforeAll(async () => {
36-registry = (await import("../../ui/src/i18n/lib/registry.ts")) as LocaleRegistry;
37-});
38-3945it("lists supported locales", () => {
40-expect(registry.SUPPORTED_LOCALES).toEqual([
46+const localeRegistry = getRegistry();
47+48+expect(localeRegistry.SUPPORTED_LOCALES).toEqual([
4149"en",
4250"zh-CN",
4351"zh-TW",
@@ -53,34 +61,37 @@ describeWhenUiI18nPresent("ui i18n locale registry", () => {
5361"pl",
5462"th",
5563]);
56-expect(registry.DEFAULT_LOCALE).toBe("en");
64+expect(localeRegistry.DEFAULT_LOCALE).toBe("en");
5765});
58665967it("resolves browser locale fallbacks", () => {
60-expect(registry.resolveNavigatorLocale("de-DE")).toBe("de");
61-expect(registry.resolveNavigatorLocale("es-ES")).toBe("es");
62-expect(registry.resolveNavigatorLocale("es-MX")).toBe("es");
63-expect(registry.resolveNavigatorLocale("pt-PT")).toBe("pt-BR");
64-expect(registry.resolveNavigatorLocale("zh-HK")).toBe("zh-TW");
65-expect(registry.resolveNavigatorLocale("en-US")).toBe("en");
66-expect(registry.resolveNavigatorLocale("ja-JP")).toBe("ja-JP");
67-expect(registry.resolveNavigatorLocale("ko-KR")).toBe("ko");
68-expect(registry.resolveNavigatorLocale("fr-CA")).toBe("fr");
69-expect(registry.resolveNavigatorLocale("tr-TR")).toBe("tr");
70-expect(registry.resolveNavigatorLocale("uk-UA")).toBe("uk");
71-expect(registry.resolveNavigatorLocale("id-ID")).toBe("id");
72-expect(registry.resolveNavigatorLocale("pl-PL")).toBe("pl");
73-expect(registry.resolveNavigatorLocale("th-TH")).toBe("th");
68+const localeRegistry = getRegistry();
69+70+expect(localeRegistry.resolveNavigatorLocale("de-DE")).toBe("de");
71+expect(localeRegistry.resolveNavigatorLocale("es-ES")).toBe("es");
72+expect(localeRegistry.resolveNavigatorLocale("es-MX")).toBe("es");
73+expect(localeRegistry.resolveNavigatorLocale("pt-PT")).toBe("pt-BR");
74+expect(localeRegistry.resolveNavigatorLocale("zh-HK")).toBe("zh-TW");
75+expect(localeRegistry.resolveNavigatorLocale("en-US")).toBe("en");
76+expect(localeRegistry.resolveNavigatorLocale("ja-JP")).toBe("ja-JP");
77+expect(localeRegistry.resolveNavigatorLocale("ko-KR")).toBe("ko");
78+expect(localeRegistry.resolveNavigatorLocale("fr-CA")).toBe("fr");
79+expect(localeRegistry.resolveNavigatorLocale("tr-TR")).toBe("tr");
80+expect(localeRegistry.resolveNavigatorLocale("uk-UA")).toBe("uk");
81+expect(localeRegistry.resolveNavigatorLocale("id-ID")).toBe("id");
82+expect(localeRegistry.resolveNavigatorLocale("pl-PL")).toBe("pl");
83+expect(localeRegistry.resolveNavigatorLocale("th-TH")).toBe("th");
7484});
75857686it("loads lazy locale translations from the registry", async () => {
87+const localeRegistry = getRegistry();
7788const [de, es, ptBR, zhCN, th, en] = await Promise.all([
78-registry.loadLazyLocaleTranslation("de"),
79-registry.loadLazyLocaleTranslation("es"),
80-registry.loadLazyLocaleTranslation("pt-BR"),
81-registry.loadLazyLocaleTranslation("zh-CN"),
82-registry.loadLazyLocaleTranslation("th"),
83-registry.loadLazyLocaleTranslation("en"),
89+localeRegistry.loadLazyLocaleTranslation("de"),
90+localeRegistry.loadLazyLocaleTranslation("es"),
91+localeRegistry.loadLazyLocaleTranslation("pt-BR"),
92+localeRegistry.loadLazyLocaleTranslation("zh-CN"),
93+localeRegistry.loadLazyLocaleTranslation("th"),
94+localeRegistry.loadLazyLocaleTranslation("en"),
8495]);
85968697expect(getNestedTranslation(de, "common", "health")).toBe("Status");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。