Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion dialect/search_provider/search_provider.in
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand All @@ -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
Expand Down
19 changes: 14 additions & 5 deletions dialect/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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)
)
Expand Down