[voikko] GtkSpell ei toimi kunnolla Voikon kanssa
Ville-Pekka Vainio
vpivaini at cs.helsinki.fi
Mon Feb 1 21:29:52 EET 2010
Hei,
Tuli vastaan gtkspell-ongelmia, kun ryhdyin tutkimaan, että miksi
oikoluku ei toimi virtaal-po-editorissa (jossa sen pitäisi siis toimia
suunnilleen gtkspell-pyenchant-enchant-libvoikko-tyyppisen pinon
kautta).
Käytän tässä nyt gtkspellin python-rajapinnan metodien nimiä, koska
sillä näitä asioita on helpointa testata. Huomasin että jos gtkspellille
antaa joko set_language()-metodissa tai gtkspell.Spell()-konstruktorin
toisena parametrina jonkin muun kielen kuin fi_FI, niin kontekstivalikon
kielivalinnassa näkyy fi. Sen voi valita ja suomen kielen oikoluku tulee
käyttöön, mutta samalla fi katoaa luettelosta ja gtkspell väittää, että
käytössä on luettelon ensimmäinen kieli, täällä en_AG. Jos gtkspellille
antaa heti aluksi parametrina fi_FI:n, niin suomen kielen oikoluku on
käytössä, mutta fi-valintaa ei näy valikossa ollenkaan ja valittuna on
tuo sama en_AG.
Huomasin myös, että gtkspell.Spell()-konstruktori ja
set_language()-metodi hyväksyvät erilaiset parametrit. Konstruktorille
kelpaa muodot fi, fi_FI ja fi-FI, sen sijaan set_language()-metodille
kelpaa muodot fi_FI ja fi-FI, mutta ei fi, josta seuraa RuntimeError
pythonissa.
Tein näistä Sourceforgeen tiketit:
https://sourceforge.net/tracker/index.php?func=detail&aid=2942898&group_id=7896&atid=107896
https://sourceforge.net/tracker/index.php?func=detail&aid=2942885&group_id=7896&atid=107896
Minulla on Fedora 12:ssa käytössä gtkspell 2.0.16 ja enchant 1.5. Onko
vastaavia ongelmia muissa jakeluissa?
Liitän tähän vielä lyhyen testikoodin, jolla noita ongelmia voi
kokeilla, se perustuu Kalvin Zariuksen tiketissä
<https://sourceforge.net/tracker/?func=detail&aid=2827511&group_id=7896&atid=107896> julkaisemaan koodiin (jolle ei ole merkitty lisenssiä, mutta ehkäpä voidaan ajatella, että näin yksinkertainen koodi ei ylitä teoskynnystä...)
import gtk
import gtkspell
class PyApp (gtk.Window) :
def __init__ (self) :
gtk.Window.__init__ (self)
self.textView = gtk.TextView()
textWindow = gtk.ScrolledWindow()
textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
textWindow.add(self.textView)
self.set_size_request(800, 600)
# demonstrate "fi" getting listed when some other language is
# selected at initialization
spell = gtkspell.Spell(self.textView, "en_US")
# demonstrate inconsistencies between Spell and set_language
# arguments
# these work
#spell = gtkspell.Spell(self.textView, "fi")
#spell = gtkspell.Spell(self.textView, "fi_FI")
#spell = gtkspell.Spell(self.textView, "fi-FI")
#spell = gtkspell.Spell(self.textView)
# these work
#spell.set_language("fi_FI")
#spell.set_language("fi-FI")
# this DOES NOT WORK, throws RuntimeError
#spell.set_language("fi")
self.add(textWindow)
self.show_all()
self.connect("destroy", gtk.main_quit)
win = PyApp ()
gtk.main ()
--
Ville-Pekka Vainio
More information about the voikko
mailing list