Fix hardcoded text and add missing i18n translations in file manager
- Add 18 new translation keys for file manager sidebar and context menu operations - Replace hardcoded Chinese text with t() function calls in FileManagerSidebar.tsx: * Toast messages for remove/unpin/clear operations * Context menu items for recent files, pinned files, and shortcuts - Replace hardcoded Chinese text with t() function calls in FileManagerContextMenu.tsx: * Pin/unpin file menu items * Add to shortcuts menu item * Save to system menu items with dynamic count support - Add bilingual support for all new strings (English and Chinese) - Improve consistency with existing i18n patterns
This commit is contained in:
@@ -729,7 +729,25 @@
|
|||||||
"noHostSelected": "No host selected",
|
"noHostSelected": "No host selected",
|
||||||
"starred": "Starred",
|
"starred": "Starred",
|
||||||
"shortcuts": "Shortcuts",
|
"shortcuts": "Shortcuts",
|
||||||
"directories": "Directories"
|
"directories": "Directories",
|
||||||
|
"removedFromRecentFiles": "Removed \"{{name}}\" from recent files",
|
||||||
|
"removeFailed": "Remove failed",
|
||||||
|
"unpinnedSuccessfully": "Unpinned \"{{name}}\" successfully",
|
||||||
|
"unpinFailed": "Unpin failed",
|
||||||
|
"removedShortcut": "Removed shortcut \"{{name}}\"",
|
||||||
|
"removeShortcutFailed": "Remove shortcut failed",
|
||||||
|
"clearedAllRecentFiles": "Cleared all recent files",
|
||||||
|
"clearFailed": "Clear failed",
|
||||||
|
"removeFromRecentFiles": "Remove from recent files",
|
||||||
|
"clearAllRecentFiles": "Clear all recent files",
|
||||||
|
"unpinFile": "Unpin file",
|
||||||
|
"removeShortcut": "Remove shortcut",
|
||||||
|
"saveFilesToSystem": "Save {{count}} files to system",
|
||||||
|
"saveToSystem": "Save to system",
|
||||||
|
"pinFile": "Pin file",
|
||||||
|
"addToShortcuts": "Add to shortcuts",
|
||||||
|
"selectLocationToSave": "Select location to save",
|
||||||
|
"downloadToDefaultLocation": "Download to default location"
|
||||||
},
|
},
|
||||||
"tunnels": {
|
"tunnels": {
|
||||||
"title": "SSH Tunnels",
|
"title": "SSH Tunnels",
|
||||||
|
|||||||
@@ -736,7 +736,25 @@
|
|||||||
"cannotSaveFile": "无法保存文件",
|
"cannotSaveFile": "无法保存文件",
|
||||||
"starred": "收藏",
|
"starred": "收藏",
|
||||||
"shortcuts": "快捷方式",
|
"shortcuts": "快捷方式",
|
||||||
"directories": "目录"
|
"directories": "目录",
|
||||||
|
"removedFromRecentFiles": "已从最近访问中移除\"{{name}}\"",
|
||||||
|
"removeFailed": "移除失败",
|
||||||
|
"unpinnedSuccessfully": "已取消固定\"{{name}}\"",
|
||||||
|
"unpinFailed": "取消固定失败",
|
||||||
|
"removedShortcut": "已移除快捷方式\"{{name}}\"",
|
||||||
|
"removeShortcutFailed": "移除快捷方式失败",
|
||||||
|
"clearedAllRecentFiles": "已清除所有最近访问记录",
|
||||||
|
"clearFailed": "清除失败",
|
||||||
|
"removeFromRecentFiles": "从最近访问中移除",
|
||||||
|
"clearAllRecentFiles": "清除所有最近访问",
|
||||||
|
"unpinFile": "取消固定",
|
||||||
|
"removeShortcut": "移除快捷方式",
|
||||||
|
"saveFilesToSystem": "保存 {{count}} 个文件到系统",
|
||||||
|
"saveToSystem": "保存到系统",
|
||||||
|
"pinFile": "固定文件",
|
||||||
|
"addToShortcuts": "添加到快捷方式",
|
||||||
|
"selectLocationToSave": "选择位置保存",
|
||||||
|
"downloadToDefaultLocation": "下载到默认位置"
|
||||||
},
|
},
|
||||||
"tunnels": {
|
"tunnels": {
|
||||||
"title": "SSH 隧道",
|
"title": "SSH 隧道",
|
||||||
|
|||||||
@@ -262,10 +262,10 @@ export function FileManagerContextMenu({
|
|||||||
menuItems.push({
|
menuItems.push({
|
||||||
icon: <ExternalLink className="w-4 h-4" />,
|
icon: <ExternalLink className="w-4 h-4" />,
|
||||||
label: isMultipleFiles
|
label: isMultipleFiles
|
||||||
? `保存 ${files.length} 个文件到系统`
|
? t("fileManager.saveFilesToSystem", { count: files.length })
|
||||||
: "保存到系统",
|
: t("fileManager.saveToSystem"),
|
||||||
action: () => onDragToDesktop(),
|
action: () => onDragToDesktop(),
|
||||||
shortcut: isModernBrowser ? "选择位置保存" : "下载到默认位置"
|
shortcut: isModernBrowser ? t("fileManager.selectLocationToSave") : t("fileManager.downloadToDefaultLocation")
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,13 +276,13 @@ export function FileManagerContextMenu({
|
|||||||
if (isCurrentlyPinned && onUnpinFile) {
|
if (isCurrentlyPinned && onUnpinFile) {
|
||||||
menuItems.push({
|
menuItems.push({
|
||||||
icon: <Star className="w-4 h-4 fill-yellow-400" />,
|
icon: <Star className="w-4 h-4 fill-yellow-400" />,
|
||||||
label: "取消固定",
|
label: t("fileManager.unpinFile"),
|
||||||
action: () => onUnpinFile(files[0])
|
action: () => onUnpinFile(files[0])
|
||||||
});
|
});
|
||||||
} else if (!isCurrentlyPinned && onPinFile) {
|
} else if (!isCurrentlyPinned && onPinFile) {
|
||||||
menuItems.push({
|
menuItems.push({
|
||||||
icon: <Star className="w-4 h-4" />,
|
icon: <Star className="w-4 h-4" />,
|
||||||
label: "固定文件",
|
label: t("fileManager.pinFile"),
|
||||||
action: () => onPinFile(files[0])
|
action: () => onPinFile(files[0])
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -292,7 +292,7 @@ export function FileManagerContextMenu({
|
|||||||
if (isSingleFile && files[0].type === 'directory' && onAddShortcut) {
|
if (isSingleFile && files[0].type === 'directory' && onAddShortcut) {
|
||||||
menuItems.push({
|
menuItems.push({
|
||||||
icon: <Bookmark className="w-4 h-4" />,
|
icon: <Bookmark className="w-4 h-4" />,
|
||||||
label: "添加到快捷方式",
|
label: t("fileManager.addToShortcuts"),
|
||||||
action: () => onAddShortcut(files[0].path)
|
action: () => onAddShortcut(files[0].path)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,10 +134,10 @@ export function FileManagerSidebar({
|
|||||||
try {
|
try {
|
||||||
await removeRecentFile(currentHost.id, item.path);
|
await removeRecentFile(currentHost.id, item.path);
|
||||||
loadQuickAccessData(); // 重新加载数据
|
loadQuickAccessData(); // 重新加载数据
|
||||||
toast.success(`已从最近访问中移除"${item.name}"`);
|
toast.success(t("fileManager.removedFromRecentFiles", { name: item.name }));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to remove recent file:', error);
|
console.error('Failed to remove recent file:', error);
|
||||||
toast.error('移除失败');
|
toast.error(t("fileManager.removeFailed"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -147,10 +147,10 @@ export function FileManagerSidebar({
|
|||||||
try {
|
try {
|
||||||
await removePinnedFile(currentHost.id, item.path);
|
await removePinnedFile(currentHost.id, item.path);
|
||||||
loadQuickAccessData(); // 重新加载数据
|
loadQuickAccessData(); // 重新加载数据
|
||||||
toast.success(`已取消固定"${item.name}"`);
|
toast.success(t("fileManager.unpinnedSuccessfully", { name: item.name }));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to unpin file:', error);
|
console.error('Failed to unpin file:', error);
|
||||||
toast.error('取消固定失败');
|
toast.error(t("fileManager.unpinFailed"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -160,10 +160,10 @@ export function FileManagerSidebar({
|
|||||||
try {
|
try {
|
||||||
await removeFolderShortcut(currentHost.id, item.path);
|
await removeFolderShortcut(currentHost.id, item.path);
|
||||||
loadQuickAccessData(); // 重新加载数据
|
loadQuickAccessData(); // 重新加载数据
|
||||||
toast.success(`已移除快捷方式"${item.name}"`);
|
toast.success(t("fileManager.removedShortcut", { name: item.name }));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to remove shortcut:', error);
|
console.error('Failed to remove shortcut:', error);
|
||||||
toast.error('移除快捷方式失败');
|
toast.error(t("fileManager.removeShortcutFailed"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -176,10 +176,10 @@ export function FileManagerSidebar({
|
|||||||
recentItems.map(item => removeRecentFile(currentHost.id, item.path))
|
recentItems.map(item => removeRecentFile(currentHost.id, item.path))
|
||||||
);
|
);
|
||||||
loadQuickAccessData(); // 重新加载数据
|
loadQuickAccessData(); // 重新加载数据
|
||||||
toast.success(`已清除所有最近访问记录`);
|
toast.success(t("fileManager.clearedAllRecentFiles"));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to clear recent files:', error);
|
console.error('Failed to clear recent files:', error);
|
||||||
toast.error('清除失败');
|
toast.error(t("fileManager.clearFailed"));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -463,7 +463,7 @@ export function FileManagerSidebar({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Clock className="w-4 h-4" />
|
<Clock className="w-4 h-4" />
|
||||||
<span>从最近访问中移除</span>
|
<span>{t("fileManager.removeFromRecentFiles")}</span>
|
||||||
</button>
|
</button>
|
||||||
{recentItems.length > 1 && (
|
{recentItems.length > 1 && (
|
||||||
<>
|
<>
|
||||||
@@ -476,7 +476,7 @@ export function FileManagerSidebar({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Clock className="w-4 h-4" />
|
<Clock className="w-4 h-4" />
|
||||||
<span>清除所有最近访问</span>
|
<span>{t("fileManager.clearAllRecentFiles")}</span>
|
||||||
</button>
|
</button>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
@@ -492,7 +492,7 @@ export function FileManagerSidebar({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Star className="w-4 h-4" />
|
<Star className="w-4 h-4" />
|
||||||
<span>取消固定</span>
|
<span>{t("fileManager.unpinFile")}</span>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
@@ -505,7 +505,7 @@ export function FileManagerSidebar({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Bookmark className="w-4 h-4" />
|
<Bookmark className="w-4 h-4" />
|
||||||
<span>移除快捷方式</span>
|
<span>{t("fileManager.removeShortcut")}</span>
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user