diff --git a/web/src/components/language-switcher.tsx b/web/src/components/language-switcher.tsx index 69829e0a..cd5332a2 100644 --- a/web/src/components/language-switcher.tsx +++ b/web/src/components/language-switcher.tsx @@ -6,7 +6,7 @@ export function LanguageSwitcher() { const { i18n } = useTranslation(); const toggleLanguage = () => { - const newLang = i18n.language === "en" ? "zh" : "en"; + const newLang = i18n.language === "en" ? "zh-CN" : "en"; i18n.changeLanguage(newLang); }; diff --git a/web/src/components/memshell/jre-tip.tsx b/web/src/components/memshell/jre-tip.tsx deleted file mode 100644 index 8a728584..00000000 --- a/web/src/components/memshell/jre-tip.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { InfoIcon } from "lucide-react"; -import { useTranslation } from "react-i18next"; -import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip.tsx"; - -export function JreTip() { - const { t } = useTranslation(); - return ( - - - - - - -

{t("tips.jreTip")}

-

{t("tips.jreTip2")}

-
-
-
- ); -} diff --git a/web/src/components/memshell/main-config-card.tsx b/web/src/components/memshell/main-config-card.tsx index 5a8c8936..1b717226 100644 --- a/web/src/components/memshell/main-config-card.tsx +++ b/web/src/components/memshell/main-config-card.tsx @@ -92,7 +92,7 @@ export default function MainConfigCard({ ]); const [shellTypes, setShellTypes] = useState([]); const shellTool = form.watch("shellTool"); - const { t } = useTranslation(); + const { t } = useTranslation(["common", "memshell"]); const [serverVersionOptions, setServerVersionOptions] = useState( defaultServerVersionOptions, @@ -137,7 +137,7 @@ export default function MainConfigCard({ ) { form.setValue("targetJdkVersion", "52"); } else { - form.resetField("targetJdkVersion"); + form.setValue("targetJdkVersion", "50"); } // 特殊的服务需要指定版本 @@ -259,7 +259,7 @@ export default function MainConfigCard({ - {t("configs.main-config")} + {t("common:mainConfig.title")} @@ -269,7 +269,7 @@ export default function MainConfigCard({ name="server" render={({ field }) => ( - {t("mainConfig.server")} + {t("common:server")} - {t("tips.targetServerNotFound")}  + {t("memshell:tips.targetServerNotFound")}  - {t("tips.targetServerRequest")} + {t("memshell:tips.targetServerRequest")} @@ -310,11 +312,13 @@ export default function MainConfigCard({ name="serverVersion" render={({ field }) => ( - {t("mainConfig.serverVersion")} + {t("common:serverVersion")} + )} /> @@ -46,9 +52,12 @@ export function AntSwordTabContent({ name="headerName" render={({ field }) => ( - {t("shellToolConfig.headerName")} + {t("common:headerName")} - + )} @@ -59,9 +68,12 @@ export function AntSwordTabContent({ render={({ field }) => ( - {t("shellToolConfig.headerValue")} {t("optional")} + {t("common:headerValue")} {t("common:optional")} - + )} /> diff --git a/web/src/components/memshell/tabs/behinder-tab.tsx b/web/src/components/memshell/tabs/behinder-tab.tsx index c85d7418..cad5a954 100644 --- a/web/src/components/memshell/tabs/behinder-tab.tsx +++ b/web/src/components/memshell/tabs/behinder-tab.tsx @@ -12,8 +12,11 @@ import { UrlPatternFormField } from "./urlpattern-field"; export function BehinderTabContent({ form, shellTypes, -}: Readonly<{ form: UseFormReturn; shellTypes: Array }>) { - const { t } = useTranslation(); +}: Readonly<{ + form: UseFormReturn; + shellTypes: Array; +}>) { + const { t } = useTranslation(["memshell", "common"]); return ( @@ -29,9 +32,12 @@ export function BehinderTabContent({ render={({ field }) => ( - {t("shellToolConfig.behinderPass")} {t("optional")} + {t("shellToolConfig.behinder.pass")} {t("common:optional")} - + )} /> @@ -41,8 +47,11 @@ export function BehinderTabContent({ name="headerName" render={({ field }) => ( - {t("shellToolConfig.headerName")} - + {t("common:headerName")} + )} /> @@ -52,9 +61,12 @@ export function BehinderTabContent({ render={({ field }) => ( - {t("shellToolConfig.headerValue")} {t("optional")} + {t("common:headerValue")} {t("common:optional")} - + )} /> diff --git a/web/src/components/memshell/tabs/classname-field.tsx b/web/src/components/memshell/tabs/classname-field.tsx index 264eb170..f4730f67 100644 --- a/web/src/components/memshell/tabs/classname-field.tsx +++ b/web/src/components/memshell/tabs/classname-field.tsx @@ -11,11 +11,11 @@ import { import { Input } from "@/components/ui/input.tsx"; import type { MemShellFormSchema } from "@/types/schema.ts"; -export function OptionalClassFormField({ form }: Readonly<{ form: UseFormReturn }>) { - const { t } = useTranslation(); +export function OptionalClassFormField({ + form, +}: Readonly<{ form: UseFormReturn }>) { + const { t } = useTranslation(["memshell", "common"]); const [showAdvanced, setShowAdvanced] = useState(false); - const shellClassNameId = useId(); - const injectClassNameId = useId(); return (
@@ -28,7 +28,11 @@ export function OptionalClassFormField({ form }: Readonly<{ form: UseFormReturn< > {t("classNameOptions")} - {showAdvanced ? : } + {showAdvanced ? ( + + ) : ( + + )}
{showAdvanced && ( @@ -38,10 +42,14 @@ export function OptionalClassFormField({ form }: Readonly<{ form: UseFormReturn< name="shellClassName" render={({ field }) => ( - - {t("mainConfig.shellClassName")} {t("optional")} + + {t("mainConfig.shellClassName")} {t("common:optional")} - + )} /> @@ -50,10 +58,14 @@ export function OptionalClassFormField({ form }: Readonly<{ form: UseFormReturn< name="injectorClassName" render={({ field }) => ( - - {t("mainConfig.injectorClassName")} {t("optional")} + + {t("mainConfig.injectorClassName")} {t("common:optional")} - + )} /> diff --git a/web/src/components/memshell/tabs/command-tab.tsx b/web/src/components/memshell/tabs/command-tab.tsx index 33279ed2..0842a49d 100644 --- a/web/src/components/memshell/tabs/command-tab.tsx +++ b/web/src/components/memshell/tabs/command-tab.tsx @@ -26,9 +26,15 @@ import { UrlPatternFormField } from "./urlpattern-field"; export function CommandTabContent({ form, shellTypes, -}: Readonly<{ form: UseFormReturn; shellTypes: Array }>) { - const { t } = useTranslation(); - const { data } = useQuery<{ encryptors: Array; implementationClasses: Array }>({ +}: Readonly<{ + form: UseFormReturn; + shellTypes: Array; +}>) { + const { t } = useTranslation(["memshell", "common"]); + const { data } = useQuery<{ + encryptors: Array; + implementationClasses: Array; + }>({ queryKey: ["commandConfigs"], queryFn: async () => { const response = await fetch(`${env.API_URL}/config/command/configs`); @@ -51,10 +57,13 @@ export function CommandTabContent({ render={({ field }) => ( - {t("shellToolConfig.paramName")} {t("optional")} + {t("common:paramName")} {t("common:optional")} - + )} @@ -65,11 +74,17 @@ export function CommandTabContent({ name="encryptor" render={({ field }) => ( - {t("shellToolConfig.encryptor")} - - + @@ -88,11 +103,19 @@ export function CommandTabContent({ name="implementationClass" render={({ field }) => ( - {t("shellToolConfig.implementationClass")} - - + diff --git a/web/src/components/memshell/tabs/custom-tab.tsx b/web/src/components/memshell/tabs/custom-tab.tsx index 8ab3e11f..a7e7260f 100644 --- a/web/src/components/memshell/tabs/custom-tab.tsx +++ b/web/src/components/memshell/tabs/custom-tab.tsx @@ -22,10 +22,12 @@ import { UrlPatternFormField } from "./urlpattern-field"; export default function CustomTabContent({ form, shellTypes, -}: Readonly<{ form: UseFormReturn; shellTypes: Array }>) { +}: Readonly<{ + form: UseFormReturn; + shellTypes: Array; +}>) { const [isFile, setIsFile] = useState(false); - const optionOneId = useId(); - const optionTwoId = useId(); + const { t } = useTranslation(["memshell", "common"]); return ( @@ -40,7 +42,7 @@ export default function CustomTabContent({ name="shellClassBase64" render={({ field }) => ( - {t("shellToolConfig.base64String")} + {t("shellClass")} { @@ -50,12 +52,12 @@ export default function CustomTabContent({ className="flex items-center space-x-2" >
- - + +
- - + +
@@ -66,18 +68,25 @@ export default function CustomTabContent({ if (file) { const reader = new FileReader(); reader.onload = (event) => { - const base64String = (event.target?.result as string)?.split(",")[1] || ""; + const base64String = + (event.target?.result as string)?.split( + ",", + )[1] || ""; field.onChange(base64String); }; reader.readAsDataURL(file); } }} accept=".class" - placeholder={t("placeholders.input")} + placeholder={t("common:placeholders.input")} type="file" /> ) : ( -