11import { useEffect , useRef , useState } from 'react' ;
22
33import { extractInputFileExtension } from '@opendatacapture/instrument-bundler' ;
4+ import { useTranslation } from '@douglasneuroinformatics/libui/hooks' ;
45import { Columns3Icon , FilePlusIcon , FileUpIcon } from 'lucide-react' ;
56import { motion } from 'motion/react' ;
67import { useShallow } from 'zustand/react/shallow' ;
@@ -29,6 +30,7 @@ export const Editor = () => {
2930
3031 const [ isFileUploadDialogOpen , setIsFileUploadDialogOpen ] = useState ( false ) ;
3132 const [ isDeleteFileDialogOpen , setIsDeleteFileDialogOpen ] = useState ( false ) ;
33+ const { t } = useTranslation ( ) ;
3234
3335 const addFile = useAppStore ( ( store ) => store . addFile ) ;
3436 const addFiles = useAppStore ( ( store ) => store . addFiles ) ;
@@ -77,18 +79,22 @@ export const Editor = () => {
7779 return (
7880 < div className = "flex h-full w-full flex-col border border-r-0 bg-slate-50 dark:bg-slate-800" >
7981 < div className = "flex w-full border-b" >
80- < EditorButton icon = { < Columns3Icon /> } tip = "View Files" onClick = { ( ) => setIsSidebarOpen ( ! isSidebarOpen ) } />
82+ < EditorButton
83+ icon = { < Columns3Icon /> }
84+ tip = { t ( { en : 'View Files' , fr : 'Voir les fichiers' } ) }
85+ onClick = { ( ) => setIsSidebarOpen ( ! isSidebarOpen ) }
86+ />
8187 < EditorButton
8288 icon = { < FilePlusIcon /> }
83- tip = " Add File"
89+ tip = { t ( { en : ' Add File' , fr : 'Ajouter un fichier' } ) }
8490 onClick = { ( ) => {
8591 setIsSidebarOpen ( true ) ;
8692 setIsAddingFile ( true ) ;
8793 } }
8894 />
8995 < EditorButton
9096 icon = { < FileUpIcon /> }
91- tip = " Upload Files"
97+ tip = { t ( { en : ' Upload Files' , fr : 'Téléverser des fichiers' } ) }
9298 onClick = { ( ) => {
9399 setIsFileUploadDialogOpen ( true ) ;
94100 } }
@@ -135,7 +141,9 @@ export const Editor = () => {
135141 { openFilenames . length ? (
136142 < EditorPane ref = { editorPaneRef } onEditorMount = { ( ) => setIsEditorMounted ( true ) } />
137143 ) : (
138- < EditorPanePlaceholder > No File Selected</ EditorPanePlaceholder >
144+ < EditorPanePlaceholder >
145+ { t ( { en : 'No File Selected' , fr : 'Aucun fichier sélectionné' } ) }
146+ </ EditorPanePlaceholder >
139147 ) }
140148 </ div >
141149 < DeleteFileDialog
@@ -157,7 +165,7 @@ export const Editor = () => {
157165 } }
158166 isOpen = { isFileUploadDialogOpen }
159167 setIsOpen = { setIsFileUploadDialogOpen }
160- title = " Upload Files"
168+ title = { t ( { en : ' Upload Files' , fr : 'Téléverser des fichiers' } ) }
161169 onSubmit = { async ( files ) => {
162170 const editorFiles = await loadEditorFilesFromNative ( files ) ;
163171 addFiles ( editorFiles ) ;
@@ -166,7 +174,10 @@ export const Editor = () => {
166174 onValidate = { ( files : File [ ] ) => {
167175 for ( const file of files ) {
168176 if ( filenames . includes ( file . name ) ) {
169- return { message : `File already exists: ${ file . name } ` , result : 'error' } ;
177+ return {
178+ message : t ( { en : `File already exists: ${ file . name } ` , fr : `Le fichier existe déjà : ${ file . name } ` } ) ,
179+ result : 'error'
180+ } ;
170181 }
171182 }
172183 return { result : 'success' } ;
0 commit comments