mirror of
https://github.com/panatgithub/AnkiHeadingSync.git
synced 2026-07-22 06:51:43 +00:00
- 新增完整双语 i18n 支持,支持按 Obsidian 语言自动切换 - 实现结构化 warning / user error 渲染 - Added full bilingual i18n support with automatic switching based on Obsidian language settings - Implemented structured warning and user error rendering
30 lines
No EOL
936 B
TypeScript
30 lines
No EOL
936 B
TypeScript
import * as obsidian from "obsidian";
|
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
|
|
import { formatList, resolvePluginLocale } from "./locale";
|
|
|
|
describe("locale", () => {
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
});
|
|
|
|
it("returns zh only when Obsidian language is exactly zh", () => {
|
|
vi.spyOn(obsidian, "getLanguage").mockReturnValue("zh");
|
|
|
|
expect(resolvePluginLocale()).toBe("zh");
|
|
});
|
|
|
|
it("falls back to en for every other Obsidian language code", () => {
|
|
const getLanguage = vi.spyOn(obsidian, "getLanguage");
|
|
|
|
for (const language of ["en", "en-GB", "ja", "zh-TW"]) {
|
|
getLanguage.mockReturnValue(language);
|
|
expect(resolvePluginLocale()).toBe("en");
|
|
}
|
|
});
|
|
|
|
it("formats lists with locale-specific separators", () => {
|
|
expect(formatList("en", ["A", "B", "C"])).toBe("A, B, C");
|
|
expect(formatList("zh", ["甲", "乙", "丙"])).toBe("甲、乙、丙");
|
|
});
|
|
}); |