mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-11-08 03:30:34 +00:00
* docs: design frontend performance remediation * docs: plan frontend performance remediation * test(frontend): add route asset performance budgets * perf(nginx): compress textual responses safely * perf(frontend): lazy load case study media * perf(frontend): bound static demo file tracing * perf(frontend): restore static locale boundaries * perf(frontend): defer closed workspace panels * perf(frontend): split editors and deduplicate highlighting * perf(frontend): index incremental message derivation * perf(frontend): stabilize paged history cache policy * perf(frontend): bound streaming markdown renders * perf(frontend): virtualize message history * perf(frontend): bound and virtualize chat lists * perf(frontend): suspend inactive decorative animation * perf(browser): stream latest frames as binary * perf(artifacts): stream bounded text previews * docs: finalize performance runtime boundaries * style(backend): apply test formatting * fix(frontend): keep translation functions client-side * perf(frontend): defer decorative animation bundles * test(frontend): lock optimized route budgets * fix: harden frontend performance boundaries * test(frontend): update i18n provider fixture * fix(frontend): preserve sidebar pagination position * style(backend): format artifact range test
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { cookies } from "next/headers";
|
|
|
|
import { normalizeLocale, type Locale } from "./locale";
|
|
import { loadTranslations } from "./translations";
|
|
|
|
export async function detectLocaleServer(): Promise<Locale> {
|
|
const cookieStore = await cookies();
|
|
let locale = cookieStore.get("locale")?.value;
|
|
if (locale !== undefined) {
|
|
try {
|
|
locale = decodeURIComponent(locale);
|
|
} catch {
|
|
// Keep raw cookie value when decoding fails.
|
|
}
|
|
}
|
|
|
|
return normalizeLocale(locale);
|
|
}
|
|
|
|
export async function setLocale(locale: string | Locale): Promise<Locale> {
|
|
const normalizedLocale = normalizeLocale(locale);
|
|
const cookieStore = await cookies();
|
|
cookieStore.set("locale", encodeURIComponent(normalizedLocale), {
|
|
maxAge: 365 * 24 * 60 * 60,
|
|
path: "/",
|
|
sameSite: "lax",
|
|
});
|
|
|
|
return normalizedLocale;
|
|
}
|
|
|
|
export async function getI18n(localeOverride?: string | Locale) {
|
|
const locale = localeOverride
|
|
? normalizeLocale(localeOverride)
|
|
: await detectLocaleServer();
|
|
const t = await loadTranslations(locale);
|
|
return {
|
|
locale,
|
|
t,
|
|
};
|
|
}
|