From 49900050f7901bcb0dcfa6c515a5463d186850f8 Mon Sep 17 00:00:00 2001 From: lleohao <12764126+lleohao@users.noreply.github.com> Date: Tue, 10 Sep 2024 08:52:52 +0000 Subject: [PATCH] feat: save language to BE --- apps/client/package.json | 1 - .../locales/{en => en-US}/translation.json | 0 .../locales/{zh => zh-CN}/translation.json | 0 .../user/components/account-languate.tsx | 23 +++++++++++++++---- .../src/features/user/types/user.types.ts | 12 ++++++---- .../src/features/user/user-provider.tsx | 5 ++++ apps/client/src/i18n.ts | 9 +------- .../src/core/user/dto/update-user.dto.ts | 4 ++++ apps/server/src/core/user/user.service.ts | 11 +++++++++ pnpm-lock.yaml | 12 +--------- 10 files changed, 48 insertions(+), 29 deletions(-) rename apps/client/public/locales/{en => en-US}/translation.json (100%) rename apps/client/public/locales/{zh => zh-CN}/translation.json (100%) 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() {