Spelling
Spell checkers
Ispell najstarsi spell checker. Uz sa dlhsiu dobu nevyvija, posledna verzia programu ispell-3.4.00 (released 2015-02), velky pocet dictionaries, ktore boli dlhodobo udrziavane, aktualizovane. Ispell program a prislusne slovniky sa v Fedore uz dlho nenachadza. V podstate jediny zmysel pouzivania Ispell bola podpora ruskeho (Lebedev) slovnika, ktory sa vyvijal prave pre tento spell checker. Subory so samotnymi slovnikmi slovak.aff a slovak.hash sa v Fedora default nachadzali v /usr/local/lib/ (zavisi od nastavenych ciest v ispell
programe).
Update Po dlhsom case vysla novsia verzia. Aktualne je posledna verzia programu ispell-3.4.06 (released 2023-10).
Aspell nahradza Ispell ako program alebo ako kniznica, najprv bol vyvijany ako Pspell. Od verzie 0.6 ma podporu unicode + affix compression. Pouziva "Ispell compatibility script for Aspell", ten sa vztahuje na samotny program, nie vsak na dictionaries, ktore sa znacne lisia od Ispell-ovskych, a ktore sa v Aspell nedaju pouzit. Transformacia Ispell na Aspell (ako aj na Hunspell) dictionaries znacne komplikovana, problem s affix suborom atd. V repozitaroch Fedory sa nachadza program aspell a jazykove slovniky, bohuzial jednotlive dictionaries nepatria prave k najaktualnejsim. V pripade potreby preto instalujeme len samotny program aspell
bez konkretnych slovnikov. Dictionaries subory sk.rws a sk_affix.dat sa nachadzaju v /usr/{lib,lib64}/aspell-0.60/.
MySpell kombinuje svojich dvoch predchodcov. Bol vyvinuty pre OpenOffice.org, pouzivala ho aj Mozilla. Od verzie OpenOffice.org 2.0.2 (rok 2006), resp. aj Firefox 3 sa uz nepouziva a bol nahradeny Hunspell-om.
Hunspell najnovsi (dufajme, ze aj posledny) spell checker. Pouziva sa aktualne v LibreOffice, Mozilla, Chromium (upravene slovniky) atd. Je zalozeny na MySpell (kompatibilne dictionaries), pridava podporu Unicode a rozne nove vlastnosti. Hunspell dictionaries si v podstate kazdy projekt vytvara vlastne, pricom jazykove variacie vychadzaju z lokalnych, narodnych projektov. Hunspell spell checker je uz v Fedore default nainstalovany (program hunspell
vratane anglickeho slovnika). Aktualnost jednotlivych dictionaries v repozitaroch Fedory nie je prilis idealna, preto potrebne slovniky radsej nainstalovat manualne (z ineho zdroja). Subory so slovnikmi sk_SK.aff a sk_SK.dic sa nachadzaju v directory /usr/share/hunspell/ (pred verziou Fedora 36 (released 2022-03) sa subory nachadzali v /usr/share/myspell/).
Проверка орфографии Hunspell by Mozilla Россия (released 2007-03-03).
Dictionaries
Fedora uz davnejsie zjednotila (nastastie) pouzivanie dictionaries pre hunspell
, resp. pre vsetky programy, ktore pouzivaju Hunspell ako spell checker. To znamena, ze napr. Emacs, Firefox alebo LibreOffice nainstalovane priamo z Fedora repository, budu pouzivat slovniky z /usr/share/hunspell/ directory. Bohuzial samotne slovniky (distribuovane cez Fedora repository) su vacsinou zastarale, tazke ich bude treba nahradit aktualnymi verziami.
- https://addons.mozilla.org/firefox/language-tools/
Dictionaries files timestamps su zhodne s Firefox dictionaries released date, t.j. nemaju vypovednu hodnotu o skutocnom datume poslednej zmeny, upravy v samotnom slovniku. Najnovsie Firefox verzie slovnikov maju "nezmyselny" (unzip 2114-07-29) timestamp. - https://wiki.documentfoundation.org/Language/Support
- https://github.com/LibreOffice/dictionaries (https://extensions.libreoffice.org/)
NOTE Firefox/LibreOffice distribuuje dictionaries cez doplnky. Treba rozlisovat update takeho doplnku od update samotneho dictionaries. Castejsi je len update doplnku (metadata resp. re-sign, ale slovnik ostava povodny) ako samotneho slovnika v danom doplnku, t.j. nove prebalenie doplnku s povodnym obsahom.
Slovak
Projekt sk-spell pravidelne aktualizovany, podpora vsetkych spell checker-ov (a nie len slovnikov), najme vsak najnovsi Hunspell. FTP server neobsahuje vsetky subory (vratane najnovsej verzie slovnikov), ktore sa v ramci projektu vytvaraju, aktualizuju. Okrem bezneho sk_SK slovnika je k dispozicii aj ASCII verzia sk_SK-ascii (ta je vsak uz dlhsie bez aktualizacii). Od maja 2020 je tento projekt nakoniec aj na GitHub-e.
- hunspell-sk (GitHub), resp. hunspell-sk_ascii (GitHub) repositories projektu sk-spell.
- Fedora uz dlhodobo vychadza zo znacene zastaraleho suboru hunspell-sk-20110228.zip, v ktorom sa nachadza verzia: 2.03-1, 2009-12-19.
- Firefox, resp. Firefox ASCII (bez diakritiky) extensions su udrziavane priamo autorom zo sk-spell projektu, aktualne (2023-03) verzia: 2.4.7 (2022-12-20, ~ 160.000 words).
- LibreOffice (GitHub) dictionaries obsahuju identicke slovniky ako hunspell-sk (GitHb), resp. je snaha o aktualizaciu.
Summarum pouzivat slovnik priamo z hunspell-sk (GitHub).
Russian
Словарь русского языка для ispell (автор Александр Лебедев) на основе которого сделанные практически все остальные словари. Включена полноценная поддержка буквы ё
(другие словари просто заменяют букву ё
на букву е
). Самый последний (released 2008-08) словарь rus-ispell-0.99g5.tar.gz использует ~ 139.000 базовых слов или ~ 1.367.000 полное число образуемых из них словоформ (небольшая розница в числе в зависимости от буквы ё/е), KOI8-R кодировка.
- Firefox Russian spellchecking dictionary by Alexander Slovesnik converted from Lebedev. Latest versions:
- Version 0.4.5.2resigned1, Released Apr 25, 2024 (ru.dic: 146433)
- Version 0.4.5.1webext, Released Nov 28, 2018 (ru.dic: 146433)
- Version 0.4.5, Released Jun 29, 2013 and Version 0.4.4.1, Released Jun 2, 2012 ⇐ from Wayback Machine
- Version 0.4.4, Released Sep 11, 2010 (ru.dic: 146269) ⇐ from Wayback Machine and Fedora source repo
- Последние версии содержат идентичный словарь (розница только в Firefox metadata or re-signed). Нет возможности узнать "откуда (Mozilla Россия) и какая версия" самого словаря. Fedora, на текущий момент (2025), использует это расширение (Version 0.4.4) как source для создания hunspell-ru пакета.
- Firefox Russian Hunspell dictionary by Александр Клюквин based on Lebedev. Latest versions:
- Version 1.0.20131101.3resigned1, Released Apr 25, 2024 (ru_RU.dic: 173975)
- Version 1.0.20131101.2webext, Released Nov 28, 2018 (ru_RU.dic: 173975)
- Последние версии содержат идентичный словарь (розница только в Firefox metadata or re-signed). Последняя версия самого словаря от 2013-11-01. Homepage hunspell-ru (archive), скачать текущий релиз можно по ссылке ru_RU_UTF-8_20131101.zip (ru_RU.dic: 173975, идентичный как в Firefox расширение).
- Firefox Словарь орфографии Вики by Кек состоит из словоформ с сайта Викисловаря. Latest versions:
- Version 1.109, Released Apr 23, 2025 (ru_RU.dic: 530695)
- Version 1.108, Released Mar 23, 2025 (ru_RU.dic: 530150)
- Относительно новый словарь с поддержкой буквы
ё
. Это единственный словарь русского языка, который на данный момент (2025) действительно обновляется (приблизительно 1-2x в месяц).
- ALT Linux ispell-ru-lebedev (репозиторий Sisyphus) проекта ALT Linux Team (русскоговорящая команда разработчиков) converted from Lebedev. Latest version:
- hunspell-ru-lebedev-0.99g5-alt15.noarch.rpm, released 2020-11-11 (ru_RU-lebedev.dic: 146340)
- Словарь создан прямо (конвертирован) из оригинального
rus-ispell-0.99g5.tar.gz
словаря Лебедева с добавлением нескольких сотен слов.
- LibreOffice (GitHub) converted from Lebedev. Latest version:
- committed 2021-07-27 (ru_RU.dic: 146269)
- Из истории версии видно, что изменения только косметическое. От изначального добавления словаря (committed 2011-01-29) не было добавлено ни одного нового слова.
- LibreOffice Extensions Новый пакет словарей русского языка (или только словарь)основано на работе группы AOT.ru.
- Пока не совсем понятно на сколько надежно с ним можно работать, однако ALT Linux создал пакет hunspell-ru-aot.
Summarum Fedora и LibreOffice используют идентичные словари Лебедева, без каких либо обновлений. Используем либо словарь Firefox Russian Hunspell dictionary by Александр Клюквин, но сам словарь уже не обновляется (last released 2013-11-01). Либо используем Firefox Russian spellchecking dictionary by Alexander Slovesnik идентичный как словари в Fedora и LibreOffice, но добавляет немного новых слов (146269 против 146433). Словарь тоже уже больше не обновляется (last released 2013-06-29).
Пробуем Firefox Словарь орфографии Вики by Кек.
English
Zakladom pre vsetky anglicke slovniky je databaza SCOWL (and friends), ktora sa pravidelne aktualizuje (see on GitHub). Moznost stiahnut, okrem ineho, dictionaries priamo pre Aspell a Hunspell spell checkers. Tieto slovniky mozu obsahovat aj rozne doplnkove, upravene slovniky, resp. mozu byt vytvorene s roznymi opciami. Dalej budeme pouzivat len slovnik en_US (maintains by Kevin Atkinson).
- SCOWL aktualna verzia 2020.12.07. Slovnik existuje aj v rozsirenej (large) verzii, ktora vsak vsak nemusi vzdy korektne pracovat. Vacsina programov pracuju prevazne s normalnou (non-large) verziou.
- Fedora pouziva znacne zastaralu verziu 2014.08.11 s roznymi patch-es. Subor en_US.aff zacina riadkom
SET ISO8859-1
(ASCII), co moze sposobovat problemy, staci zamenit naSET UTF-8
. Vo Fedore 38 (2023-04) po dlhej dobe upgrade na 2020.12.07. - Firefox extension zalozene na predoslej SCOWL verzii 2019.10.06, ktory je doplneny o slova s diakritikou, napr. café (custom SCOWL) a nejakymi dalsimi Mozilla specifickymi vyrazmi.
- LibreOffice dictionaries pouzivaju aktualnu SCOWL verziu 2020.12.07 bez akychkolvek uprav. Slovniky su udrziavane priamo komunitou LibreOffice (GitHub).
Summarum pouzivat original SCOWL slovnik, pripadne este rozsirit o rozne dalsie specialized spell check dictionaries.
Sharing personal dictionary
Pre zdielanie personalneho slovnika medzi roznymi programami budem pozivat textovy subor $HOME/.musinsky.dic, ktory obsahuje slova v roznych jazykoch (slovencina, rustina a anglictina) v UTF8 kodovani.
$ wget -nc https://raw.githubusercontent.com/musinsky/config/master/dictionary/musinsky.dic -O $HOME/.musinsky.dic
Emacs uklada (by default) personalne slovniky (v zavislosti od jazyka) do suborov $HOME/.hunspell_sk_SK, $HOME/.hunspell_ru_RU alebo $HOME/.hunspell_en_US. Konfiguracia Emacs umoznuje nastavit konkretny subor ako personalny slovnik (spolocny pre vsetky jazyky). Nove slova sa jednoducho pridavaju na koniec slovnika, suboru.
(setq ispell-personal-dictionary "~/.musinsky.dic") ; don't use $HOME
LibreOffice ak sa personalny slovnik, subor s nazvom standard.dic, nachadza v $HOME/.config/libreoffice/[majorVersion]/user/wordbook/ LibreOffice ho automaticky aktivuje. Inak je potrebne konkretny slovnik pridat/aktivovat cez Tools - Options → Language Settings - Writing Aids - User-defined dictionaries (moznost pridavat rozne slovniky: tematicke, synonymicke, jazykove). Personal dictionary subor musi mat koncovku .dic a subor musi zacinat hlavickou
OOoUserDict1 lang: <none> type: positive ---
lang: <none>
specifikuje moznost pouzivat spolocny slovnik pre vsetky jazyky. Nove pridane slova v slovniku sa automaticky usporiadavaju podla abecedy (ekvivalent LC_COLLATE=C sort -u standard.dic
). Zdielanie personalneho slovnika, resp. suboru $HOME/.musinsky.dic
$ ln -s $HOME/.musinsky.dic $(find $HOME/.config/libreoffice/*/user/wordbook -type d)/standard.dic
Firefox pouziva personalny slovnik, subor $HOME/.mozilla/firefox/[uniqueID.default-release]/persdict.dat. Nazov suboru nie je mozne menit a slovnik je spolocny pre vsetky jazyky. Pri pridani noveho slova do slovnika sa meni "nejako" usporiadanie slov. Ak by sa tento slovnik (subor) zdielal s LibreOffice, potom by sa preusporiadali aj prve riadky (hlavicka) z tohoto slovnika, a teda pre LibreOffice by bol tento slovnik uz dalej nepouzitelny. Prijatelne riesenie (jedna z moznosti) je cas od casu vytvorit novy personalny slovnik pre Firefox spojenim jeho povodneho slovnika a spolocneho slovnika pre Emacs a LibreOffice
$ { tail -n +5 $HOME/.musinsky.dic; cat $HOME/.mozilla/firefox/*.default-release/persdict.dat; } | LC_COLLATE=C sort -u > persdict_merge.dat # sorting is not really necessary $ cp persdict_merge.dat $HOME/.mozilla/firefox/*.default-release/persdict.dat $ diff $HOME/.musinsky.dic persdict_merge.dat
Google Chrome
- https://www.chromium.org/developers/how-tos/editing-the-spell-checking-dictionaries
- https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries/+/refs/heads/master/README.chromium
Google Chrome, resp. Chromium sice pouziva Hunspell spell checker avsak samotne slovniky (koncovka .bdic) pouzivaju vlastny optimalizovany format. Subor *.bdic (binarny format) s optimalizovanym formatom je vytvoreny z klasickych hunspell slovnikov *.aff, *.dic (a navyse *.dic_delta, kde mozu byt ulozene dalsie, nove slova) pouzitim vlastneho programu convert_dict
, ktory je sucastou Chromium browser project.
Google Chrome si po vybere uzivatelom konkretneho jazyka vzdy sam stiahne konkretny, potrebny slovnik. Google Git hunspell_dictionaries repository obsahuje vsetky dictionaries. Napr. pre slovencinu si aktualne (2020-06) stiahne subor sk-SK-3-0.bdic. Google Git powered by Gitiles neumoznuje priamo stiahnut raw subor, takze manualne stiahnut napr. samotny subor sk-SK-3-0.bdic len nejak takto
$ curl 'https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git/+/refs/heads/master/sk-SK-3-0.bdic?format=TEXT' | base64 -d > sk-SK-3-0.bdic
Tento subor (so slovnikom pre slovencinu) sa nachadza $HOME/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic. Slovnik pre slovencinu je znacne historicky, verzia z roku 2005 (sk_SK.dic_delta navyse pridava cca 2000 slov). Je teda max. ziaduce zamenit slovnik (a nie len pre slovencinu) v Google Chrome aktualnou verziou. Jedina moznost je pouzit program convert_dict
.
Kompilacia programu convert_dict
zo zdrojovych kodov Chromium browser project
[musinsky@strela ~]$ pwd
/home/musinsky
[musinsky@strela ~]$ mkdir $HOME/CHROMIUM && cd $HOME/CHROMIUM
[musinsky@strela CHROMIUM]$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
Cloning into 'depot_tools'...
[musinsky@strela CHROMIUM]$ export PATH=$PATH:$HOME/CHROMIUM/depot_tools/ # do not use ~
on PATH
[musinsky@strela CHROMIUM]$ fetch --no-history --nohooks chromium
Running: gclient root
# about 5-10 minutes
[musinsky@strela CHROMIUM]$ cd src/
[musinsky@strela src]$ # ./build/install-build-deps.sh # skip (not need, building only "convert_dict")
[musinsky@strela src]$ gclient runhooks
# about 2-3 minutes
[musinsky@strela src]$ gn gen out/Default
Done. Made 13395 targets from 2363 files in 3946ms
[musinsky@strela src]$ gn ls out/Default | grep convert_dict
//chrome/tools/convert_dict:convert_dict
//chrome/tools/convert_dict:lib
[musinsky@strela src]$ autoninja -C out/Default chrome/tools/convert_dict:convert_dict # problem on F32 with default Python v3 (need Python v2)
ninja: Entering directory `out/Default'
[1305/1305] LINK ./convert_dict
# about 2-3 minutes
[musinsky@strela src]$ cd out/Default/
[musinsky@strela Default]$ ./convert_dict
Usage: convert_dict <dicfile base name>
Example:
convert_dict en-US
will read en-US.dic, en-US.dic_delta, and en-US.aff from the current directory and generate en-US.bdic
[musinsky@strela Default]$
Programom convert_dict
konvertujeme aktualne slovenske slovniky z hunspell-sk (GitHub), t.j. subory sk-SK.aff a sk-SK.dic (pripadne aj sk-SK.dic_delta s vlatnymi slovami) na Google Chrome vlastny optimalizovany format sk-SK.bdic. Google Chrome neumoznuje pridat nejaky vlastny alebo novy slovnik, takze musime zamenit povodny slovensky (ale zastaraly) Google Chrome slovnik sk-SK-3-0.bdic na tento aktualny, novo vytvoreny slovnik.
$ cp -ip sk-SK.bdic $HOME/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic cp: overwrite '/home/musinsky/.config/google-chrome/Dictionaries/sk-SK-3-0.bdic'? y
Analogicky takto mozeme vytvorit a pridat aj slovensky ASCII (bez diakritiky) slovnik. Kedze Google Chrome neumoznuje pridat vlastny slovnik, musime v samotnom prehliadaci pridat nejaky "iny jazyk" napr. cestinu, a potom, ked si prehliadac stiahne prislusny subor zo slovnikom cs-CZ-3-0.bdic, ho prepiseme nasim novo vytvorenym slovenskym ASCII slovnikom.
$ cp -ip sk-SK-ascii.bdic $HOME/.config/google-chrome/Dictionaries/cs-CZ-3-0.bdic cp: overwrite '/home/musinsky/.config/google-chrome/Dictionaries/cs-CZ-3-0.bdic'? y
POZOR ak by sa casom original Google Chrome slovnik automaticky obnovil (nejaky update v repository), tak sa nas subor s upravenym slovnikom prepise. Pre sk-SK slovnik len mozeme dufat, ze update bude na aktualnu verziu a teda cela tato procedura so zamenou odpadne. V pripade update cs-CZ slovnika (v skutocnosti nas sk-SK-ascii slovnik) musime potom tento subor manualne znova prepisat. Samozrejme idealna by bola moznost pridavat do Google Chrome vlastne slovniky.
Miscellaneous
aspell-ru
Najaktualnejsi build pre ruske (Lebedev) Aspell (Ispell a Hunspell) dictionaries. Zo suboru aspell-ru-lebedev-xxx.rpm extrahujem vsetky subory z /usr/{lib,lib64}/aspell/* a /usr/share/aspell/* do systemoveho /usr/{lib,lib64}/aspell-0.60/. Linkujem pouzivanie sucasne slovnika aj s "yo" resp. "ye"
$ ln -s ru-lebedev.dat ru.dat
- aspell dictionaries from Linux to Windows
export from Linux
$ aspell --lang=ru dump master ru-lebedev-io > ru-lebedev-io_utf8.txt $ iconv -f UTF8 -t KOI8-R ru-lebedev-io_utf8.txt > ru-lebedev-io_koi8-r.txt
import to Windows: install original (old) russian dictionary and copy (rewrite) ru_phonet.dat file from Linux to Windows
C:\> aspell --lang=ru create master ru_new.rws < ru-lebedev-io_koi8-r.txt
ispell-ru
Na vytvorenie ruskeho (Lebedev) slovnika je potrebna len utilita buildhash
, ktora je sucastou ispell balika. Pre jej kompilaciu je potrebny yacc
parser generator (dnf install byacc
)
$ wget https://www.cs.hmc.edu/~geoff/tars/ispell-3.4.06.tar.gz $ tar -xzvf ispell-3.4.06.tar.gz $ cd ispell-3.4.06/ # GCC 15 (released 2025-04) for C compilation changes the default from-std=gnu17
to-std=gnu23
$ make buildhash # error, but generated 'local.h' file $ sed -i '/^#endif \/\* LOCAL_H_INCLUDED \*\//i #define CFLAGS\t"-std=gnu17"\n' local.h $ make buildhash
Vytvorime aktualny rusky (Lebedev) slovnik (zo source files) s podporou ruskeho "yo", pripadne oddelene slovniky s "yo" resp. "ye"
$ wget ftp://scon155.phys.msu.su/pub/russian/ispell/rus-ispell-0.99g5.tar.gz $ mkdir rus-ispell $ tar -xzvf rus-ispell-0.99g5.tar.gz -C rus-ispell $ cd rus-ispell $ sed -i 's/buildhash/..\/buildhash/g' Makefile # use compiled ../buildhash (from parrent dir) $ make YO=1
How convert created rus-ispell
dictionaries to rus-hunspell
dictionaries see ispell-ru-lebedev.spec file. Needed ispell
program and shell script i2myspell
(Ispell to MySpell affix table and dictionary converter, latest ver 1.4, released 2002-03) from MySpell utils or from ALT Linux repo.
cstocs
Perl program cstocs sa nachadza v CPAN module Cstools, ale vo Fedore tento modul nie je, takze potrebna kompilacia, resp. instalacia
$ dnf install perl-ExtUtils-MakeMaker
$ wget https://cpan.metacpan.org/authors/id/J/JA/JANPAZ/Cstools-3.42.tar.gz
$ tar -xzvf Cstools-3.42.tar.gz
$ cd Cstools-3.42/
# from debian cstocs package get patch, changes to 3.42-3 are not really necessary
$ wget https://sources.debian.org/data/main/c/cstocs/1:3.42-3/debian/patches/debian-changes-1:3.42-1 -O debian-changes.patch
$ patch -p1 < debian-changes.patch
# install as admin default to /usr/local
$ perl Makefile.PL
$ make; make test
$ make install
# install as user
$ perl Makefile.PL PREFIX=$HOME/Cstools
$ make; make test
$ make install
# execute as user
$ export PATH=$PATH:$HOME/Cstools/bin
$ export PERL5LIB=$HOME/Cstools/share/perl5/ # add to @INC path, check with perl -V
Instalacia lubovolneho Perl modules z CPAN priamo vo Fedora
$ dnf install perl-CPAN $ cpan Cz::Cstocs