yamin8000 / freeDictionaryApp

freeDictionaryApp or free Dictionary App is a simple android application for freeDictionaryAPI. (a reincarnation of https://github.com/yamin8000/Owl2) implemented using Kotlin and Jetpack Compose
GNU General Public License v3.0
68 stars 2 forks source link

Add offline capabilities #120

Open Jackson-Nickk opened 2 months ago

Jackson-Nickk commented 2 months ago

Currently the app depends on network connection to fetch word definitions and has some sort of offline cache. But I think if it was to have internet connection people would just search their words on google and get definitions easily, and that makes this app useless. I suggest to add a download option to the app for uses to download a language package to make offline dictionary available. If the language package would be too big you can break it down to purpose specific categories like: Essential Words, Literature, Science, All the words (complete dictionary), Slang, etc.

yamin8000 commented 2 months ago

But I think if it was to have internet connection people would just search their words on google and get definitions easily, and that makes this app useless.

Yeah, well, you know, that's just, like, your opinion, man. Jokes aside, this app is simply what it is, a simple dictionary app, there's not so much benefits using this over a simple google search, I agree with you on that.

I suggest to add a download option to the app for uses to download a language package to make offline dictionary available. If the language package would be too big you can break it down to purpose specific categories like: Essential Words, Literature, Science, All the words (complete dictionary), Slang, etc.

I didn't find any offline dataset available for Free Dictionary API. There's only a list of all words for this API. Technically, one could break down the list of all, 233464 words into different categories by hand or using AI tools. The next stage of the problem is downloading definitions for the words, which can be either delegated to the user or it can be downloaded from another external server, which in itself is another Anti-Feature because now the app depends on yet another possibly non-free network. Still, it's not a bad idea.

apprehensions commented 1 month ago

I would like to see this, i don't want my dictionary to depend on an internet connection, this way, it can be more valuable or preferred over a simple google search.

Jackson-Nickk commented 1 week ago

But I think if it was to have internet connection people would just search their words on google and get definitions easily, and that makes this app useless.

Yeah, well, you know, that's just, like, your opinion, man. Jokes aside, this app is simply what it is, a simple dictionary app, there's not so much benefits using this over a simple google search, I agree with you on that.

I suggest to add a download option to the app for uses to download a language package to make offline dictionary available. If the language package would be too big you can break it down to purpose specific categories like: Essential Words, Literature, Science, All the words (complete dictionary), Slang, etc.

I didn't find any offline dataset available for Free Dictionary API. There's only a list of all words for this API. Technically, one could break down the list of all, 233464 words into different categories by hand or using AI tools. The next stage of the problem is downloading definitions for the words, which can be either delegated to the user or it can be downloaded from another external server, which in itself is another Anti-Feature because now the app depends on yet another possibly non-free network. Still, it's not a bad idea.

Sorry for being late to respond...

Another thing that can be done is using other popular commercial dictionary formats with reading support or a glossary convert system. I got the idea of having categorized word packages from Babylon, they have this kind of word collection for their software. And some programs like GoldenDict can read those Babylon files.

Those dictionaries can be hosted on GitHub so downloading them from the app would be easy I guess (I'm not a programmer myself, I just like open source apps)

I've come across a tool named BabylonToHTML but I don't know if it is suitable for this app.

Another ides is to just add offline dictionary file supporting but make it be up to users to download Babylon dictionary files from the internet (give them some links ?) and use them as they wish.

Jackson-Nickk commented 1 week ago

@yamin8000 I noticed you are Persian (منم همینطور) !!! Babylon glossaries are available to download on Iranian websites as well.

yamin8000 commented 1 week ago

I think relying on other dictionaries for offline capabilities complicates the app in terms of development considering this is an open source app developed and maintained in my spare time and besides that this app is advertised as a front for freeDictionaryApi so showing data from other sources is just misleading.
I can add an option to download and cache definitions for all the words available or at very least most used words in English from the freeDictionaryApi.

Jackson-Nickk commented 1 week ago

@yamin8000 That would work. I think offline capability is a selling point for people to install a dedicated app just for dictionary. I myself find it annoying to search for words online when I'm reading a book on my phone and suddenly a weird word comes up which I don't know its meaning.

Another killer feature would be definitions in notifications. There is an app called Notification Dictionary which does that. It lives in the selection context menu and opens a notification containing definitions when being called from there. But that app doesn't have online capability and its interface is not as good as your app. I know it's probably not going to happen, but having that convenience would be perfect.