diff --git a/apps/client/package.json b/apps/client/package.json index 563b64b7..ac4de98d 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -28,7 +28,6 @@ "emoji-mart": "^5.6.0", "file-saver": "^2.0.5", "i18next": "^23.14.0", - "i18next-browser-languagedetector": "^8.0.0", "i18next-http-backend": "^2.6.1", "jotai": "^2.9.3", "jotai-optics": "^0.4.0", diff --git a/apps/client/public/locales/en/translation.json b/apps/client/public/locales/en-US/translation.json similarity index 100% rename from apps/client/public/locales/en/translation.json rename to apps/client/public/locales/en-US/translation.json diff --git a/apps/client/public/locales/zh/translation.json b/apps/client/public/locales/zh-CN/translation.json similarity index 100% rename from apps/client/public/locales/zh/translation.json rename to apps/client/public/locales/zh-CN/translation.json diff --git a/apps/client/src/features/user/components/account-languate.tsx b/apps/client/src/features/user/components/account-languate.tsx index 0056dbce..e498d0f8 100644 --- a/apps/client/src/features/user/components/account-languate.tsx +++ b/apps/client/src/features/user/components/account-languate.tsx @@ -1,5 +1,10 @@ import { Group, Text, Select } from "@mantine/core"; import { useTranslation } from "react-i18next"; +import { updateUser } from "../services/user-service"; +import { IUser } from "../types/user.types"; +import { useAtom } from "jotai"; +import { userAtom } from "../atoms/current-user-atom"; +import { useState } from "react"; export default function AccountLanguage() { const { t } = useTranslation(); @@ -19,8 +24,17 @@ export default function AccountLanguage() { function LanguageSwitcher() { const { t, i18n } = useTranslation(); + const [user, setUser] = useAtom(userAtom); + const [language, setLanguage] = useState( + user.settings?.preferences?.language || "en-US", + ); + + const handleChange = async (value: string) => { + const updatedUser = await updateUser({ language: value }); + + setLanguage(value); + setUser(updatedUser); - const handleChange = (value: string) => { i18n.changeLanguage(value); }; @@ -28,13 +42,14 @@ function LanguageSwitcher() {