Эх сурвалжийг харах

chore: update locale in connection

dongchengjie 1 жил өмнө
parent
commit
fb38047769

+ 17 - 14
src/components/connection/connection-detail.tsx

@@ -54,29 +54,32 @@ const InnerConnectionDetail = ({ data, onClose }: InnerProps) => {
     : `${metadata.destinationIP}:${metadata.destinationPort}`;
 
   const information = [
-    { label: "Host", value: host },
-    { label: "Download", value: parseTraffic(data.download).join(" ") },
-    { label: "Upload", value: parseTraffic(data.upload).join(" ") },
+    { label: t("Host"), value: host },
+    { label: t("Downloaded"), value: parseTraffic(data.download).join(" ") },
+    { label: t("Uploaded"), value: parseTraffic(data.upload).join(" ") },
     {
-      label: "DL Speed",
+      label: t("DL Speed"),
       value: parseTraffic(data.curDownload ?? -1).join(" ") + "/s",
     },
     {
-      label: "UL Speed",
+      label: t("UL Speed"),
       value: parseTraffic(data.curUpload ?? -1).join(" ") + "/s",
     },
-    { label: "Chains", value: chains },
-    { label: "Rule", value: rule },
+    { label: t("Chains"), value: chains },
+    { label: t("Rule"), value: rule },
     {
-      label: "Process",
+      label: t("Process"),
       value: `${metadata.process}${
         metadata.processPath ? `(${metadata.processPath})` : ""
       }`,
     },
-    { label: "Time", value: dayjs(data.start).fromNow() },
-    { label: "Source", value: `${metadata.sourceIP}:${metadata.sourcePort}` },
-    { label: "Destination IP", value: metadata.destinationIP },
-    { label: "Type", value: `${metadata.type}(${metadata.network})` },
+    { label: t("Time"), value: dayjs(data.start).fromNow() },
+    {
+      label: t("Source"),
+      value: `${metadata.sourceIP}:${metadata.sourcePort}`,
+    },
+    { label: t("Destination IP"), value: metadata.destinationIP },
+    { label: t("Type"), value: `${metadata.type}(${metadata.network})` },
   ];
 
   const onDelete = useLockFn(async () => deleteConnection(data.id));
@@ -92,13 +95,13 @@ const InnerConnectionDetail = ({ data, onClose }: InnerProps) => {
       <Box sx={{ textAlign: "right" }}>
         <Button
           variant="contained"
-          title="Close Connection"
+          title={t("Close Connection")}
           onClick={() => {
             onDelete();
             onClose?.();
           }}
         >
-          {t("Close")}
+          {t("Close Connection")}
         </Button>
       </Box>
     </Box>

+ 13 - 12
src/components/connection/connection-table.tsx

@@ -7,6 +7,7 @@ import {
 } from "@mui/x-data-grid";
 import { truncateStr } from "@/utils/truncate-str";
 import parseTraffic from "@/utils/parse-traffic";
+import { t } from "i18next";
 
 interface Props {
   connections: IConnectionsItem[];
@@ -21,10 +22,10 @@ export const ConnectionTable = (props: Props) => {
   >({});
 
   const columns: GridColDef[] = [
-    { field: "host", headerName: "Host", flex: 220, minWidth: 220 },
+    { field: "host", headerName: t("Host"), flex: 220, minWidth: 220 },
     {
       field: "download",
-      headerName: "Download",
+      headerName: t("Downloaded"),
       width: 88,
       align: "right",
       headerAlign: "right",
@@ -33,7 +34,7 @@ export const ConnectionTable = (props: Props) => {
     },
     {
       field: "upload",
-      headerName: "Upload",
+      headerName: t("Uploaded"),
       width: 88,
       align: "right",
       headerAlign: "right",
@@ -42,7 +43,7 @@ export const ConnectionTable = (props: Props) => {
     },
     {
       field: "dlSpeed",
-      headerName: "DL Speed",
+      headerName: t("DL Speed"),
       width: 88,
       align: "right",
       headerAlign: "right",
@@ -51,19 +52,19 @@ export const ConnectionTable = (props: Props) => {
     },
     {
       field: "ulSpeed",
-      headerName: "UL Speed",
+      headerName: t("UL Speed"),
       width: 88,
       align: "right",
       headerAlign: "right",
       valueFormatter: (params: GridValueFormatterParams<number>) =>
         parseTraffic(params.value).join(" ") + "/s",
     },
-    { field: "chains", headerName: "Chains", flex: 360, minWidth: 360 },
-    { field: "rule", headerName: "Rule", flex: 300, minWidth: 250 },
-    { field: "process", headerName: "Process", flex: 240, minWidth: 120 },
+    { field: "chains", headerName: t("Chains"), flex: 360, minWidth: 360 },
+    { field: "rule", headerName: t("Rule"), flex: 300, minWidth: 250 },
+    { field: "process", headerName: t("Process"), flex: 240, minWidth: 120 },
     {
       field: "time",
-      headerName: "Time",
+      headerName: t("Time"),
       flex: 120,
       minWidth: 100,
       align: "right",
@@ -74,14 +75,14 @@ export const ConnectionTable = (props: Props) => {
       valueFormatter: (params: GridValueFormatterParams<string>) =>
         dayjs(params.value).fromNow(),
     },
-    { field: "source", headerName: "Source", flex: 200, minWidth: 130 },
+    { field: "source", headerName: t("Source"), flex: 200, minWidth: 130 },
     {
       field: "destinationIP",
-      headerName: "Destination IP",
+      headerName: t("Destination IP"),
       flex: 200,
       minWidth: 130,
     },
-    { field: "type", headerName: "Type", flex: 160, minWidth: 100 },
+    { field: "type", headerName: t("Type"), flex: 160, minWidth: 100 },
   ];
 
   const connRows = useMemo(() => {

+ 14 - 0
src/locales/en.json

@@ -25,6 +25,7 @@
   "Test URL": "Test URL",
   "Test All": "Test All",
 
+  "Paste": "Paste",
   "Profiles": "Profiles",
   "Profile URL": "Profile URL",
   "Import": "Import",
@@ -70,6 +71,19 @@
   "Update All": "Update All",
   "Update At": "Update At",
 
+  "Host": "Host",
+  "Downloaded": "Downloaded",
+  "Uploaded": "Uploaded",
+  "DL Speed": "DL Speed",
+  "UL Speed": "UL Speed",
+  "Chains": "Chains",
+  "Rule": "Rule",
+  "Process": "Process",
+  "Time": "Time",
+  "Source": "Source",
+  "Destination IP": "Destination IP",
+  "Close Connection": "Close Connection",
+
   "Type": "Type",
   "Name": "Name",
   "Descriptions": "Descriptions",

+ 14 - 0
src/locales/ru.json

@@ -25,6 +25,7 @@
   "Test URL": "Тестовый URL",
   "Test All": "Тест Все",
 
+  "Paste": "Вставить",
   "Profiles": "Профили",
   "Profile URL": "URL профиля",
   "Import": "Импорт",
@@ -70,6 +71,19 @@
   "Update All": "Обновить все",
   "Update At": "Обновлено в",
 
+  "Host": "Хост",
+  "Downloaded": "Скачано",
+  "Uploaded": "Загружено",
+  "DL Speed": "Скорость загрузки",
+  "UL Speed": "Скорость выгрузки",
+  "Chains": "Цепочки",
+  "Rule": "Правило",
+  "Process": "Процесс",
+  "Time": "Время подключения",
+  "Source": "Исходный адрес",
+  "Destination IP": "IP-адрес назначения",
+  "Close Connection": "Закрыть соединение",
+
   "Type": "Тип",
   "Name": "Название",
   "Descriptions": "Описания",

+ 14 - 0
src/locales/zh.json

@@ -25,6 +25,7 @@
   "Test URL": "测试地址",
   "Test All": "测试全部",
 
+  "Paste": "粘贴",
   "Profiles": "订阅",
   "Profile URL": "订阅文件链接",
   "Import": "导入",
@@ -70,6 +71,19 @@
   "Update All": "更新全部",
   "Update At": "更新于",
 
+  "Host": "主机",
+  "Downloaded": "下载量",
+  "Uploaded": "上传量",
+  "DL Speed": "下载速度",
+  "UL Speed": "上传速度",
+  "Chains": "链路",
+  "Rule": "规则",
+  "Process": "进程",
+  "Time": "连接时间",
+  "Source": "源地址",
+  "Destination IP": "目标地址",
+  "Close Connection": "关闭连接",
+
   "Type": "类型",
   "Name": "名称",
   "Descriptions": "描述",

+ 6 - 2
src/pages/connections.tsx

@@ -134,8 +134,12 @@ const ConnectionsPage = () => {
       contentStyle={{ height: "100%" }}
       header={
         <Box sx={{ display: "flex", alignItems: "center", gap: 2 }}>
-          <Box sx={{ mx: 1 }}>Download: {parseTraffic(download)}</Box>
-          <Box sx={{ mx: 1 }}>Upload: {parseTraffic(upload)}</Box>
+          <Box sx={{ mx: 1 }}>
+            {t("Downloaded")}: {parseTraffic(download)}
+          </Box>
+          <Box sx={{ mx: 1 }}>
+            {t("Uploaded")}: {parseTraffic(upload)}
+          </Box>
           <IconButton
             color="inherit"
             size="small"