diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 975ba8a9..7c22f8c8 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -609,7 +609,8 @@ "user": "User", "authMethod": "Authentication Method", "local": "Local", - "external": "External (OIDC)" + "external": "External (OIDC)", + "selectPreferredLanguage": "Select your preferred language for the interface" }, "placeholders": { "enterCode": "000000", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index 51154ba0..8f089b62 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -609,7 +609,8 @@ "user": "用户", "authMethod": "认证方式", "local": "本地", - "external": "外部 (OIDC)" + "external": "外部 (OIDC)", + "selectPreferredLanguage": "选择您的界面首选语言" }, "placeholders": { "enterCode": "000000", diff --git a/src/ui/Navigation/TopNavbar.tsx b/src/ui/Navigation/TopNavbar.tsx index e96604cb..50904763 100644 --- a/src/ui/Navigation/TopNavbar.tsx +++ b/src/ui/Navigation/TopNavbar.tsx @@ -13,7 +13,6 @@ import { import {Input} from "@/components/ui/input.tsx"; import {Checkbox} from "@/components/ui/checkbox.tsx"; import {Separator} from "@/components/ui/separator.tsx"; -import {LanguageSwitcher} from "@/components/LanguageSwitcher"; import {useTranslation} from "react-i18next"; interface TopNavbarProps { @@ -267,8 +266,6 @@ export function TopNavbar({isTopbarOpen, setIsTopbarOpen}: TopNavbarProps): Reac
- -
@@ -138,12 +140,11 @@ export function PasswordReset({userInfo}: PasswordResetProps) { {resetStep === "verify" && ( <>
-

Enter the 6-digit code from the docker container logs for - user: {userInfo.username}

+

{t('auth.enterResetCode')}: {userInfo.username}

- + - {resetLoading ? Spinner : "Verify Code"} + {resetLoading ? Spinner : t('auth.verifyCode')}
@@ -183,10 +184,9 @@ export function PasswordReset({userInfo}: PasswordResetProps) { {resetSuccess && ( <> - Success! + {t('auth.passwordResetSuccess')} - Your password has been successfully reset! You can now log in - with your new password. + {t('auth.passwordResetSuccessDesc')} @@ -195,12 +195,11 @@ export function PasswordReset({userInfo}: PasswordResetProps) { {resetStep === "newPassword" && !resetSuccess && ( <>
-

Enter your new password for - user: {userInfo.username}

+

{t('auth.enterNewPassword')}: {userInfo.username}

- +
- + - {resetLoading ? Spinner : "Reset Password"} + {resetLoading ? Spinner : t('auth.resetPassword')}
)} {error && ( - Error + {t('common.error')} {error} )} diff --git a/src/ui/User/UserProfile.tsx b/src/ui/User/UserProfile.tsx index 6b1dab1c..2f165472 100644 --- a/src/ui/User/UserProfile.tsx +++ b/src/ui/User/UserProfile.tsx @@ -11,6 +11,7 @@ import {getUserInfo} from "@/ui/main-axios.ts"; import {toast} from "sonner"; import {PasswordReset} from "@/ui/User/PasswordReset.tsx"; import {useTranslation} from "react-i18next"; +import {LanguageSwitcher} from "@/components/LanguageSwitcher"; interface UserProfileProps { isTopbarOpen?: boolean; @@ -146,6 +147,16 @@ export function UserProfile({isTopbarOpen = true}: UserProfileProps) {

+ +
+
+
+ +

{t('profile.selectPreferredLanguage')}

+
+ +
+