diff --git a/src/components/settings/LanguageSelector.tsx b/src/components/settings/LanguageSelector.tsx index ae93b4e..bb20eca 100644 --- a/src/components/settings/LanguageSelector.tsx +++ b/src/components/settings/LanguageSelector.tsx @@ -11,6 +11,8 @@ interface LanguageSelectorProps { grouped?: boolean; } +const unsupportedModels = ["parakeet-tdt-0.6b-v2", "parakeet-tdt-0.6b-v3"]; + export const LanguageSelector: React.FC = ({ descriptionMode = "tooltip", grouped = false, @@ -23,8 +25,7 @@ export const LanguageSelector: React.FC = ({ const searchInputRef = useRef(null); const selectedLanguage = getSetting("selected_language") || "auto"; - const isParakeetModel = currentModel === "parakeet-tdt-0.6b-v3"; - const isLanguageSelectionDisabled = isParakeetModel; + const isUnsupported = unsupportedModels.includes(currentModel); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -68,7 +69,7 @@ export const LanguageSelector: React.FC = ({ [searchQuery], ); - const selectedLanguageName = isParakeetModel + const selectedLanguageName = isUnsupported ? "Auto" : LANGUAGES.find((lang) => lang.value === selectedLanguage)?.label || "Auto"; @@ -84,7 +85,7 @@ export const LanguageSelector: React.FC = ({ }; const handleToggle = () => { - if (isUpdating("selected_language") || isLanguageSelectionDisabled) return; + if (isUpdating("selected_language") || isUnsupported) return; setIsOpen(!isOpen); }; @@ -106,27 +107,25 @@ export const LanguageSelector: React.FC = ({
- {isOpen && - !isUpdating("selected_language") && - !isLanguageSelectionDisabled && ( -
- {/* Search input */} -
- -
- -
- {filteredLanguages.length === 0 ? ( -
- No languages found -
- ) : ( - filteredLanguages.map((language) => ( - - )) - )} -
+ {isOpen && !isUpdating("selected_language") && !isUnsupported && ( +
+ {/* Search input */} +
+
- )} + +
+ {filteredLanguages.length === 0 ? ( +
+ No languages found +
+ ) : ( + filteredLanguages.map((language) => ( + + )) + )} +
+
+ )}
{isUpdating("selected_language") && ( diff --git a/src/components/settings/TranslateToEnglish.tsx b/src/components/settings/TranslateToEnglish.tsx index 06e894e..a03abf9 100644 --- a/src/components/settings/TranslateToEnglish.tsx +++ b/src/components/settings/TranslateToEnglish.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useMemo } from "react"; import { listen } from "@tauri-apps/api/event"; import { ToggleSwitch } from "../ui/ToggleSwitch"; import { useSettings } from "../../hooks/useSettings"; @@ -9,13 +9,31 @@ interface TranslateToEnglishProps { grouped?: boolean; } +const unsupportedTranslationModels = [ + "parakeet-tdt-0.6b-v2", + "parakeet-tdt-0.6b-v3", + "turbo", +]; + export const TranslateToEnglish: React.FC = React.memo( ({ descriptionMode = "tooltip", grouped = false }) => { const { getSetting, updateSetting, isUpdating } = useSettings(); - const { currentModel, loadCurrentModel } = useModels(); + const { currentModel, loadCurrentModel, models } = useModels(); const translateToEnglish = getSetting("translate_to_english") || false; - const isParakeetModel = currentModel === "parakeet-tdt-0.6b-v3"; + const isDisabledTranslation = + unsupportedTranslationModels.includes(currentModel); + + const description = useMemo(() => { + if (isDisabledTranslation) { + const currentModelDisplayName = models.find( + (model) => model.id === currentModel, + )?.name; + return `Translation is not supported by the ${currentModelDisplayName} model.`; + } + + return "Automatically translate speech from other languages to English during transcription."; + }, [models, currentModel, isDisabledTranslation]); // Listen for model state changes to update UI reactively useEffect(() => { @@ -33,13 +51,9 @@ export const TranslateToEnglish: React.FC = React.memo( checked={translateToEnglish} onChange={(enabled) => updateSetting("translate_to_english", enabled)} isUpdating={isUpdating("translate_to_english")} - disabled={isParakeetModel} + disabled={isDisabledTranslation} label="Translate to English" - description={ - isParakeetModel - ? "Translation is not supported by the Parakeet model." - : "Automatically translate speech from other languages to English during transcription." - } + description={description} descriptionMode={descriptionMode} grouped={grouped} />