feat(localization): enhance toast messages for API actions and model management with i18n support

refactor(localization): update toast messages in various components and managers for better user feedback
This commit is contained in:
Will Miao
2025-08-31 12:25:08 +08:00
parent be8edafed0
commit e60a579b85
17 changed files with 216 additions and 101 deletions

View File

@@ -350,11 +350,11 @@ export class BulkManager {
if (missingLoras.length > 0) {
console.warn('Missing metadata for some selected loras:', missingLoras);
showToast(`Missing data for ${missingLoras.length} LoRAs`, 'warning');
showToast('toast.loras.missingDataForLoras', { count: missingLoras.length }, 'warning');
}
if (loraSyntaxes.length === 0) {
showToast('No valid LoRAs to send', 'error');
showToast('toast.loras.noValidLorasToSend', {}, 'error');
return;
}
@@ -363,7 +363,7 @@ export class BulkManager {
showBulkDeleteModal() {
if (state.selectedModels.size === 0) {
showToast('No models selected', 'warning');
showToast('toast.models.noModelsSelected', {}, 'warning');
return;
}
@@ -377,7 +377,7 @@ export class BulkManager {
async confirmBulkDelete() {
if (state.selectedModels.size === 0) {
showToast('No models selected', 'warning');
showToast('toast.models.noModelsSelected', {}, 'warning');
modalManager.closeModal('bulkDeleteModal');
return;
}
@@ -392,7 +392,10 @@ export class BulkManager {
if (result.success) {
const currentConfig = MODEL_CONFIG[state.currentPageType];
showToast(`Successfully deleted ${result.deleted_count} ${currentConfig.displayName.toLowerCase()}(s)`, 'success');
showToast('toast.models.deletedSuccessfully', {
count: result.deleted_count,
type: currentConfig.displayName.toLowerCase()
}, 'success');
filePaths.forEach(path => {
state.virtualScroller.removeItemByFilePath(path);
@@ -403,11 +406,11 @@ export class BulkManager {
window.modelDuplicatesManager.updateDuplicatesBadgeAfterRefresh();
}
} else {
showToast(`Error: ${result.error || 'Failed to delete models'}`, 'error');
showToast('toast.models.deleteFailed', { error: result.error || 'Failed to delete models' }, 'error');
}
} catch (error) {
console.error('Error during bulk delete:', error);
showToast('Failed to delete models', 'error');
showToast('toast.models.deleteFailedGeneral', {}, 'error');
}
}
@@ -538,7 +541,7 @@ export class BulkManager {
selectAllVisibleModels() {
if (!state.virtualScroller || !state.virtualScroller.items) {
showToast('Unable to select all items', 'error');
showToast('toast.bulk.unableToSelectAll', {}, 'error');
return;
}
@@ -565,7 +568,10 @@ export class BulkManager {
const newlySelected = state.selectedModels.size - oldCount;
const currentConfig = MODEL_CONFIG[state.currentPageType];
showToast(`Selected ${newlySelected} additional ${currentConfig.displayName.toLowerCase()}(s)`, 'success');
showToast('toast.models.selectedAdditional', {
count: newlySelected,
type: currentConfig.displayName.toLowerCase()
}, 'success');
if (this.isStripVisible) {
this.updateThumbnailStrip();
@@ -574,7 +580,7 @@ export class BulkManager {
async refreshAllMetadata() {
if (state.selectedModels.size === 0) {
showToast('No models selected', 'warning');
showToast('toast.models.noModelsSelected', {}, 'warning');
return;
}
@@ -610,7 +616,7 @@ export class BulkManager {
} catch (error) {
console.error('Error during bulk metadata refresh:', error);
showToast('Failed to refresh metadata', 'error');
showToast('toast.models.refreshMetadataFailed', {}, 'error');
}
}
}