diff --git a/frontend/src/components/simulator/SimulatorCanvas.tsx b/frontend/src/components/simulator/SimulatorCanvas.tsx index 42837e61..b6183562 100644 --- a/frontend/src/components/simulator/SimulatorCanvas.tsx +++ b/frontend/src/components/simulator/SimulatorCanvas.tsx @@ -2,6 +2,7 @@ import { useSimulatorStore, getEsp32Bridge } from '../../store/useSimulatorStore import React, { useEffect, useState, useRef, useCallback } from 'react'; import { createPortal } from 'react-dom'; import { Undo2, Redo2 } from 'lucide-react'; +import { useTranslation } from 'react-i18next'; import { ESP32_ADC_PIN_MAP } from '../velxio-components/Esp32Element'; import { ComponentPickerModal } from '../ComponentPickerModal'; import { ComponentPropertyDialog } from './ComponentPropertyDialog'; @@ -87,6 +88,7 @@ interface SimulatorCanvasProps { } export const SimulatorCanvas = ({ headerSlot }: SimulatorCanvasProps = {}) => { + const { t } = useTranslation(); const isTouchDevice = useIsCoarsePointer(); // Mirror to a ref so the long-lived touch handler effect (deps deliberately // narrow to avoid rebinding listeners on every render) can read the latest @@ -1866,7 +1868,7 @@ export const SimulatorCanvas = ({ headerSlot }: SimulatorCanvasProps = {}) => { cursor: 'pointer', }} > - Dismiss + {t('editor.canvas.dismiss')} )} @@ -1880,7 +1882,7 @@ export const SimulatorCanvas = ({ headerSlot }: SimulatorCanvasProps = {}) => { {/* Status LED */} {/* Active board selector (multi-board) — hidden when no boards */} @@ -1890,7 +1892,7 @@ export const SimulatorCanvas = ({ headerSlot }: SimulatorCanvasProps = {}) => { value={activeBoardId ?? ''} onChange={(e) => useSimulatorStore.getState().setActiveBoardId(e.target.value)} disabled={running} - title="Active board" + title={t('editor.canvas.activeBoard')} > {boards.map((b) => (