From 4354ee7ba1c6ac9a9567944ae6169b1664e0ea8a Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 17 Nov 2024 00:33:28 +0000 Subject: feature: Add i18n support. Fixes #57 (#635) * feature(web): Add basic scaffolding for i18n * refactor: Switch most of the app's strings to use i18n strings * fix: Remove unused i18next-resources-for-ts command * Add user setting * More translations * Drop the german translation for now --- apps/web/lib/userLocalSettings/userLocalSettings.ts | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'apps/web/lib/userLocalSettings/userLocalSettings.ts') diff --git a/apps/web/lib/userLocalSettings/userLocalSettings.ts b/apps/web/lib/userLocalSettings/userLocalSettings.ts index 826e6cf0..311ad99f 100644 --- a/apps/web/lib/userLocalSettings/userLocalSettings.ts +++ b/apps/web/lib/userLocalSettings/userLocalSettings.ts @@ -2,12 +2,20 @@ import { cookies } from "next/headers"; -import type { BookmarksLayoutTypes } from "./types"; +import type { BookmarksLayoutTypes, UserLocalSettings } from "./types"; import { + defaultUserLocalSettings, parseUserLocalSettings, USER_LOCAL_SETTINGS_COOKIE_NAME, } from "./types"; +export async function getUserLocalSettings(): Promise { + const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME); + return ( + parseUserLocalSettings(userSettings?.value) ?? defaultUserLocalSettings() + ); +} + export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) { const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME); const parsed = parseUserLocalSettings(userSettings?.value); @@ -18,3 +26,14 @@ export async function updateBookmarksLayout(layout: BookmarksLayoutTypes) { sameSite: "lax", }); } + +export async function updateInterfaceLang(lang: string) { + const userSettings = cookies().get(USER_LOCAL_SETTINGS_COOKIE_NAME); + const parsed = parseUserLocalSettings(userSettings?.value); + cookies().set({ + name: USER_LOCAL_SETTINGS_COOKIE_NAME, + value: JSON.stringify({ ...parsed, lang }), + maxAge: 34560000, // Chrome caps max age to 400 days + sameSite: "lax", + }); +} -- cgit v1.2.3-70-g09d2