Как создать собственный словарь для OpenOffice.org/LibreOffice
Материал из Forumooo wiki
Как создать собственный словарь для OpenOffice.org/LibreOffice
Для создания словаря понадобится:
- Hunspell - система проверки орфографии http://downloads.sourceforge.net/hunspell/
- Файл со словами, из которых необходимо создать словарь. В качестве основы это может быть, например, пользовательский словарь OpenOffice.org. В нашем примере этот файл будет называться input.txt
![]() | Пользовательский словарь LibreOffice/OpenOffice находится в профиле пользователя, каталог wordbook, файл Standard.dic. |
- Если создание словаря планируется в Windows, то для создания словаря потребуется Cygwin http://www.cygwin.com/
Перевод документации по Hunspell доступен по адресу: http://mozilla-russia.org/projects/dictionary/hunspell.html
Приступим к сборке.
- Скачиваем hunspell-1.X.X.tar.gz c http://downloads.sourceforge.net/hunspell/.
- Распаковываем. Копируем файл affixcompress из hunspell-1.x.x\src\tools\ в рабочий каталог.
- Копируем в рабочий каталог файл input.txt со словами, из которых надо создать словарь.
- Запускаем скрипт создания словаря:
LC_ALL='C' sort input.txt >sorted.txt
LC_ALL='C' ./affixcompress sorted.txt 250
- Словарь создан! Это 2 файла sorted.dic и sorted.aff
Теперь надо в начале аффикс-файла указать служебную информацию о кодировке и типе аффикс-файла
SET UTF-8 FLAG num
- Переименуем файлы словаря:
my_ru-dict.dic my_ru-dict.aff
- Теперь проверяем полученный словарь
hunspell -d my_ru-dict
и печатаем слова, которые должны быть в словаре. Если Hunspell их распознал, то словарь работает!
- Дополнительно можно настроить алгоритм работы механизма исправлений неизвестных слов словаря (команды добавить в файл *.aff)
- Не предлагать варианты с пробелами:
NOSPLITSUGS
- Ограничить число вариантов исправлений, генерируемых встроенным алгоритмом
MAXNGRAMSUGS 4
- Настроить порядок букв для алгоритма подстановки
TRY абвгдеёжз.....эюя'
необходимо их расположить в последовательности от наиболее часто употребляемой к менее употребляемой
- Приступим к упаковке словаря в расширение.
Расширение представляет собой zip - архив. Создадим архив my_ru-dict.zip c нашими файлами:
my_ru-dict.dic my_ru-dict.aff
Создадим каталог в архиве:
META-INF
В каталоге создадим файл
manifest.xml
следующего содержания:
<manifest:manifest> <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data" manifest:full-path="Dictionaries.xcu"/> </manifest:manifest>
В корневом каталоге архива создаём ещё файл
Dictionaries.xcu
следующего содержания:
<?xml version="1.0" encoding="UTF-8"?> <oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Linguistic" oor:package="org.openoffice.Office"> <node oor:name="ServiceManager"> <node oor:name="Dictionaries"> <node oor:name="HunSpellDic_ru_RU-my_ru-dict" oor:op="fuse"> <prop oor:name="Locations" oor:type="oor:string-list"> <value>%origin%/my_ru-dict.aff %origin%/my_ru-dict.dic</value> </prop> <prop oor:name="Format" oor:type="xs:string"> <value>DICT_SPELL</value> </prop> <prop oor:name="Locales" oor:type="oor:string-list"> <value>ru-RU</value> </prop> </node> </node> </node> </oor:component-data>
![]() | Обратите внимание! Должна быть уникальной строка
<node oor:name="HunSpellDic_ru_RU-my_ru-dict" oor:op="fuse"> имя HunSpellDic_ru_RU-my_ru-dict не должно повторяться в других словарях |
В корневом каталоге архива создаём и ещё файл
description.xml
Это описание для менеджера расширений, где указывается особенности установки словаря в LibreOffice/OpenOffice.
Содержимое файла:
<?xml version="1.0" encoding="UTF-8"?> <description xmlns="http://openoffice.org/extensions/description/2006" xmlns:d="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink"> <identifier value="org.openoffice.ro.dictionaries.ru-my_ru-dict" /> <version value="0.0.1" /> <dependencies> <OpenOffice.org-minimal-version value="3.0" d:name="Russian Dictionaries for OpenOffice.org 3.0 and LibreOffice"/> </dependencies> <display-name> <name lang="ru">Словарь русского языка для OpenOffice.org 3.0 и LibreOffice</name> <name lang="en">Russian Dictionaries for OpenOffice.org 3.0 and LibreOffice</name> </display-name> </description>
![]() | Обратите внимание! Должна быть уникальной строка
<identifier value="org.openoffice.ro.dictionaries.ru-my_ru-dict" /> имя ru-my_ru-dict не должно повторяться в других словарях |
- Переименовываем файл архива
my_ru-dict.oxt
- Словарь создан! Устанавливаем его в LibreOffice/OpenOffice через менеджер расширений.
- Для того, чтоб словарь стал доступен, необходимо закрыть все экземпляры LibreOffice/OpenOffice, и заново открыть Writer.
- Словарь работает! Задача выполнена! Проверяем словарь.
- Можно добавить окно с информацией о словаре, которое будет появляться при установке
Для этого в файл description.xml необходимо добавить следующие строки:
<registration> <simple-license accept-by="admin" default-license-id="ID0" suppress-on-update="true" > <license-text xlink:href="info.txt" lang="en" license-id="ID0" /> </simple-license> </registration>
При этом в файле info.txt должен находиться выводимый текст.
- Можно добавить дополнительное описание словаря для менеджера расширений.
Для этого в файл description.xml необходимо добавить следующие строки:
<extension-description> <src xlink:href="info_en.txt" lang="en" /> <src xlink:href="info_ru.txt" lang="ru" /> </extension-description>
Необходимая информация (обычно это информация об авторах словаря и условиях его распространения) должна находиться в файлах: info_en.txt - на английском языке info_ru.txt - на русском языке