i18n(instances): localize bulk operation toolbar buttons
All checks were successful
Deploy to Production / Trigger production update (push) Successful in 7s

Translate Start/Stop/Delete/Clear and the selected-count label in the bulk
actions toolbar (add instances.selected_count key). Also includes node label
display in the node filter/table.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-27 19:02:11 +05:00
parent 1f9a51b0be
commit 381e7ae821
3 changed files with 8 additions and 6 deletions

View File

@@ -1001,21 +1001,21 @@ export default function InstancesPage() {
{/* Bulk actions toolbar */} {/* Bulk actions toolbar */}
{selectedVMs.length > 0 && ( {selectedVMs.length > 0 && (
<div className="flex items-center gap-2 rounded-lg border bg-muted/50 p-2"> <div className="flex items-center gap-2 rounded-lg border bg-muted/50 p-2">
<span className="text-sm font-medium">{selectedVMs.length} selected</span> <span className="text-sm font-medium">{t('instances.selected_count', '{{count}} выбрано', { count: selectedVMs.length })}</span>
<Button variant="outline" size="sm" onClick={() => handleBulk('start')} disabled={bulkOp.isPending}> <Button variant="outline" size="sm" onClick={() => handleBulk('start')} disabled={bulkOp.isPending}>
<Play className="mr-1 h-3 w-3" /> Start <Play className="mr-1 h-3 w-3" /> {t('common.start', 'Запустить')}
</Button> </Button>
<Button variant="outline" size="sm" onClick={() => handleBulk('restart')} disabled={bulkOp.isPending}> <Button variant="outline" size="sm" onClick={() => handleBulk('restart')} disabled={bulkOp.isPending}>
<RotateCcw className="mr-1 h-3 w-3" /> {t('common.restart', 'Перезагрузка')} <RotateCcw className="mr-1 h-3 w-3" /> {t('common.restart', 'Перезагрузить')}
</Button> </Button>
<Button variant="outline" size="sm" onClick={() => handleBulk('stop')} disabled={bulkOp.isPending}> <Button variant="outline" size="sm" onClick={() => handleBulk('stop')} disabled={bulkOp.isPending}>
<Square className="mr-1 h-3 w-3" /> Stop <Square className="mr-1 h-3 w-3" /> {t('common.stop', 'Остановить')}
</Button> </Button>
<Button variant="destructive" size="sm" onClick={() => handleBulk('delete')} disabled={bulkOp.isPending}> <Button variant="destructive" size="sm" onClick={() => handleBulk('delete')} disabled={bulkOp.isPending}>
<Trash2 className="mr-1 h-3 w-3" /> Delete <Trash2 className="mr-1 h-3 w-3" /> {t('common.delete', 'Удалить')}
</Button> </Button>
<Button variant="ghost" size="sm" onClick={() => setRowSelection({})}> <Button variant="ghost" size="sm" onClick={() => setRowSelection({})}>
Clear {t('common.clear', 'Очистить')}
</Button> </Button>
</div> </div>
)} )}

View File

@@ -257,6 +257,7 @@
"destroy": "Destroy", "destroy": "Destroy",
"task_activity": "Task Activity", "task_activity": "Task Activity",
"status_creating": "Creating", "status_creating": "Creating",
"selected_count": "{{count}} selected",
"status_starting": "Starting", "status_starting": "Starting",
"status_stopping": "Stopping", "status_stopping": "Stopping",
"status_restarting": "Restarting", "status_restarting": "Restarting",

View File

@@ -257,6 +257,7 @@
"destroy": "Уничтожить", "destroy": "Уничтожить",
"task_activity": "Активность задач", "task_activity": "Активность задач",
"status_creating": "Создание", "status_creating": "Создание",
"selected_count": "{{count}} выбрано",
"status_starting": "Запуск", "status_starting": "Запуск",
"status_stopping": "Остановка", "status_stopping": "Остановка",
"status_restarting": "Перезагрузка", "status_restarting": "Перезагрузка",