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
-
-
(null);
const [resetStep, setResetStep] = useState<"initiate" | "verify" | "newPassword">("initiate");
@@ -35,7 +37,7 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
setResetStep("verify");
setError(null);
} catch (err: any) {
- setError(err?.response?.data?.error || err?.message || "Failed to initiate password reset");
+ setError(err?.response?.data?.error || err?.message || t('errors.failedPasswordReset'));
} finally {
setResetLoading(false);
}
@@ -60,7 +62,7 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
setResetStep("newPassword");
setError(null);
} catch (err: any) {
- setError(err?.response?.data?.error || "Failed to verify reset code");
+ setError(err?.response?.data?.error || t('errors.failedVerifyCode'));
} finally {
setResetLoading(false);
}
@@ -71,13 +73,13 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
setResetLoading(true);
if (newPassword !== confirmPassword) {
- setError("Passwords do not match");
+ setError(t('errors.passwordMismatch'));
setResetLoading(false);
return;
}
if (newPassword.length < 6) {
- setError("Password must be at least 6 characters long");
+ setError(t('errors.weakPassword'));
setResetLoading(false);
return;
}
@@ -94,7 +96,7 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
setResetSuccess(true);
} catch (err: any) {
- setError(err?.response?.data?.error || "Failed to complete password reset");
+ setError(err?.response?.data?.error || t('errors.failedCompleteReset'));
} finally {
setResetLoading(false);
}
@@ -115,7 +117,7 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
Password
- Change your account password
+ {t('profile.changePassword')}
@@ -129,7 +131,7 @@ export function PasswordReset({userInfo}: PasswordResetProps) {
disabled={resetLoading || !userInfo.username.trim()}
onClick={handleInitiatePasswordReset}
>
- {resetLoading ? Spinner : "Send Reset Code"}
+ {resetLoading ? Spinner : t('auth.sendResetCode')}
>
@@ -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}
- Reset Code
+ {t('auth.resetCode')}
- {resetLoading ? Spinner : "Verify Code"}
+ {resetLoading ? Spinner : t('auth.verifyCode')}
- Back
+ {t('common.back')}
>
@@ -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}
+
+
+
+
+
{t('common.language')}
+
{t('profile.selectPreferredLanguage')}
+
+
+
+