修复国际化文案

This commit is contained in:
whyour
2026-06-21 23:53:32 +08:00
parent 369dd13212
commit 3044f63f03
28 changed files with 335 additions and 187 deletions
+7 -1
View File
@@ -594,5 +594,11 @@
"黑名单": "Blacklist",
"默认为 CPU 个数": "Default is the number of CPUs",
",保存后不可恢复": ", it can't be recovered after saving.",
",删除后不可恢复": ", it can't be recovered after deletion"
",删除后不可恢复": ", it can't be recovered after deletion",
"日志不存在": "Log does not exist",
"日志设置为忽略": "Log set to ignore",
"确认保存": "Confirm to save",
"上传失败": "Upload failed",
"成功上传": "Successfully uploaded",
"个环境变量": " environment variables"
}
+7 -1
View File
@@ -594,5 +594,11 @@
"黑名单": "黑名单",
"默认为 CPU 个数": "默认为 CPU 个数",
",保存后不可恢复": ",保存后不可恢复",
",删除后不可恢复": ",删除后不可恢复"
",删除后不可恢复": ",删除后不可恢复",
"日志不存在": "日志不存在",
"日志设置为忽略": "日志设置为忽略",
"确认保存": "确认保存",
"上传失败": "上传失败",
"成功上传": "成功上传",
"个环境变量": "个环境变量"
}
+2 -2
View File
@@ -298,7 +298,7 @@ const CronDetailModal = ({
const saveFile = () => {
Modal.confirm({
title: `确认保存`,
title: intl.get('确认保存'),
content: (
<>
{intl.get('确认保存文件')}
@@ -323,7 +323,7 @@ const CronDetailModal = ({
.then(({ code, data }) => {
if (code === 200) {
setValue(content);
message.success(`保存成功`);
message.success(intl.get('保存成功'));
}
resolve(null);
})
+4 -6
View File
@@ -46,17 +46,15 @@ const CronLogModal = ({
}
request
.get(logUrl ? logUrl : `${config.apiPrefix}crons/${cron.id}/log`)
.then(({ code, data }) => {
.then(({ code, data, logStatus }) => {
if (
code === 200 &&
localStorage.getItem("logCron") === uniqPath &&
data !== value
) {
const log = data as string;
setValue(log || intl.get("暂无日志"));
const hasNext = Boolean(
log && !logEnded(log) && !log.includes("日志不存在") && !log.includes("日志设置为忽略"),
);
const log = (data as string) || intl.get("暂无日志");
setValue(log);
const hasNext = logStatus === 'running';
if (!hasNext && !logEnded(value) && value !== intl.get("启动中...")) {
setTimeout(() => {
autoScroll();
+24 -40
View File
@@ -465,49 +465,33 @@ const Dependence = () => {
}, [logDependence]);
const handleMessage = useCallback((payload: any) => {
const { message, references } = payload;
let status: number | undefined = undefined;
if (message.includes('开始时间') && references.length > 0) {
status = message.includes('安装') ? Status.安装中 : Status.删除中;
}
if (message.includes('结束时间') && references.length > 0) {
if (message.includes('安装')) {
status = message.includes('成功') ? Status.已安装 : Status.安装失败;
} else {
status = message.includes('成功') ? Status.已删除 : Status.删除失败;
}
const { references, status } = payload;
if (typeof status !== 'number' || !references?.length) return;
if (status === Status.) {
setTimeout(() => {
setValue((p) => {
const _result = [...p];
for (let i = 0; i < references.length; i++) {
const index = p.findIndex((x) => x.id === references[i]);
if (index !== -1) {
_result.splice(index, 1);
}
}
return _result;
});
}, 300);
return;
}
}
if (typeof status === 'number') {
setValue((p) => {
const result = [...p];
for (let i = 0; i < references.length; i++) {
const index = p.findIndex((x) => x.id === references[i]);
if (index !== -1) {
result.splice(index, 1, {
...p[index],
status,
});
if (status === Status.) {
setTimeout(() => {
setValue((p) => {
const _result = [...p];
for (const refId of references) {
const index = p.findIndex((x) => x.id === refId);
if (index !== -1) _result.splice(index, 1);
}
}
return result;
});
return _result;
});
}, 300);
return;
}
setValue((p) => {
const result = [...p];
for (const refId of references) {
const index = p.findIndex((x) => x.id === refId);
if (index !== -1) {
result.splice(index, 1, { ...p[index], status });
}
}
return result;
});
}, []);
useEffect(() => {
+15 -11
View File
@@ -54,8 +54,11 @@ const DependenceLogModal = ({
) {
const log = (data?.log || []).join('') as string;
setValue(log);
setExecuting(!log.includes('结束时间'));
setIsRemoveFailed(log.includes('删除失败'));
const dbStatus = data?.status as number | undefined;
setExecuting(
dbStatus === Status. || dbStatus === Status.,
);
setIsRemoveFailed(dbStatus === Status.);
}
})
.finally(() => {
@@ -94,16 +97,17 @@ const DependenceLogModal = ({
}, [dependence]);
const handleMessage = (payload: any) => {
const { message, references } = payload;
const { message, references, status } = payload;
if (
references.length > 0 &&
references.includes(dependence.id) &&
[Status., Status.].includes(dependence.status)
) {
if (message.includes('结束时间')) {
setExecuting(false);
setIsRemoveFailed(message.includes('删除失败'));
}
!references?.length ||
!references.includes(dependence.id)
) return;
if (typeof status === 'number') {
setExecuting(status === Status. || status === Status.);
setIsRemoveFailed(status === Status.);
}
if (message) {
setValue((p) => `${p}${message}`);
}
};
+1 -1
View File
@@ -603,7 +603,7 @@ const Env = () => {
);
if (code === 200) {
message.success(`成功上传${data.length}个环境变量`);
message.success(`${intl.get('成功上传')}${data.length}${intl.get('个环境变量')}`);
getEnvs();
}
setImportLoading(false);
+2 -2
View File
@@ -131,7 +131,7 @@ const Log = () => {
const deleteFile = () => {
Modal.confirm({
title: `确认删除`,
title: intl.get('确认删除'),
content: (
<>
{intl.get('确认删除')}
@@ -155,7 +155,7 @@ const Log = () => {
})
.then(({ code }) => {
if (code === 200) {
message.success(`删除成功`);
message.success(intl.get('删除成功'));
let newData = [...data];
if (currentNode.parent) {
newData = depthFirstSearch(
+4 -4
View File
@@ -249,7 +249,7 @@ const Script = () => {
const saveFile = () => {
Modal.confirm({
title: `确认保存`,
title: intl.get('确认保存'),
content: (
<>
{intl.get('确认保存文件')}
@@ -273,7 +273,7 @@ const Script = () => {
})
.then(({ code, data }) => {
if (code === 200) {
message.success(`保存成功`);
message.success(intl.get('保存成功'));
setValue(content);
handleIsEditing(currentNode.title, false);
}
@@ -287,7 +287,7 @@ const Script = () => {
const deleteFile = () => {
Modal.confirm({
title: `确认删除`,
title: intl.get('确认删除'),
content: (
<>
{intl.get('确认删除')}
@@ -311,7 +311,7 @@ const Script = () => {
})
.then(({ code }) => {
if (code === 200) {
message.success(`删除成功`);
message.success(intl.get('删除成功'));
let newData = [...data];
if (currentNode.parent) {
newData = depthFirstSearch(
+14 -10
View File
@@ -13,6 +13,7 @@ const CheckUpdate = ({ systemInfo }: any) => {
const [updateLoading, setUpdateLoading] = useState(false);
const [value, setValue] = useState("");
const modalRef = useRef<any>();
const lastStatusRef = useRef<string | undefined>();
const checkUpgrade = () => {
if (updateLoading) return;
@@ -166,7 +167,7 @@ const CheckUpdate = ({ systemInfo }: any) => {
useEffect(() => {
if (!value) return;
const updateFailed = value.includes("失败,请检查");
const updateFailed = lastStatusRef.current === 'failed';
modalRef.current.update({
maskClosable: updateFailed,
@@ -184,26 +185,29 @@ const CheckUpdate = ({ systemInfo }: any) => {
}, [value]);
const handleMessage = useCallback((payload: any) => {
let { message: _message } = payload;
const updateFailed = _message.includes("失败,请检查");
const { message: _message, status } = payload;
if (updateFailed) {
if (status === 'failed') {
lastStatusRef.current = 'failed';
message.error(intl.get("更新失败,请检查网络及日志或稍后再试"));
}
if (status === 'success') {
lastStatusRef.current = 'success';
setTimeout(() => {
showReloadModal();
}, 1000);
}
setTimeout(() => {
document
.querySelector("#log-identifier")
?.scrollIntoView({ behavior: "smooth" });
}, 600);
if (_message.includes("更新包下载成功")) {
setTimeout(() => {
showReloadModal();
}, 1000);
if (_message) {
setValue((p) => `${p}${_message}`);
}
setValue((p) => `${p}${_message}`);
}, []);
useEffect(() => {
+4 -7
View File
@@ -75,12 +75,9 @@ const Dependence = () => {
};
const handleMessage = (payload: any) => {
const { message } = payload;
setLog((p) => `${p}${message}`);
if (
message.includes('update node mirror end') ||
message.includes('update linux mirror end')
) {
const { message, status } = payload;
if (message) setLog((p) => `${p}${message}`);
if (status === 'completed') {
setLoading(false);
}
};
@@ -109,7 +106,7 @@ const Dependence = () => {
ws.subscribe('updateLinuxMirror', handleMessage);
return () => {
ws.subscribe('updateNodeMirror', handleMessage);
ws.unsubscribe('updateNodeMirror', handleMessage);
ws.unsubscribe('updateLinuxMirror', handleMessage);
};
}, []);
+1 -1
View File
@@ -379,7 +379,7 @@ const Other = ({
showReloadModal();
}
if (file.status === 'error') {
message.error('上传失败');
message.error(intl.get('上传失败'));
}
}}
name="data"
+1 -1
View File
@@ -51,7 +51,7 @@ const SystemLog = ({ height, theme }: any) => {
const deleteLog = () => {
request.delete(`${config.apiPrefix}system/log`).then((x) => {
message.success('删除成功');
message.success(intl.get('删除成功'));
refresh();
});
};
+38 -12
View File
@@ -205,21 +205,47 @@ const SubscriptionModal = ({
);
};
const parseArgs = (text: string): string[] => {
const args: string[] = [];
let current = '';
let inDouble = false;
let inSingle = false;
let justClosed = false;
for (const ch of text) {
if (inDouble) {
if (ch === '"') { inDouble = false; justClosed = true; continue; }
current += ch;
} else if (inSingle) {
if (ch === "'") { inSingle = false; justClosed = true; continue; }
current += ch;
} else if (ch === '"') {
inDouble = true;
justClosed = false;
} else if (ch === "'") {
inSingle = true;
justClosed = false;
} else if (ch === ' ' || ch === '\t') {
if (current || justClosed) { args.push(current); current = ''; justClosed = false; }
} else {
current += ch;
justClosed = false;
}
}
if (current || justClosed) args.push(current);
return args;
};
const onPaste = useCallback((e: any) => {
const text = e.clipboardData.getData('text') as string;
if (text.startsWith('ql ')) {
const [
,
type,
url,
whitelist,
blacklist,
dependences,
branch,
extensions,
] = text
.split(' ')
.map((x) => x.trim().replace(/\"/g, '').replace(/\'/, ''));
const args = parseArgs(text);
const type = args[1];
const url = args[2] || '';
const whitelist = args[3] || '';
const blacklist = args[4] || '';
const dependences = args[5] || '';
const branch = args[6] || '';
const extensions = args[7] || '';
const _type =
type === 'raw'
? 'file'