Програмування перевірки правопису: hunspell

Програмування перевірки правопису: Hunspell
У цій статті піде мова про Hunspell (https://hunspell.sourceforge.net). Скажу відразу: якщо вам достатньо восьмибітних кодувань, підтримуваних Aspell, від Hunspell особливого пуття не буде. Але тим програмістам, які взяли юнікод як даність часу, ознайомитися з Hunspell - одне задоволення. Нині кошти перевірки правопису, що надаються Hunspell, задіяні в таких програмах, як OpenOffice.org, Firefox, Opera, Google Chrome, The Bat! і TEA.

API Hunspell я буду показувати на прикладі інтерфейсу під C ++, хоча він є і для C. Різниця, по-перше, в заголовних файлах (hunspell.hxx для C ++ і hunspell.h для C) і, звичайно ж, в коді. Для Сі даються звичайні функції, а для С ++ - клас Hunspell. Все описане в цій статті, що не стосується коду, відноситься до UNIX-подібних систем. Під Windows, а зокрема Cygwin, мені впоратися з Hunspell не вдалося, навіть незважаючи на дії «з папірця» (по керівництву).

Щоб при зборці вашої програми вона «побачила» Hunspell, можна скористатися pkg-config. Для autotools це виглядає приблизно так (прописуємо в configure.in):
echo -n "checking for hunspell ..."
if pkg-config -exists hunspell - then
LIBS = "$ LIBS `pkg-config --libs hunspell`" CFLAGS = "$ CFLAGS `pkg-config --cflags hunspell`" AC _DEFINE (HUNSPELL_ SUPPORTED, 1, [HUNSPELL _ SUPPORTED]) echo "yes"
else
echo "no"
fi

Тобто, якщо бібліотека знайдена, додаємо всі потрібні для збірки параметри, а також визначаємо HUNSPELL_ SUPPORTED, щоб потім в коді можна було написати:



#ifdef HUNSPELL _ SUPPORTED // код з підтримкою Hunspell #endif

Для складальної системи qmake робимо так:
CONFIG + = link _ pkgconfig
exists ( "/ usr / include / hunspell / hunspell.hxx") {
message ( "hunspell enabled")



PKGCONFIG + = hunspell
DEFINES + = HUNSPELL _ SUPPORTED
}

Примірник класу Hunspell створюється наступним конструктором:
Hunspell (const char * affpath, const char * dpath, J const char * key = NULL) -

У загальному випадку нас цікавлять тут тільки два перших параметра:
- dpath - повний шлях до файлу словника;
- affpath - повний шлях до так званого афіксальних файлу. У ньому містяться різні вказівки, правила перевірки правопису, тобто не просто грубий список слів (як звичайний словниковий файл dpath), а набір команд, які зовні нагадують мову асемблера. У Hunspell є цілий макромова для завдань таких правил правопису. У афікс-ном файлі також міститься і назва кодування словника.

Програмування перевірки правопису: Hunspell

Раз і назавжди проясню положення з кодуваннями в Hunspell. Словники можуть мати будь-яку систему кодування. Внутрішньо Hunspell працює на основі cp1251 і UTF-16 - в різних алгоритмах по-різному (наприклад, при аналізі - в cp1251, а при «припущенні» - в UTF-16). Словник повинен мати ту ж кодування, що і основний словник для поточної мови. Працюючи з Hunspell, ви повинні надавати його движку рядки в кодуванні словника. Наприклад, якщо словник в KOI8-R, то ви повинні передавати рядки саме в KOI8-R. Кодування задається у файлі афіксів, парному основному словнику. Словник не має такого парного файлу. Дізнатися кодування словника можна за допомогою API-функції char * get_dic_encoding () (вона існує як окрема функція для «сішного» інтерфейсу і як функція-член класу Hunspell). Пам`ять для повертається нею значення звільняти не потрібно.

Тепер повернемося до параметрів конструктора. Отже, файли афіксів і словника. У тому ж Aspell ми не стикалися з цим безпосередньо. Там були «загальносистемні» словники, що встановлюються через менеджер пакетів. Aspell завідував словниками, надавав нам через API список доступних мов перевірки правопису. У Hunspell такого немає. Словники доступні для скачування з https://wiki.services.openoffice.org/wiki/Dictionaries. Ще можна використовувати Hunspell-словники, встановлені для інших програм (скажімо, OpenOffice.org або Firefox), тільки при цьому у словників будуть різні імена файлів. Наприклад, у словників з офіційного сайту Hunspell імена підпорядковані якомусь шаблоном: en_US.aff, en_US.dic, ru_RU.aff, ru_RU.dic. Не важко буде написати код, який би зі списку таких файлів вичленяв назви локалей, ставив їм у відповідність назву мови і надавав би такий чіткий список для графічного інтерфейсу, щоб користувач міг вибрати потрібний йому мову.



В даний момент Вас цікавить не програмування перевірки правопису за допомогою Hunspell, а установка і обслуговування 1С (https://mos1s.ru/uslugi-i-ceny-1c/obsluzhivanie-1s/) на ПК вашого підприємства? В такому випадку Вам слід звернутися за допомогою до досвідчених фахівців в даній сфері. На їх роль ідеально підійдуть співробітники компанії «Програміст 1С»!

ІНШЕ

Installjammer: останній штрих фото

Installjammer: останній штрих

Відео: Леонід Кравець - Останній штрих Після завершення установки InstallJammer не поспішайте запускати програму (якщо…

Sdl: збірка за допомогою make фото

Sdl: збірка за допомогою make

Відео: C. Урок 12. Компіляція і система збирання (gcc, make)Етап 4. Складання за допомогою make Наведу мінімальний…

Неясності з phonon фото

Неясності з phonon

Від труднощів збірки перейдемо до неясним місцях у використанні Phonon. Phonon підтримує ті мультимедійні формати, які…

Труднощі з phonon фото

Труднощі з phonon

Відео: TAG: новонароджені - ТРУДНОЩІ ПЕРШОГО МІСЯЦЯ! MNOGOMAMA Я не хочу повторювати документацію і приводити якісь…

» » Програмування перевірки правопису: hunspell