import Translate from "./Translate"; import { useState } from "react"; import Translator from "./ai/Translator.ts"; import Initialize from "./Initialize.tsx"; function App() { const [translator, setTranslator] = useState(null); const [progress, setProgress] = useState(0); const [isInitializing, setIsInitializing] = useState(false); const init = async () => { setIsInitializing(true); const t = Translator.getInstance(); const loaded = new Map(); let newProgress = 0; await t.init((e) => { if (e.status === "progress") { loaded.set(e.file, e.loaded); const allLoaded = Array.from(loaded.values()).reduce( (acc: number, curr: number) => acc + curr, 0 ); const percentLoaded = Math.round((100 / Translator.size) * allLoaded); if (newProgress !== percentLoaded) { newProgress = percentLoaded; setProgress(newProgress); } } }); setTranslator(t); setIsInitializing(false); }; return (

Gemma Logo TranslateGemma // Gemma Logo Transformers.js

{translator ? ( ) : ( )}
); } export default App;