VoikkoSpellService 1.0.2 tuo oikolukuun oman sanakirjan

Suomen kielen oikoluku – järjestelmäkomponentista Mac OS X:lle, eli VoikkoSpellServicestä, on tehty testikäyttöön versio 1.0.2 (2,4 MB), joka tuo mukanaan uutena ominaisuutena oman sanakirjan käyttämisen. Palikka osaa ottaa huomioon käyttäjän sanakirjaan oppimat sanat, eikä merkkaa niitä virheellisiksi. Varsinainen muutos komponenttiin oli pieni, sillä Cocoan NSSpellServer hoitaa kaiken varsinaisen työn sanojen lisäämisen ja poistamisen osalta, ja VoikkoSpellService vain tarkistaa rajapinnan kautta löytyykö sana.

Komponentille on nyt myös oma VoikkoSpellService – OS X:n oikolukukomponentti -sivu, josta löytyy lähes kaikki oleellinen tieto oikolupalikasta kuten asennuspaketti, muutoshistoria, kehitykseen liittyvät asiat ja muutamia ohjeita.

Palikan toimintaan liittymättöminä muutoksia VoikkoSpellServicen lähdekoodi, eli osxspell-projekti, eriytettiin Voikko-projektin SVN:stä SourceForgesta ja löytyy nyt omasta Git-versiohallinnastaan. Tämä helpottaa palikan avoimen lähdekoodin yhteisöllistä kehitystä, vaikka eipä viime aikoina muita kehittäjiä ole ollut. Muutos tekee lisäksi eron varsinaisen oikoluvun kehittämisen ja sitä hyödyntävien sovellusten välille.

Seuraavana VoikkoSpellServicen kehityslistassa on muun muassa kieliopin tarkastamisen toteuttaminen ja puoliksi kirjoitettujen sanojen ehdottaminenkin olisi oikolukurajapinnan kautta mahdollista. Myös 64-bittisen version toimintaa pitäisi testata, sillä siinä ilmeni ongelmia Mail.appin kanssa. Ja lisää tekemistä tulee, kunhan Voikko kehittyy tukemaan useampaa oikolukumoottoria ja kieliä. Uusille ominaisuuksille ei varsinaisesti ole aikataulua, vaan se on kunhan ehtii.

VoikkoSpellService tuo Suomen kielen oikoluvun OS X:lle

Oikoluku on kiva asia ja vielä kivempaa on, jos se olisi aina saatavilla ja kaikissa ohjelmissa, joissa tekstin kanssa joudutaan työskentelemään. Englannin ja useiden muiden ulkomaisten kielien osalta asia näin usein onkin, mutta Suomen kielen oikoluvun kanssa on usein hieman hankalampaa. Onneksi meillä kuitenkin on Voikko, joka tarjoaa sitä hyödyntävien mozvoikko, ooovoikko ja osxspell-palikoiden avulla oikolukua myös suomelle.

OS X:lle Suomen kielisen oikoluvun saattaminen useisiin ohjelmiin on teoriassa yksinkertaista osxpell-projektin tarjoaman VoikkoSpellService-järjestelmäkomponentin kautta, mutta käytännössä asia on hieman monimutkainen. Virallisin versio komponentista on Lauri Nurmen OS X 10.4:lle paketoima PPC-alustalle käännettyjä kirjastoja käyttävä versio, joka saamieni tietojen mukaan toimii OS X 10.6:ssa hieman heikosti Rosettan kautta. Joitain epävirallisia versiotakin olen nähnyt, mutta en niihin linkkiä enää löytänyt. Suoraan sanottua VoikkoSpellServicellä ei ole tukea OS X 10.6 Snow Leopardissa.

Oli siis aika tehdä tuolle asialle jotain, joten pienen tutkailun, Nurmen pätsien lisäämisen, Applen ohjeiden seuraamisen, Soikko-palikan määritteiden vilkuilun ja kiroilun jälkeen, sain VoikkoSpellServicen toimimaan OS X 10.6 Snow Leopardilla. Muutoksina koodin osalta korjasin pari varoitusta antavaa kohtaa ja puuttuvan parametrin. Käänsin komponentin käyttäen 32-bittisiä Voikon ja Suomi-malagan -kirjastoja, joten sen pitäisi toimia myös 10.5 Leopardilla. Erona mozvoikon libvoikon kääntöön, täytyi libvoikolle antaa käännösvaiheessa ”-Wl,-install_name,@executable_path/libvoikko.1.dylib” LDFLAGS-määritteet, jotta dynaaminen kirjasto löydetään.

VoikkoSpellService-komponentti DMG-pakettiin kiedottuna (VoikkoSpellService_2010-07.dmg) ja lisätietoa löytyy Voikolle tekemältäni sivulta omana kohtanaan.

Palikka on kokeellinen versio ja kokeilu omalla vastuulla, kuten aina. Näytti toimivan ainakin Snow Leopardilla, kunhan OS X:n järjestelmänoikolukuun sai lisättyä vaihtoehdoksi suomen. Kyseisen vaihtoehdon saamisessa oli hieman ongelmia, sillä välillä kieli löytyi ja välillä ei. Consolekaan ei tuohon auttanut, mutta kun kielivaihtoehto löytyi, eli VoikkoSpellService oli rekisteröity palveluksi, pystyi Consolesta toteamaan muun muassa palikan kaatumisen.

VoikkoSpellServicen avulla Voikon tarjoama oikoluku toimii ainakin TextEditissä, Safarissa, TextWranglerissa ja TexShopissa. Tosin näköjään osa ohjelmista, kuten TextWrangler, eivät osaa ehdottaa korjausta, mutta muuten kyllä käskettäessä oikolukevat. Chromella näytti olevan jotain hieman isompia ongelmia oikoluvun kanssa OS X:llä. Kieliopintarkistus ei toimi, sillä sen mahdollistavan metodin kanssa käännettynä ja Check grammar -vaihtoehto ruksitettuna Console täyttyy ”[NSCFString rangeValue]: unrecognized selector sent to instance 0x1404e0” ja ”[NSKeyedArchiver dealloc]: warning: NSKeyedArchiver deallocated without having had -finishEncoding called on it.” -virheistä, jolloin ei oikolukukaan toimi.

Olisi pitänyt selkeästi perehtyä osxspelliin jo aikaisemmin, sillä oikoluku TexShopissa (vaikka käytinkin Texmakeria) olisi ollut kyllä helpottava lisä lopputyötä tehdessä. No, kävi se oikolukeminen manuaalisestikin ja copy-pasten avulla kierrättäen OO.orgin kautta.

Lisäys:
VoikkoSpellServicen näkymiseen oikoluvun vaihtoehdoissa sen jälkeen, ku se on sieltä hävinnyt, auttaa Library/Cache -hakemistossa olevan ”com.apple.nsservicescache.plist” -tiedoston poistaminen. Muita kikkoja on käyttää ohjelmallisesti NSUpdateDynamicServices() -metodia, käynnistää Applen pasteboard server uudestaan (/System/Library/CoreServices/pbs) ja uudestaanrekisteröidä servicet komennolla

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -all local,system, user

.