translate-tools / linguist

Translate web pages, highlighted text, Netflix subtitles, private messages, speak the translated text, and save important translations to your personal dictionary to learn words even offline
https://linguister.io
BSD 3-Clause "New" or "Revised" License
673 stars 21 forks source link

[Feature request] Use multiple translators with different priorities #347

Open schklom opened 1 year ago

schklom commented 1 year ago

Bergamot can only translate some languages, and same for LibreTranslate. And also, sometimes, my LibreTranslate instance crashes. In my case, when I see a language these 2 cannot translate, I need to go into the options to change the translate engine to Google. It would be simpler to be able to give priorities to the translators.

For example: Bergamot: 1 LibreTranslate: 2 Google: 3 Yandex: -1

with a default waiting time for a positive response of e.g. 5 seconds. Linguist would try Bergamot first, and if the language is not supported or Bergamot does not reply within 5s or takes longer than 10 seconds to translate everything, then LibreTranslate (with the same conditions), then Google, then nothing because Yandex is not wanted.

I am not sure how many people would use this, but it would be useful to at least me.

vitonsky commented 1 year ago

Your feature request are clear. However, not clear use case.

Why you need this feature? Whats your problem this behavior will solve?

Take time and try to give clear answer on this question. It is possible you need another solution actually.

schklom commented 1 year ago

My preferences are already listed.

The websites I browse are sometimes written in Nordic languages (e.g. norwegian, swedish), and some other times in German. However, Bergamot and LibreTranslate do not support Nordic languages so I need Google. I only want Google when Bergamot and LibreTranslate cannot translate (privacy reasons).

The problem is that every time I go on a Nordic website, I need to open the configuration page of Linguist and change the translator, then change back to Bergamot or LibreTranslate. It works, but takes time.

vitonsky commented 1 year ago

I got you. Your suggestion looks a dangerous for users privacy, because with feature you suggest, translators can be mixed implicitly, so user can send their texts to google, when preferred translator broken or not support some language, or when page language been detected wrong.

But i see your problem. I expects a users will choose one translator and use it long time. But you want to use multiple translators at one time.

We have to think how we can solve your problem another way. Give me few ideas how Linguist could improve your user experience

schklom commented 1 year ago

with feature you suggest, translators can be mixed implicitly, so user can send their texts to google, when preferred translator broken or not support some language

If they do not want google, they could set the priority to -1. You can even give 1 by default for Bergamot, and -1 for all others.

I expects a users will choose one translator and use it long time

When LibreTranslate or Bergamot supports more languages, I will do that :)

Give me few ideas how Linguist could improve your user experience

An alternative that would help it is to let the user have a default choice for the translator (what is done right now), but add an option to choose which translator to use in the context menu and in the toolbar button.

For example, on the toolbar menu image and/or on the context menu image

vitonsky commented 1 year ago

Your concept on first screenshot looks fine, i could implement it. Let's think about details.

schklom commented 1 year ago

What about another use cases like input text translation and selected text translation? How to chose translator for this features?

For the Toolbar button, why not have the same menu as on my first screenshot? It could be something like image

How to manage this settings? If i have picked some translator on 100 sites and now i want to never use this translator, how i can reset it for all sites?

In the settings, could something like this work? image

What if user will choose custom translator and this translator will unavailable after some time (user will delete this translator)? We have to fallback to default translator? It may be implicitly for user (it is bad for privacy)

Fallback to the global preferences (in the extension settings). When the user installs the extension, it should use only Bergamot for best privacy (negative priorities for other translators). Then, use the priority list. If the user has defined priorities, the extension should respect them.

Throw an error if priorities are equal (if Bergamot and LibreTranslate have priority 1, you cannot say which one to use), and use negative priorities for translators that are not wanted (e.g. Yandex -1, Google -2).

vitonsky commented 1 year ago

For me UI looks too complicated. Idea with priorities are not secure due to ability of implicit translators switching.

Your UI concept for translator picker in text translation are not consider a case when language bar or translator name will wide.

image

Let's dream up more and will try to find a good place for language picker everywhere

And think about some another UI to reset translators for sites, something more natural. Current approach bad because too complicated: