diff --git a/frontend/src/lib/i18n/locales/vi-VN.json b/frontend/src/lib/i18n/locales/vi-VN.json
index cb7bb5d1..99e70940 100644
--- a/frontend/src/lib/i18n/locales/vi-VN.json
+++ b/frontend/src/lib/i18n/locales/vi-VN.json
@@ -1,83 +1,105 @@
{
- "loginTitle": "Welcome back, login with",
- "loginTitleSimple": "Welcome back, please login",
- "loginDivider": "Or",
- "loginUsername": "Username",
- "loginPassword": "Password",
- "loginSubmit": "Login",
- "loginFailTitle": "Failed to log in",
- "loginFailSubtitle": "Please check your username and password",
- "loginFailRateLimit": "You failed to login too many times. Please try again later",
- "loginSuccessTitle": "Logged in",
- "loginSuccessSubtitle": "Welcome back!",
- "loginOauthFailTitle": "An error occurred",
- "loginOauthFailSubtitle": "Failed to get OAuth URL",
- "loginOauthSuccessTitle": "Redirecting",
- "loginOauthSuccessSubtitle": "Redirecting to your OAuth provider",
- "loginOauthAutoRedirectTitle": "OAuth Auto Redirect",
- "loginOauthAutoRedirectSubtitle": "You will be automatically redirected to your OAuth provider to authenticate.",
- "loginOauthAutoRedirectButton": "Redirect now",
- "continueTitle": "Continue",
- "continueRedirectingTitle": "Redirecting...",
- "continueRedirectingSubtitle": "You should be redirected to the app soon",
- "continueRedirectManually": "Redirect me manually",
- "continueInsecureRedirectTitle": "Insecure redirect",
- "continueInsecureRedirectSubtitle": "You are trying to redirect from https to http which is not secure. Are you sure you want to continue?",
- "continueUntrustedRedirectTitle": "Untrusted redirect",
- "continueUntrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain ({{cookieDomain}}). Are you sure you want to continue?",
- "logoutFailTitle": "Failed to log out",
- "logoutFailSubtitle": "Please try again",
- "logoutSuccessTitle": "Logged out",
- "logoutSuccessSubtitle": "You have been logged out",
- "logoutTitle": "Logout",
- "logoutUsernameSubtitle": "You are currently logged in as {{username}}. Click the button below to logout.",
- "logoutOauthSubtitle": "You are currently logged in as {{username}} using the {{provider}} OAuth provider. Click the button below to logout.",
- "notFoundTitle": "Page not found",
- "notFoundSubtitle": "The page you are looking for does not exist.",
- "notFoundButton": "Go home",
- "totpFailTitle": "Failed to verify code",
- "totpFailSubtitle": "Please check your code and try again",
- "totpSuccessTitle": "Verified",
- "totpSuccessSubtitle": "Redirecting to your app",
- "totpTitle": "Enter your TOTP code",
- "totpSubtitle": "Please enter the code from your authenticator app.",
- "unauthorizedTitle": "Unauthorized",
- "unauthorizedResourceSubtitle": "The user with username {{username}} is not authorized to access the resource {{resource}}.",
- "unauthorizedLoginSubtitle": "The user with username {{username}} is not authorized to login.",
- "unauthorizedGroupsSubtitle": "The user with username {{username}} is not in the groups required by the resource {{resource}}.",
- "unauthorizedIpSubtitle": "Your IP address {{ip}} is not authorized to access the resource {{resource}}.",
- "unauthorizedButton": "Try again",
- "cancelTitle": "Cancel",
- "forgotPasswordTitle": "Bạn quên mật khẩu?",
- "failedToFetchProvidersTitle": "Không tải được nhà cung cấp xác thực. Vui lòng kiểm tra cấu hình của bạn.",
- "errorTitle": "An error occurred",
- "errorSubtitleInfo": "The following error occurred while processing your request:",
- "errorSubtitle": "Đã xảy ra lỗi khi thực hiện thao tác này. Vui lòng kiểm tra bảng điều khiển để biết thêm thông tin.",
- "forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.",
- "fieldRequired": "This field is required",
- "invalidInput": "Invalid input",
- "domainWarningTitle": "Invalid Domain",
- "domainWarningSubtitle": "You are accessing this instance from an incorrect domain. If you proceed, you may encounter issues with authentication.",
- "domainWarningCurrent": "Current:",
- "domainWarningExpected": "Expected:",
- "ignoreTitle": "Ignore",
- "goToCorrectDomainTitle": "Go to correct domain",
- "authorizeTitle": "Authorize",
- "authorizeCardTitle": "Continue to {{app}}?",
- "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
- "authorizeSubtitleOAuth": "Would you like to continue to this app?",
- "authorizeLoadingTitle": "Loading...",
- "authorizeLoadingSubtitle": "Please wait while we load the client information.",
- "authorizeSuccessTitle": "Authorized",
- "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
- "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
- "authorizeErrorMissingParams": "The following parameters are missing: {{missingParams}}",
- "openidScopeName": "OpenID Connect",
- "openidScopeDescription": "Allows the app to access your OpenID Connect information.",
- "emailScopeName": "Email",
- "emailScopeDescription": "Allows the app to access your email address.",
- "profileScopeName": "Profile",
- "profileScopeDescription": "Allows the app to access your profile information.",
- "groupsScopeName": "Groups",
- "groupsScopeDescription": "Allows the app to access your group information."
+ "loginTitle": "Welcome back, login with",
+ "loginTitleSimple": "Welcome back, please login",
+ "loginDivider": "Or",
+ "loginUsername": "Username",
+ "loginPassword": "Password",
+ "loginSubmit": "Login",
+ "loginFailTitle": "Failed to log in",
+ "loginFailSubtitle": "Please check your username and password",
+ "loginFailRateLimit": "You failed to login too many times. Please try again later",
+ "loginSuccessTitle": "Logged in",
+ "loginSuccessSubtitle": "Welcome back!",
+ "loginOauthFailTitle": "An error occurred",
+ "loginOauthFailSubtitle": "Failed to get OAuth URL",
+ "loginOauthSuccessTitle": "Redirecting",
+ "loginOauthSuccessSubtitle": "Redirecting to your OAuth provider",
+ "loginOauthAutoRedirectTitle": "OAuth Auto Redirect",
+ "loginOauthAutoRedirectSubtitle": "You will be automatically redirected to your OAuth provider to authenticate.",
+ "loginOauthAutoRedirectButton": "Redirect now",
+ "continueTitle": "Continue",
+ "continueRedirectingTitle": "Redirecting...",
+ "continueRedirectingSubtitle": "You should be redirected to the app soon",
+ "continueRedirectManually": "Redirect me manually",
+ "continueInsecureRedirectTitle": "Insecure redirect",
+ "continueInsecureRedirectSubtitle": "You are trying to redirect from https to http which is not secure. Are you sure you want to continue?",
+ "continueUntrustedRedirectTitle": "Untrusted redirect",
+ "continueUntrustedRedirectSubtitle": "You are trying to redirect to a domain that does not match your configured domain ({{cookieDomain}}). Are you sure you want to continue?",
+ "logoutFailTitle": "Failed to log out",
+ "logoutFailSubtitle": "Please try again",
+ "logoutSuccessTitle": "Logged out",
+ "logoutSuccessSubtitle": "You have been logged out",
+ "logoutTitle": "Logout",
+ "logoutUsernameSubtitle": "You are currently logged in as {{username}}. Click the button below to logout.",
+ "logoutOauthSubtitle": "You are currently logged in as {{username}} using the {{provider}} OAuth provider. Click the button below to logout.",
+ "notFoundTitle": "Page not found",
+ "notFoundSubtitle": "The page you are looking for does not exist.",
+ "notFoundButton": "Go home",
+ "totpFailTitle": "Failed to verify code",
+ "totpFailSubtitle": "Please check your code and try again",
+ "totpSuccessTitle": "Verified",
+ "totpSuccessSubtitle": "Redirecting to your app",
+ "totpTitle": "Enter your TOTP code",
+ "totpSubtitle": "Please enter the code from your authenticator app.",
+ "unauthorizedTitle": "Unauthorized",
+ "unauthorizedResourceSubtitle": "The user with username {{username}} is not authorized to access the resource {{resource}}.",
+ "unauthorizedLoginSubtitle": "The user with username {{username}} is not authorized to login.",
+ "unauthorizedGroupsSubtitle": "The user with username {{username}} is not in the groups required by the resource {{resource}}.",
+ "unauthorizedIpSubtitle": "Your IP address {{ip}} is not authorized to access the resource {{resource}}.",
+ "unauthorizedButton": "Try again",
+ "cancelTitle": "Cancel",
+ "forgotPasswordTitle": "Bạn quên mật khẩu?",
+ "failedToFetchProvidersTitle": "Không tải được nhà cung cấp xác thực. Vui lòng kiểm tra cấu hình của bạn.",
+ "errorTitle": "An error occurred",
+ "errorSubtitleInfo": "The following error occurred while processing your request:",
+ "errorSubtitle": "Đã xảy ra lỗi khi thực hiện thao tác này. Vui lòng kiểm tra bảng điều khiển để biết thêm thông tin.",
+ "forgotPasswordMessage": "You can reset your password by changing the `USERS` environment variable.",
+ "fieldRequired": "This field is required",
+ "invalidInput": "Invalid input",
+ "domainWarningTitle": "Invalid Domain",
+ "domainWarningSubtitle": "You are accessing this instance from an incorrect domain. If you proceed, you may encounter issues with authentication.",
+ "domainWarningCurrent": "Current:",
+ "domainWarningExpected": "Expected:",
+ "ignoreTitle": "Ignore",
+ "goToCorrectDomainTitle": "Go to correct domain",
+ "authorizeTitle": "Authorize",
+ "authorizeCardTitle": "Continue to {{app}}?",
+ "authorizeSubtitle": "Would you like to continue to this app? Please carefully review the permissions requested by the app.",
+ "authorizeSubtitleOAuth": "Would you like to continue to this app?",
+ "authorizeLoadingTitle": "Loading...",
+ "authorizeLoadingSubtitle": "Please wait while we load the client information.",
+ "authorizeSuccessTitle": "Authorized",
+ "authorizeSuccessSubtitle": "You will be redirected to the app in a few seconds.",
+ "authorizeErrorClientInfo": "An error occurred while loading the client information. Please try again later.",
+ "authorizeErrorInvalidParams": "The request is missing required parameters or has invalid parameters. Please check the URL and try again.",
+ "openidScopeName": "OpenID Connect",
+ "openidScopeDescription": "Allows the app to access your OpenID Connect information.",
+ "emailScopeName": "Email",
+ "emailScopeDescription": "Allows the app to access your email address.",
+ "profileScopeName": "Profile",
+ "profileScopeDescription": "Allows the app to access your profile information.",
+ "groupsScopeName": "Groups",
+ "groupsScopeDescription": "Allows the app to access your group information.",
+ "backToLoginButton": "Back to login",
+ "phoneScopeName": "Phone",
+ "phoneScopeDescription": "Allows the app to access your phone number.",
+ "addressScopeName": "Address",
+ "addressScopeDescription": "Allows the app to access your address.",
+ "loginTailscaleTitle": "Continue with Tailscale",
+ "loginTailscaleDescription": "You appear to be accessing Tinyauth from an authorized Tailscale device. Would you like to continue with your Tailscale connection?",
+ "loginTailscaleDeviceName": "Device name:",
+ "loginTailscaleOtherMethod": "Login with another method",
+ "loginTailscaleSuccess": "Successfully authenticated with Tailscale.",
+ "loginTailscaleFail": "Failed to authenticate with Tailscale. Please try again or use another login method.",
+ "logoutTailscaleSubtitle": "You are currently logged in with Tailscale on your device {{deviceName}}. Click the button below to logout.",
+ "quickActionsLanguage": "Language",
+ "quickActionsTheme": "Theme",
+ "quickActionsThemeLight": "Light",
+ "quickActionsThemeDark": "Dark",
+ "quickActionsThemeSystem": "System",
+ "quickActionsLogout": "Logout",
+ "quickActionsTitle": "Quick Actions",
+ "quickActionsProviderLocal": "Local",
+ "quickActionsProviderLDAP": "LDAP",
+ "quickActionsProviderOAuth": "{{provider}} OAuth"
}