From c93216f0bea391839432a7a55395c9fdc7e9dd44 Mon Sep 17 00:00:00 2001 From: Mufeed Ali Date: Mon, 17 Nov 2025 20:26:03 +0530 Subject: [PATCH] fix(window): Fix the Detection translator feature flag --- dialect/search_provider/search_provider.in | 6 +++++- dialect/window.py | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/dialect/search_provider/search_provider.in b/dialect/search_provider/search_provider.in index 589510ff..376b30af 100755 --- a/dialect/search_provider/search_provider.in +++ b/dialect/search_provider/search_provider.in @@ -18,6 +18,7 @@ import gi gi.require_version("Secret", "1") gi.require_version("Soup", "3.0") + from gi.events import GLibEventLoopPolicy from gi.repository import Gio, GLib @@ -89,7 +90,7 @@ class TranslateServiceApplication(Gio.Application): self.loaded = False self.translations = {} # Translations store - self.src_language = "auto" + self.src_language = "auto" if self.translator.supports_detection else self.translator.recent_src_langs[0] self.dest_language = None # Translator @@ -280,10 +281,12 @@ class TranslateServiceApplication(Gio.Application): await self.translator.init_trans() self.loaded = True + self.src_language = "auto" if self.translator.supports_detection else self.translator.recent_src_langs[0] self.dest_language = self.translator.recent_dest_langs[0] self.translator.settings.connect("changed", self._on_translator_settings_changed) except Exception: + self.src_language = None self.dest_language = None raise @@ -292,6 +295,7 @@ class TranslateServiceApplication(Gio.Application): def _on_translator_settings_changed(self, _settings, key: str): if key == "src-langs" or key == "dest-langs": + self.src_language = "auto" if self.translator.supports_detection else self.translator.recent_src_langs[0] self.dest_language = self.translator.recent_dest_langs[0] else: self.loaded = False diff --git a/dialect/window.py b/dialect/window.py index 448d880b..4f00f1f6 100644 --- a/dialect/window.py +++ b/dialect/window.py @@ -510,15 +510,20 @@ async def load_tts(self): def translate(self, text: str, src_lang: str | None, dest_lang: str | None): """ - Translates the given text from auto detected language to last used - language + Translates the given text from auto detected or last used src language to + last used dest language """ if not self.provider["trans"]: return - # Set src lang to Auto if src_lang is None: - self.src_lang_selector.selected = "auto" + # Check if provider supports detection + if self.provider["trans"].supports_detection: + # Set src lang to Auto + self.src_lang_selector.selected = "auto" + else: + # Fallback to last used src lang + self.src_lang_selector.selected = self.provider["trans"].recent_src_langs[0] else: self.src_lang_selector.selected = src_lang if dest_lang is not None and dest_lang in self.provider["trans"].dest_languages: @@ -1044,7 +1049,10 @@ def _on_src_lang_changed(self, *_args): self._pick_spell_checking_language(code) # Rewrite recent langs - self.src_recent_lang_model.set_langs(self.src_langs, auto=True) + self.src_recent_lang_model.set_langs( + self.src_langs, + self.provider["trans"].supports_detection, + ) self._check_switch_enabled() self._check_speech_enabled() @@ -1159,6 +1167,7 @@ async def _on_translation(self, *_args): if translation.detected and self.src_lang_selector.selected == "auto": if Settings.get().src_auto: + # If the user likes defaulting to Auto, we set the insight instead of switching langs self.src_lang_selector.set_insight( self.provider["trans"].normalize_lang_code(translation.detected) )