Установка словарей для проверки орфографии в NetBeans

    Всем привет!

    Чего хотим


    Хотим чтобы работала проверка орфографии в NetBeans для русского языка.

    Как сделать


    КО: Чтобы работала проверка орфографии для русского языка, надо установить словарь для русского языка!

    Поскольку найти словарь сходу не удалось, пришлось сделать его самому. Под катом рассказ как сделать свой словарь для NetBeans. Для тех кто не хочет морочиться, в конце статьи приведены ссылки на готовые словари.

    UPDATE
    В комментариях подтвердили работоспособность словарей в IntelliJ IDEA и Eclipse IDE.



    Все действия выполнялись под Ubuntu 11.04 с установленным aspell. Словари проверялись в NetBeans 7.1beta, но должны успешно работать в версиях 6.9 и 7.0.

    Скачиваем и устанавливаем словарь русского языка

    Скачиваем и устанавливаем словарь русского языка для aspell. Если нужен словарь для другого языка — ищем здесь ftp.gnu.org/gnu/aspell/dict/0index.html
    mkdir -p /tmp/nbdict && cd /tmp/nbdict
    wget ftp://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2
    tar -jxf aspell6-ru-0.99f7-1.tar.bz2
    cd aspell6-ru-0.99f7-1/
    ./configure
    # Здесь мы должны увидеть что-то типа этого:
    # Finding Dictionary file location ... /usr/lib/aspell
    # Finding Data file location ... /usr/lib/aspell
    make
    sudo make install
    


    Генерируем словарь для NetBeans

    Словарь для NetBeans — это просто список слов. Нам нужно его сгенерировать из словаря aspell.
    Чтобы увидеть установленные словари aspell, необходимо выполнить команду:
    aspell dump dicts
    

    В этом списке мы должны увидеть словари для русского языка:
    ru-ye — словарь со словами через «е», например содержит «елка»
    ru-yo — словарь со словами через «ё», например содержит «ёлка»
    ru-yeyo — словарь со словами через «е» и «ё», содержит «елка» и «ёлка»
    ru — содержит то же, что и ru-ye

    Нам необходимо сгенерировать файл словаря русских слов со всеми формами окончаний слов (суффиксов слов), по одному слову на каждой строке:
    cd ..
    aspell -l ru-yo dump master | aspell -l ru expand | tr ' ' '\n' > aspell_dump-ru-yo.txt
    # aspell -l ru-yo dump master - получить список слов словаря ru-yo
    # aspell -l ru expand - развернуть окончания (суффиксы) слов по правилам русского языка
    # tr ' ' '\n' - разбить вывод предыдущей команды на строки
    

    Теперь у нас есть файл aspell_dump-ru-yo.txt содержащий все слова из словаря с различными окончаниями.

    Че ты мне английский выпилил? Давай делай обратно, для!

    К сожалению поддержка в NetBeans нескольких словарей одновременно отсутствует. Если вы пишете в NetBeans стихи или мемуары, то может вам хватит только проверки русского языка. Если еще иногда и программируете — вам также нужна проверка английского. Для этого создадим объединенный словарь слов русского и английского языка:
    # Генерируем словарь для английского
    aspell -l en_US dump master | aspell -l en expand | tr ' ' '\n' > aspell_dump-en_US.txt
    
    # Объединяем словари
    cat aspell_dump-en_US.txt aspell_dump-ru-yo.txt > aspell_dump-en_US+ru-yo.txt
    


    Устанавливаем словарь

    Запускаем NetBeans, открываем вкладку Tools -> Options -> Miscellaneous ->Spellchecker.
    На вкладке нажимаем Add… и выбираем наш файл aspell_dump-en_US+ru-yo.txt. Устанавливаем кодировку словаря в UTF-8 и вписываем локаль «ru».
    Нажимаем Add — словарь должен появиться в списке. Для проверки орфографии русского языка выбираем локаль по-умолчанию «ru». Словарь будет использоваться только когда локаль словаря точно совпадает с локалью по-умолчанию.
    Закрываем диалог и переходим в редактор. Окрываем любой файл, пишем слово по русски и сохраняем. NetBeans запустит процесс проверки орфографии, который в первый раз будет генерировать индекс из нашего словаря. Поэтому не торопимся и ждем.
    Индексы словарей хранятся в папке ~/.netbeans/7.1beta/var/cache/dict/. Для нашего словаря должен появится файл dictionary_ru.trie1.
    При удалении словаря из NetBeans индексный файл не удаляется, нужно удалить его вручную.

    Спасибо за внимание!

    Ссылки

    Для тех кому лень все проделывать самостоятельно, я подготовил два словаря:

    Объединенный словарь английского и русского языков с написанием слов через «ё»
    Объединенный словарь английского и русского языков с написанием слов через «е»

    UPD: По просьбам трудящихся
    Словарь английского языка
    Словарь русского языка с написанием слов через «ё»
    Словарь русского языка с написанием слов через «е»
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 23

    • UFO just landed and posted this here
        –1
        Хочу знать зачем Вы это сделали?.. :))

        Шутк. Полезно, наверное, но я действительно понятия не имею зачем.
          +1
          Чтобы отлавливать опечатки в комментариях и текстах
            0
            Могу показаться занудой, но это просто мне привычнее:
            — комментарии на английском;
            — русский текст стараюсь выносить в lang-файлы.
              +4
              Сайты только на английском делаете? В «lang»-файлах орфографию проверять не надо?

              Еще пара соображений в декларативной форме, если захотите подискутировать — пожалуйста.

              Комментарии в коде должны быть на основном языке команды.
              Если проект пишут пять человек для российского заказчика и все говорят по-русски с рождения, то потуги выразить свою мысль в комментариях на ломаном английском бывают очень забавными. Тоже касается сообщений в VCS, в трекере и т.д.

              Строковые константы надо выносить в языковые файлы, только если предполагается что приложение будет переводиться на другой язык, иначе это пустая трата времени.

              При переводе, дефолтный (основной) файл перевода должен быть на языке основной массы пользователей (для глобального приложения — на английском), иначе непереведенные сообщения будут непонятны большинству.

              Еще часто можно увидеть такую картину — в приложении присутствуют файлы перевода messages.properties, messages.ru_RU.properties, messages.en_US.properties, при этом messages.properties и messages.en_US.properties содержат одно и тоже (или что еще хуже, подразумевается что содержат одно и тоже, но на самом деле нет). При этом основной язык пользователей — русский.
              Здесь один файл лишний и это файл messages.ru_RU.properties (почему — см. предыдущий пункт).

                0
                Приятно видеть развернутый ответ. Дискуссию не буду разводить.
                Я написал, что это для меня привычнее, как и привычнее не использовать словари, а просто стараюсь писать правильно. :)
          +1
          Было бы здорово объединить словари с е и ё.
          Спасибо, попробую использовать в eclipse.
            0
            См. UPDATE. Я выложил словари отдельно по языками/вариациям. Можете сами объединить по вкусу. Отпишитесь пожалуйста, если у вас заработает в эклипс.
              0
              В Eclipse заработал прекрасно. Я предлагаю сделать словарь: eng+ru_е+ru_ё. Стараюсь писать с ё, но иногда раздражает, если слово фактически написано правильно, но через е.
                0
                Объединение словарей позволит писать как «елка», так и «ёлка» — т.е. фактически проверка написания не будет работать и вы можете получить бардак с «е» и «ё» в текстах. Поэтому я не стал так делать. Вы можете саму объединить словари, если хотите (команда cat или copy /b под виндой).
                  0
                  Почему елка и ёлка — это бардак? Просто получится менее строгий словарь. С точки зрения словаря «е» — «ёлка» это ошибка, по-моему это слишком строго. Почему я прошу — потому что помимо слияния, по-хорошему надо ещё удалить дубликаты.
                    0
                    sort aspell_dump-en_US+ru-yo.txt | uniq -u > aspell_dump-en_US+ru-yo_new.txt
            0
            Спасибо. Всё работает. Заодно почистил систему от лишних локалей
              0
              Спасибо вам, а то как раз собирался заниматься этим.
                +1
                А можно еще ссылки только на словарь русского языка? В IntelliJ IDEA поддерживаются несколько словарей одновременно:) Тогда ваша статья станет универсальнее.
                  0
                  См. UPDATE. Отпишитесь пожалуйста, если у вас сработает в идее.
                    0
                    Да, все отлично. Только переименовал из .txt в .dic, добавил в IDEA, перезапустил и всё ок. Спасибо за проделанную работу:)

                    P.S.: предполагаю, что будет работать во всем семействе продуктов от JetBrains(WebStrom, PHPStorm, PyCharm и т.д.)
                  0
                  А что это делает в блоге Java? Каким образом инфа в топике относится к этому языку программирования?
                    0
                    Предложите более подходящий топик. Статьи о NetBeans попадают или в java или php.
                      0
                      Да хоть тот же «Разработка». Хз… Где обычно про IDE пишут?
                    +2
                    Я обычно отключаю «spell check», а то IDE всё подряд подчёркивать начинает — отвлекает от кодинга.
                      +3
                      Чтобы этого избежать и написан топик :)
                      0
                      Огромное спасибо за проделанную работу. А то редактируешь темплейт, а все русские слова подчеркнуты. А теперь — красота.

                      Only users with full accounts can post comments. Log in, please.