microsoft / PowerToys

Windows system utilities to maximize productivity
MIT License
111.32k stars 6.55k forks source link

[Run][New Plugin] Dictionary #3309

Open aarish21 opened 4 years ago

aarish21 commented 4 years ago

image would help to search word meaning quickly a highly useful feature for everyone

yosefbernal commented 4 years ago

I would really love this feature. Often I find myself saving a file or writing the name of a class or property and wondered how to spell it. What I do right now is open a new google search and search for that single word. How nice would it be to be able to do this from Run. You could use the Oxford dictionaries API.

sujoybyte commented 3 years ago

I want this feature so much, would really be a handy feature.

TobiasSekan commented 3 years ago

Nice idea

but we need more than only a English dictionary, at minimum dictionaries for all supported languages (cs, de, es, fr, hu, it, ja, ko, nl, pl, pt-BR, pt-PT, ru, sv, tr, zh-Hans, zh-Hant)

And all of these dictionaries must be open-source or free-usage (possible license problems)

franky920920 commented 3 years ago

Nice idea

but we need more than only a English dictionary, at minimum dictionaries for all supported languages (cs, de, es, fr, hu, it, ja, ko, nl, pl, pt-BR, pt-PT, ru, sv, tr, zh-Hans, zh-Hant)

And all of these dictionaries must be open-source or free-usage (possible license problems)

Bing dictionaries' API might work and has no license issues since it's "Microsoft Bing". :D

octopushugger commented 2 years ago

Highly desired feature. Came here to request this. Would be really nice to not have to web search for definitions anymore.

TobiasSekan commented 2 years ago

Bing dictionaries' API might work and has no license issues since it's "Microsoft Bing". :D

@franky920920 Where can i find a API documentation for this?

yosefbernal commented 2 years ago

I have been looking around. The only solution I found that would meet the multilingual requirement that @TobiasSekan suggested is the Oxford Dictionaries API. It is not free but it dies offer a free tier which can be used for testing. I believe this are the same dictionaries use in macOS, as well as the Bing search engine: image Maybe someone can talk someone who knows someone at Microsoft :)

I did find that Microsoft offers the Microsoft® Terminology Service API, but the documentation is quite obscure.

franky920920 commented 2 years ago

I have been looking around. The only solution I found that would meet the multilingual requirement that @TobiasSekan suggested is the Oxford Dictionaries API. It is not free but it dies offer a free tier which can be used for testing. I believe this are the same dictionaries use in macOS, as well as the Bing search engine:

image

Maybe someone can talk someone who knows someone at Microsoft :)

I did find that Microsoft offers the [Microsoft®

Terminology Service API](https://www.microsoft.com/en-us/language/Microsoft-Terminology-API#:~:text=The%20Microsoft%20Terminology%20Service%20API%20allows%20you%20to,translate%20your%20Windows%20Store%20or%20Windows%20Phone%20apps.), but the documentation is quite obscure.

@crutkas for the API source and the licensing issues. :)

komawoyo commented 2 years ago

instead of using an api or webattached dictionary, it would be nice to have an offline dictionary included. Something like https://github.com/wordset/wordset-dictionary so we dont have to ping to internet every time. Or if you need to search up a word while reading on the airplane.

LemmusLemmus commented 2 years ago

It might be worth looking into Wiktionary, a free dictionary that supports many languages. It does have an API, but I do not know how well it works.

Jay-o-Way commented 2 years ago

I made a bookmark for Wiktionary in my browser that has for url:

javascript:(function()
 {function se(d) {
    return d.selection ? d.selection.createRange().text : d.getSelection()} s = se(document); for (i=0; i<frames.length && !s; i++) s = se(frames[i].document); if (!s || s==%27%27) s = prompt(%27Enter search terms for Wiktionary%27,%27%27); open(%27https://en.wiktionary.org%27 + (s ? %27/w/index.php?title=Special:Search&search=%27 + encodeURIComponent(s) : %27%27)).focus();
 })();

When I select a word in a browser, this link will open the (English) page for it. If no text is selected, it prompts.

Besides that,

LemmusLemmus commented 2 years ago

@Jay-o-Way Excellent questions!

I'd like to attempt to answer, or at least expand on, some of the questions, if one assumes Wiktionary as the used source.

  • if offline: what size is needed for data?

All file sizes below are when stored in the ZIM file format, a compressed yet simultaneously readable on the fly file file format. I'm using the Kiwix app for reference. The entirety of the English wiktionary is currently roughly 6 GB with pictures and 5.7 GB without pictures. In comparison, the entire German Wiktionary is roughly 1.4 GB (with pictures) and the Croatian Wiktionary is roughly 32.4 MB (with pictures). One could reduce the file size even further by stripping it of some information; one could for example remove all foreign languages from the English Wiktionary to drastically reduce its file size.

  • which languages? How to select?

This is actually a very relevant question. If I search for a word using Wiktionary, it could be in practically any language. The result I personally expect from Wiktionary is a definition provided in English* and some notes regarding its usage, etymology and pronunciation.

Example situations: Sometimes one might want certain word definitions in a different language. Let's say I'm looking up the definition of a German word as a native Swedish speaker. Sometimes German word definitions make more sense when provided in Swedish, as there may be a better corresponding Swedish word than English to define the German word. Take for example the German word "Antlitz": English Wiktionary defines it as "countenance, visage, face" (a relatively broad meaning and not particularly easy to memorize), whereas the Swedish Wiktionary defines it as "anlete, nylle". "Anlete" is very similar to the German word "Antlitz" in both word structure and meaning. Of course, if one were to be redirected to for example the English website it wouldn't be too much of a hassle to simply change the language, but it is also worth noting that a lot of words are only found in some language versions of Wiktionary, for example the Finnish word "metsämyyrä" can only be found on en.wiktionary and fi.wiktionary (although it can potentially be found indirectly elsewhere under the "translations" section of bank vole).

My point is only that one shouldn't always assume the usage of only one language at a time and that the dictionary function should be flexible at handling multiple languages.

  • And most of all: why are existing sites/apps not good enough?

That is possibly the most important question, for which I personally have no good answer.

z54 commented 2 years ago

Before the engineer added this feature, I found an alternative that doesn't sound too bad, it only supports partial language translation to Chinese or Chinese to English

Install wox with winget install wox, which is also a very popular alternative to Alfred. wox has a plug-in function, when we install wox and install the translation plug-in 'youdao dictionary', use 'fy word' when looking up words

Use powertoys to call 'wox', and then use 'fy word', we can get the translation result

This solution does not change the usage habits, does not add startup items and does not open the browser


在工程师添加此功能之前,我发现一个听起来不算太差的备选方案,它只支持部分语言翻译为中文或者中文翻译到英文

使用winget install wox安装wox,这也是一个非常受欢迎的替代Alfred的软件。wox拥有插件功能,当我们安装好wox并且安装翻译插件'有道词典',查词时使用'fy word'

使用powertoys调用wox,再使用'fy word',我们就可以的到翻译结果了

这个方案不改变使用习惯,不增加开机启动项且不打开浏览器

image

image

image

Sameedahmad commented 2 years ago

This feature needs to be implemented we don't need to open a new tab for searching word meanings.

yosefbernal commented 2 years ago

I have noticed that now Microsoft Edge has a "Define" feature, which is powered by bing search, which uses the Oxford Languages API. image

Looks precisely like what we're looking for. I supposed I or someone could write a wrapper around the bing results.. but that seems unnecessary. @crutkas, could you or someone you know at Microsoft get in touch with the guys developing this feature and see if it can be used here?

crutkas commented 2 years ago

https://developer.oxforddictionaries.com/ shows pricing model. i don't know what would exactly be involved here and how abstracted everything would have to be incase the service for Edge changed.

I see the value in the feature but trying to make something maintainable and respect licensing is critical.

nhuman commented 2 years ago

A similar program called ueli has the dictionary lookup feature, and it says it uses "an unofficial Google Dictionary API (dictionaryapi.dev)," which is free.

I'm no developer so I don't know how it works but maybe it can be used for this as well?

Aaron-Junker commented 2 years ago

Just wanted to add that Tolino Ebook readers allow you to download dictionairies with data from wikitionairy. And these aren't that big. Screenshot_20220218_093034_com.google.android.apps.docs.jpg

betamigo98 commented 2 years ago

Wish I could find synonyms and antonyms too.

cool-delete commented 1 year ago

Is there any progress on this idea?

Warrior-SG commented 1 year ago

Would be really cool to have this feature. Existing apps are not good enough since having to open browser , looking up the word or opening a dictionary app and then searching the word on it really makes it distracting. I am not a developer so i don't know how this works, but here is something that i think would make sense. If y'all can't make it work like it works on mac, then an alternative method would be to open up a dictionary plugin each time the word "meaning" is used in the search and the dictionary would close after pressing a shortcut (Especially useful for people who read on full screen and hate to leave it to search the meaning of a single word). People can decide there default language in the powerToys dictionary menu, and if they want a word's meaning in a diff language then they can type "xyz meaning in [language]". It would also makes sense if the UI for the dictionary is clean and simple since it will open up as a small window, kinda like how quick notes work with OneNote.

Ali-C-Ila commented 1 year ago

+1

StefanBloemheuvel commented 1 year ago

would be amazing!

wallflowerpaper commented 1 year ago

https://play.google.com/store/apps/details?id=livio.pack.lang.en_US&hl=en&gl=US

Just wanted to add that Tolino Ebook readers allow you to download dictionairies with data from wikitionairy. And these aren't that big. [screenshot] https://github.com/microsoft/PowerToys/issues/3309#issuecomment-1044137376

On the topic of smaller sized dictionaries, I just wanted to add that Livio's offline English Wiktionary app (linked above) is just under 60mb on my phone. I'm not sure what has been cutback or if there's stuff missing, and it's all offline as far as I know! It works fast and has synonyms, etymology, conjugations, pronunciation and even translations!!!

I think we have a winner if this can be replicated in a PowerToys Run add-on.

Sving1024 commented 1 year ago

I just found a useful plug-in: https://github.com/N0I0C0K/PowerTranslator it can do the similar things but it seems the plugin can only translate into Chinese It uses Youdao dictionary's API in China

fr1g commented 1 year ago

Me also hope this can be added into the Run. But what made me really confused is, since the needs of different plugins are huge and also different between each other, why not make a plugin market for the entire powertoys? I know quality of each plugin maybe not similar and some bad ones maybe cause experience ruined, and that is what you won't want happen. But here should be a choice for those "enhanced users"! not only someone need Everything's powerful search, but also here's someone need to use dictionaries they prefer! such as me, I prefer BKRS as my Chinese-Russian dictionary, and I also like Oxford dictionary for English and EN-ZH; more, I prefer Moji dictionary as ZH-JP dict. and more, I prefer Yandex as daily translator! I think all of these need something to make it easier to happen!

Perhaps allow users to create JS in Run in order to send customizable requests and wait powertoys to accept and display?

Casshernsins commented 1 year ago

There's still no update on this?

abirpahlwan commented 1 year ago

Bump

Kiansjet commented 10 months ago

Bump, this please; Appears to be quite neglected relative to consistent interest. Not sure if mentioned above, but additional providers for thesaurus and encyclopedic entries would be nice.

Barring hard custom implementations of lookup APIs, OpenSearch functionality allowing users to register their own search providers before jumping out into the default browser sounds a bit easier to implement, or at least for users to tailor to their needs.

vcruzdesigns commented 9 months ago

I would like to add my €0.02 here: I'm not a software developer so I unfortunately don't have the expertise but it seems that it's possible to install third party plug-ins for the PowerToys Run tool. Perhaps someone from the community could look into creating a plug-in for this?

Despite the usefulness of this feature, I don't think this is very high on the to-do list for anyone at Microsoft, hence why this issue is still open after so long.

fr1g commented 9 months ago

Maybe yes you’re right and this is not quite a technical problem that block the job. Perhaps they’re just have no willingness to pay or find a series of source of dictionaries, as which already done by apple, that can make them redistribute or call query of dictionaries legally (or, without probably legal issues)But still I think they can just use the solution of Wox. They allow users to import dictionary packages. And MS even can just hook bing translate and dictionary for now. Why don’t they do that? XDОтправлено с iPhone8 февр. 2024 г., в 22:12, Vicente Cruz @.***> написал(а): I would like to add my €0.02 here: I'm not a software developer so I unfortunately don't have the expertise but it seems that it's possible to install third party plug-ins for the Quick Run tool. Perhaps someone from the community could look into creating a plug-in for this? Despite the usefulness of this feature, I don't think this is very high on the to-do list for anyone at Microsoft, hence why this issue is still open after so long.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

shanto commented 1 month ago

Are there any development on this feature? Anyone working? I am interested to help or take the initiative myself.

abirpahlwan commented 1 month ago

Are there any development on this feature? Anyone working? I am interested to help or take the initiative myself.

Go ahead, if you want to take the initiative, bhai. I'll treat you with a coffee in person.

I have requested this multiple times on different threads over last few years. I once started myself but I could not do much since I am not proficient in building windows apps.

ASong5 commented 1 month ago

Can someone explain to me what the current bottleneck/limitation is for implementing this feature? I'm reading here that it's mostly a licensing issue, but aren't there a multitude of free/open-source dictionary APIs that can be used? Or as someone else mentioned, why not use an offline word-set instead? I can't see a reason why something like this can't be implemented relatively easily, yet this widely demanded feature still has no updates. I am clearly missing something with regard to development/licensing limitations, so could someone clue me in on what it is I'm not understanding? I wouldn't mind taking the time to develop something like this as I would really like this functionality (coming from a KDE user that has definitions build into KWin's equivalent of PowerToy Run).

treytorrez commented 3 weeks ago

bump This may be a future project of mine. I'll come back to this thread if any progress is made. If anyone has any tips on how to get a custom window(not sure what to call it) that's attached to PT run let me know. I am hardly an experienced dev.