telegramdesktop / tdesktop

Telegram Desktop messaging app
https://desktop.telegram.org/
Other
26.16k stars 5.19k forks source link

Add spellchecking #96

Closed sigod closed 4 years ago

sandsmark commented 10 years ago

I guess I can pimp my own solution here: http://inqlude.org/libraries/sonnet.html

shirishag75 commented 10 years ago

whatever solution, a solution is needed.

carrerasrodrigo commented 10 years ago

yes, this is a very important feature to have!

ByteShare commented 9 years ago

I created a new request for this, sorry. I created #237.

Kraigo commented 9 years ago

Need Spell Checker for Russian language.

Innomen commented 9 years ago

Still wanted. (English.) Notepad++ has a spell check plugin, perhaps someone could adapt that?

zumoshi commented 9 years ago

would be nice to have.

HallEffect commented 9 years ago

It will be nice feature!

aquada commented 9 years ago

Pitching in here to plead for this to get implemented. My smelling needs checking :)

chaosdrop commented 9 years ago

TinySpell is a workable solution for people who really need spellchecking right now. Just figured I'd post it here since it's what I am doing in the mean time.

chaosdrop commented 9 years ago

In most open source projects it's all about integrating Enchant (since it works on OSX, Windows, Linux and can cover a huge number of languages) unless they want to do some kind of special in-house spell-checker. Which I assume most be what they are looking into having taken this long, normally Enchant is pretty fast and easy to get worked into a project.

The main thing is it would be nice if they would actually talk to us. Thus far the only thing I'm disliking about Telegram is that the developers don't seem to want to inform the community about anything in the works. Channels are a good example; they are cool and could be very awesome with a few more additional features, one of the biggest things I'd like to see is a self-hosted web-view so that none-members could view channels without needing to install any telegram client, or you could embed the channel in a website as a replacement for RSS. However there's no idea as to what to really expect from channels since the team behind telegram doesn't share any insight on the future of the project.

comzeradd commented 8 years ago

On Linux the best solution would be to utilize hunspell for this.

jacobmischka commented 8 years ago

So many people shaming the devs and so zero people submitting pull requests.

Innomen commented 8 years ago

@jacobmischka You know I hear whtieknight shield polish is still on sale from Cyber Monday in a few places. >.>

auchri commented 8 years ago

@jacobmischka +1

vitordelucca commented 8 years ago

Please, would be good if the Windows version used the API (8+) https://msdn.microsoft.com/en-us/library/windows/desktop/hh869852(v=vs.85).aspx cause then it supports the touch keyboard for tablets too.

kmare commented 8 years ago

@Placid7 you're wrong actually. The protocol is open source, all the apps acting as clients are open source etc (so they're not proprietary, and one of the many reasons I chose telegram in the first place). Implementing a spell checker has nothing to do with proprietary or security. In fact, it shouldn't even be hard to add that feature. I would do it myself if I had the time.

ghost commented 8 years ago

Then I'm going to give a +1 @jacobmischka. My mind is blown that so many people are making this request and virtually no pull requests.

If it is open source and the protocol is available why isn't there a plugin being worked out by the users (which is what I cam here looking for)? I'm new to programming and don't have the skill to develope this from scratch and was actually looking for someone who was already working on this so I could take a wack at it.

zignd commented 8 years ago

Maybe we should start a Kickstarter campaign in order to get some money to hire a C++ dev to implement this issue.

jacobmischka commented 8 years ago

Oh, I just read through CONTRIBUTING.md, if someone implemented this would it even be merged? @auchri

stek29 commented 8 years ago

I'm sure that it should use system API's on OSX and Windows, and on Linux too, if any. Or a Qt plugin, I think there are some spellchecking plugins. Don't invent a bicycle.

jacobmischka commented 8 years ago

Hunspell + Qt is common, certainly he wasn't planning on writing a spellchecking library from scratch. The system APIs make it a bit obnoxious making it cross platform, which I imagine will be the most annoying part.

stek29 commented 8 years ago

@auchri Could you please check if Hunspell license is compatible with TDesktop one?

auchri commented 8 years ago

@stek29 Hunspell is triple licensed (Free software (LGPL, GPL, MPL tri-license)). Since LGPL 2.1 is compatible with GPLv3 (the license which Telegram Desktop uses), it's save to use it with tdesktop :)

stek29 commented 8 years ago

And looks like it also supports static linking (if HUNSPELL_STATIC is defined)

neesti commented 8 years ago

Hello. Please support Persian (Farsi) spell checker. Thank you.

opeRaptor commented 8 years ago

Wait... Opened in 2014 and still no solution? I really want this feature!

Frederick888 commented 8 years ago

I think you can provide spellchecking for English first...

AndydeCleyre commented 8 years ago

I agree with @sandsmark's comment from 2 years ago, sonnet seems like a great choice here. Stick with Qt, stick cross platform.

https://github.com/KDE/sonnet https://inqlude.org/libraries/sonnet.html

Sonnet is a plugin-based spell checking library for Qt-based applications. It supports several different plugins, including HSpell, Enchant, ASpell and HUNSPELL.

It also supports automated language detection, based on a combination of different algorithms.

The simplest way to use Sonnet in your application is to use the SpellCheckDecorator class on your QTextEdit.

As long as you're using QTextEdit widgets, this would seem to be a very simple introduction.

I'd wager this project would see a healthy bump in pull requests if they moved to upstream Qt rather than a custom patched version (and consequently featured a simpler build process).

emadpres commented 8 years ago

In FAQ you say "No Call for now. We specialize in sending messages, ... There are still many things that we can revolutionize in messaging." I think spell checker is one of the most-basic feature in every messaging app. Please add English spell checker for Windows client.

Mte90 commented 8 years ago

we need that feature! on linux is very easy an integration of hunspell or other solutions

zaps166 commented 8 years ago

If nobody else hasn't started working at hunspell implementation I can try to do this, but I don't know telegram code, so it can take a time... I've got simple code to Qt5 spell checker (via hunspell) - now it needs to be implemented in telegram-desktop.

AndydeCleyre commented 8 years ago

@telegramdesktop are you using a QTextEdit widget for the message composer box?

zaps166 commented 8 years ago

@AndydeCleyre yes, this is QTextEdit. I haven't tried Sonnet, but it should work.

My hunspell highlighter works properly with Polish and English words. The most difficult thing is to create options for it :smile:

Screenshot (Telegram Desktop v0.9.56; Qt 5.6.1): telegram-spellchecker


Unfortunately we do not merge any pull requests that have new feature implementations, translations to new languages and those which introduce any new user interface elements.

Hmm... What with this?

zaps166 commented 8 years ago

I've got this: https://github.com/zaps166/tdesktop/commit/d4ed33144d35915d100eb27e574c89473e9b689d https://github.com/zaps166/tdesktop/commit/bfd2d2dbbfd9d0e06d727f62a67baaf4a520aca5

Also attached here (forked repository can be changed or removed): Add spell checker via hunspell.patch.txt

For me (and probably for users which want to compile tdesktop) it is sufficient :) The code uses system language as default spell checker and also always en_US as a second language (you can change it in code). The patch can be applied also for stable (not master) version (just replace tabs by four spaces for *.pro file in the patch). Also I recommend to use Qt 5.6.1 (only Windows code has rejects which can be ignored for Linux users) :smile:

For static linking (also for Windows and OS X) the hunspell probably must be patched to use dictionaries from Qt resources. If the PRs with new features won't be merged (according to contribution guide) currently I won't finish it - developers can use this code or guide me what to do (add and fix - travis, code, *.pro files; replace hard-coded paths and langs, etc.) for adding a new feature.

perk11 commented 8 years ago

Can confirm, @zaps166's works wonderful.

zaps166 commented 8 years ago

@auchri @john-preston Is it any chance for accepting PR with a new feature? If yes I can do some fixes and create a PR... Or just use my code (it is already signed in my repo) :)

stek29 commented 8 years ago

@zaps166 did you test it on all platforms? Had you rewrote docs? What about languages? What about non-default languages? What about disabling spellcheck inside code blocks? (... and ...) What about using OS X's spellchecker on OS X, not hunspell's default one? Have you checked compatibility with mentions by name (Blue text)?

Btw why you haven't used kde's sonnet? I've thought it would be easier...

zaps166 commented 8 years ago

@stek29

did you test it on all platforms? Had you rewrote docs?

No, currently this is Linux-only (see *.pro file diff). Patch is not finished.

What about languages? What about non-default languages?

It needs settings for this, as I wrote before - patch is not finished. Currently uses english and system language (if exists). Adding GUI for this with translations for supported languages by Telegram is more work than implementing spell-checking itself. If PR with new features are not accepted, so no need for doing this now (CONTRIBUTING.md).

What about disabling spellcheck inside code blocks? (... and ...)

Should be implemented, but currently it won't underline brackets and other characters, only variables and maybe some keywords.

What about using OS X's spellchecker on OS X, not hunspell's default one?

I don't know Obj-C and OS X API. Hunspell is portable, so it should work there. Also Hunspell can unify spell-checking. Native spell-checking can be implemented anytime later.

Have you checked compatibility with mentions by name (Blue text)?

Which blue text? I don't fully understand this sentence. Text with "@" prefix (it is blue)?


Btw why you haven't used kde's sonnet? I've thought it would be easier...

Maybe I'll try later if it is easier (but Hunspell is already implemented...) - currently it is sufficient for me :smile:

stek29 commented 8 years ago

@zaps166 blue text: try mentioning someone who has no username.

zaps166 commented 8 years ago

@stek29 If someones name won't be in dictionary then it will underline it, but it still will be blue (currently).

akashnimare commented 8 years ago

@zaps166 @stek29 any updates on this?

Pub4Game commented 8 years ago

What? 2 years? @auchri just don it, omg

auchri commented 8 years ago

@Pub4Game I've got other things to do.

Pub4Game commented 8 years ago

@auchri I understand, but 2 years? It is difficult to add the change text event of the field and to add a spell check?

stek29 commented 8 years ago

@Pub4Game If it's so easy why won't you do it? I think TD team would be happy to merge your PR.

Innomen commented 8 years ago

@stek29

I'm so tired of that "logic."

What's easy for a cardiac surgeon is not easy for a physicist.

Just because someone can recognize something is easy for someone else doesn't mean it's easy for them.

People aren't ants. We have individual variation.

Coders these days, infected by greed almost to a man, don't take a dump without a royalty fee in the offing, regardless of ease. When they aren't simply lying about being coders in the first place.

Heh, but what do we expect from the only industry on earth where being called a "hack" isn't an insult?

john-preston commented 8 years ago

@Innomen It's really not that easy for me, sorry :(

Innomen commented 8 years ago

@john-preston

That's ok :) I suspect if you could, you would, out of simple kindness, which is a lot more than I can say for some people.

john-preston commented 8 years ago

@Innomen Btw maybe you at least know where to get a set of dictionaries for the spellchecking, that are completely license-free, can be embedded into tdesktop app and are available for at least all the supported tdesktop languages? (English, Spanish, Italian, Dutch, Korean, German, Portuguese-Brazil)