docs(i18n): update master plan and add v2 phase 0/1 smoke tests

This commit is contained in:
poyrazavsever
2026-07-20 10:25:40 +03:00
parent 0f2ff48376
commit 9365dfd215
15 changed files with 795 additions and 106 deletions
+80
View File
@@ -0,0 +1,80 @@
import assert from "node:assert/strict";
import { resolveLocalePolicy } from "../lib/i18n/locale-resolution";
const locales = [
{ code: "tr", status: "active", textDirection: "ltr" },
{ code: "en", status: "active", textDirection: "ltr" },
{ code: "fr", status: "active", textDirection: "ltr" },
{ code: "de", status: "archived", textDirection: "ltr" },
{ code: "ar", status: "active", textDirection: "rtl" },
] as const;
const publicLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "en",
candidates: [],
});
assert.equal(publicLocale.locale, "en");
assert.equal(publicLocale.source, "instance");
const freelancerLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "en", source: "user" }],
});
assert.equal(freelancerLocale.locale, "en");
assert.equal(freelancerLocale.source, "user");
const portalPreference = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [
{ locale: "en", source: "user" },
{ locale: "fr", source: "client" },
],
});
assert.equal(portalPreference.locale, "en", "Personal preference must win over the client default");
const portalDefault = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [
{ locale: null, source: "user" },
{ locale: "fr", source: "client" },
],
});
assert.equal(portalDefault.locale, "fr");
assert.equal(portalDefault.source, "client");
const invitationLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "fr", source: "invitation" }],
});
assert.equal(invitationLocale.locale, "fr");
assert.equal(invitationLocale.source, "invitation");
const archivedPreference = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "de", source: "user" }],
});
assert.equal(archivedPreference.locale, "tr");
assert.equal(archivedPreference.source, "instance");
const invalidDefault = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "de",
candidates: [],
});
assert.equal(invalidDefault.locale, "tr");
assert.equal(invalidDefault.source, "fallback");
const rtlLocale = resolveLocalePolicy({
activeLocales: locales,
defaultLocale: "tr",
candidates: [{ locale: "ar", source: "user" }],
});
assert.equal(rtlLocale.direction, "rtl");
console.log("I18n V2 phase 1 locale policy smoke passed.");