@@ -13,6 +13,7 @@ import React, { useMemo, useState } from 'react'
1313import { useAppSelector } from '../../state/hooks'
1414import { UndoModal } from '../UndoModal'
1515import { useDocContext } from '../../state/DocContext'
16+ import { useTranslation } from 'react-i18next'
1617
1718
1819import { SampleDataLoader } from '../SampleDataLoader'
@@ -27,32 +28,33 @@ export interface TimeProps {
2728
2829
2930const ControlPanel : React . FC < TimeProps > = ( { bounds, handleSave, isDirty } ) => {
31+ const { t } = useTranslation ( )
3032 const canUndo = useAppSelector ( state => state . fColl . past . length > 1 )
3133 const canRedo = useAppSelector ( state => state . fColl . future . length > 0 )
3234 const { viewportFrozen, setViewportFrozen, copyMapToClipboard, time, setTime } = useDocContext ( )
3335 const [ undoModalVisible , setUndoModalVisible ] = useState ( false )
3436
3537 const undoRedoTitle = useMemo ( ( ) => {
3638 if ( canUndo && canRedo ) {
37- return 'Undo/Redo ...'
39+ return t ( 'controlPanel.undoRedo' )
3840 } else if ( canUndo ) {
39- return 'Undo ...'
41+ return t ( 'controlPanel.undo' )
4042 } else if ( canRedo ) {
41- return 'Redo ...'
43+ return t ( 'controlPanel.redo' )
4244 } else {
4345 return null
4446 }
45- } , [ canUndo , canRedo ] )
47+ } , [ canUndo , canRedo , t ] )
4648
4749 const toggleFreezeViewport = ( ) => {
4850 setViewportFrozen ( ! viewportFrozen )
4951 }
5052
5153 const copyTooltip = useMemo ( ( ) => {
5254 return viewportFrozen
53- ? 'Copy snapshot of map to the clipboard'
54- : 'Lock the viewport in order to take a snapshot of the map'
55- } , [ viewportFrozen ] )
55+ ? t ( 'controlPanel.copySnapshot' )
56+ : t ( 'controlPanel.lockViewportFirst' )
57+ } , [ viewportFrozen , t ] )
5658
5759 const toggleFilterApplied = ( ) => {
5860 setTime ( prevTime => ( { ...prevTime , filterApplied : ! prevTime . filterApplied } ) )
@@ -61,18 +63,18 @@ const ControlPanel: React.FC<TimeProps> = ({ bounds, handleSave, isDirty }) => {
6163 const buttonStyle = { margin : '0 5px' }
6264
6365 const saveButton = useMemo ( ( ) => {
64- return < Tooltip placement = 'bottom' title = { isDirty ? 'Save changes' : 'Document unchanged' } >
66+ return < Tooltip placement = 'bottom' title = { isDirty ? t ( 'controlPanel.saveChanges' ) : t ( 'controlPanel.documentUnchanged' ) } >
6567 < Button onClick = { handleSave } disabled = { ! isDirty } variant = 'outlined' >
6668 < SaveOutlined />
6769 </ Button >
6870 </ Tooltip >
69- } , [ handleSave , isDirty ] )
71+ } , [ handleSave , isDirty , t ] )
7072
7173 const enableTip = useMemo ( ( ) => {
7274 return bounds
73- ? 'Enable time controls, to filter tracks by time'
74- : 'No time data available'
75- } , [ bounds ] )
75+ ? t ( 'controlPanel.enableTimeControls' )
76+ : t ( 'controlPanel.noTimeData' )
77+ } , [ bounds , t ] )
7678
7779 return (
7880 < >
@@ -82,7 +84,7 @@ const ControlPanel: React.FC<TimeProps> = ({ bounds, handleSave, isDirty }) => {
8284 < Col span = { 20 } style = { { textAlign : 'left' , display : 'flex' , alignItems : 'center' } } >
8385 < Tooltip
8486 mouseEnterDelay = { 0.8 }
85- title = 'Lock viewport to prevent accidental map movement. When time filtering, mouse wheel updates time'
87+ title = { t ( 'controlPanel.lockViewport' ) }
8688 >
8789 < Button
8890 style = { buttonStyle }
@@ -107,7 +109,7 @@ const ControlPanel: React.FC<TimeProps> = ({ bounds, handleSave, isDirty }) => {
107109 { time . filterApplied ? < FilterFilled /> : < FilterOutlined /> }
108110 </ Button >
109111 </ Tooltip >
110- < Tooltip placement = 'bottom' title = { undoRedoTitle || 'Nothing to undo/redo' } >
112+ < Tooltip placement = 'bottom' title = { undoRedoTitle || t ( 'controlPanel.nothingToUndoRedo' ) } >
111113 < Button
112114 style = { buttonStyle }
113115 className = 'undo-redo-button'
0 commit comments