Как создать собственный словарь для OpenOffice.org/LibreOffice

Материал из Forumooo wiki

(Различия между версиями)
Перейти к: навигация, поиск
 
(9 промежуточных версий не показаны.)
Строка 6: Строка 6:
* Hunspell - система проверки орфографии  http://downloads.sourceforge.net/hunspell/
* Hunspell - система проверки орфографии  http://downloads.sourceforge.net/hunspell/
* Файл со словами, из которых необходимо создать словарь. В качестве основы это может быть, например, пользовательский словарь OpenOffice.org. В нашем примере этот файл будет называться input.txt
* Файл со словами, из которых необходимо создать словарь. В качестве основы это может быть, например, пользовательский словарь OpenOffice.org. В нашем примере этот файл будет называться input.txt
 +
{{Note| Пользовательский словарь {{Office}} находится в профиле пользователя, каталог wordbook, файл Standard.dic.}}
* Если создание словаря планируется в Windows, то для создания словаря потребуется Cygwin http://www.cygwin.com/
* Если создание словаря планируется в Windows, то для создания словаря потребуется Cygwin http://www.cygwin.com/
 +
 +
Строка 18: Строка 21:
* Запускаем скрипт создания словаря:
* Запускаем скрипт создания словаря:
-
LC_ALL='C' sort input.txt >sorted.txt
+
 
-
LC_ALL='C' ./affixcompress sorted.txt 250
+
LC_ALL='C' sort input.txt >sorted.txt
 +
 
 +
LC_ALL='C' ./affixcompress sorted.txt 250
 +
 
* Словарь создан! Это 2 файла sorted.dic и sorted.aff
* Словарь создан! Это 2 файла sorted.dic и sorted.aff
Строка 27: Строка 33:
  FLAG num
  FLAG num
-
* теперь проверяем полученный словарь
+
* Переименуем файлы словаря:
-
  hunspell -d sorted
+
my_ru-dict.dic
 +
my_ru-dict.aff
 +
 
 +
* Теперь проверяем полученный словарь
 +
 
 +
  hunspell -d my_ru-dict
и печатаем слова, которые должны быть в словаре. Если Hunspell их распознал, то словарь работает!
и печатаем слова, которые должны быть в словаре. Если Hunspell их распознал, то словарь работает!
-
* Приступим к упаковке словаря в расширение. Переименуем файлы словаря:
 
 +
 +
* Дополнительно можно настроить алгоритм работы механизма исправлений неизвестных слов  словаря (команды добавить в файл *.aff)
 +
 +
* Не предлагать варианты с пробелами:
 +
 +
NOSPLITSUGS
 +
 +
* Ограничить число вариантов исправлений, генерируемых встроенным алгоритмом
 +
 +
MAXNGRAMSUGS 4
 +
 +
 +
* Настроить порядок букв для алгоритма подстановки
 +
 +
TRY абвгдеёжз.....эюя'
 +
 +
необходимо их расположить в последовательности от наиболее часто употребляемой к менее употребляемой
 +
 +
 +
* Приступим к упаковке словаря в расширение.
 +
Расширение представляет собой zip - архив.
 +
Создадим архив my_ru-dict.zip c нашими файлами:
  my_ru-dict.dic
  my_ru-dict.dic
  my_ru-dict.aff
  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>
 +
 +
{{Warning| Обратите внимание! Должна быть уникальной строка
 +
<nowiki> <node oor:name="HunSpellDic_ru_RU-my_ru-dict" oor:op="fuse"></nowiki>
 +
имя HunSpellDic_ru_RU-my_ru-dict не должно повторяться в других словарях }}
 +
 +
В корневом каталоге архива создаём и ещё файл
 +
 +
  description.xml
 +
 +
Это описание для менеджера расширений, где указывается особенности установки словаря в {{Office}}.
 +
 +
Содержимое файла:
 +
 +
 +
<?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>
 +
 +
 +
{{Warning| Обратите внимание! Должна быть уникальной строка
 +
<nowiki> <identifier value="org.openoffice.ro.dictionaries.ru-my_ru-dict" /></nowiki>
 +
имя ru-my_ru-dict не должно повторяться в других словарях }}
 +
 +
 +
* Переименовываем файл архива
 +
my_ru-dict.oxt
 +
 +
* Словарь создан! Устанавливаем его в  {{Office}} через менеджер расширений.
 +
 +
* Для того, чтоб словарь стал доступен, необходимо закрыть все экземпляры {{Office}}, и заново открыть 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 - на русском языке

Текущая версия на 16:28, 3 октября 2016


Как создать собственный словарь для OpenOffice.org/LibreOffice

Для создания словаря понадобится:

Note.png Пользовательский словарь LibreOffice/OpenOffice находится в профиле пользователя, каталог wordbook, файл Standard.dic.



Перевод документации по Hunspell доступен по адресу: http://mozilla-russia.org/projects/dictionary/hunspell.html


Приступим к сборке.


LC_ALL='C' sort input.txt >sorted.txt

LC_ALL='C' ./affixcompress sorted.txt 250


Теперь надо в начале аффикс-файла указать служебную информацию о кодировке и типе аффикс-файла

SET UTF-8
FLAG num
my_ru-dict.dic
my_ru-dict.aff
hunspell -d my_ru-dict

и печатаем слова, которые должны быть в словаре. Если Hunspell их распознал, то словарь работает!


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>
Warning.png Обратите внимание! Должна быть уникальной строка

<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>


Warning.png Обратите внимание! Должна быть уникальной строка

<identifier value="org.openoffice.ro.dictionaries.ru-my_ru-dict" /> имя ru-my_ru-dict не должно повторяться в других словарях


my_ru-dict.oxt

Для этого в файл 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 - на русском языке

Личные инструменты
Пространства имён
Варианты
Действия
Компоненты
Общие вопросы
Совместимость
Навигация
Инструменты