Adding new dictionaries to aspell: Difference between revisions

Line 22: Line 22:




<b>NOTE:</b> I think is better to change the value of the variable <b>$locale</b> at the start of the file.
<b>NOTE:</b> I think is better to change the value of the variable <b>$locale</b> at the start of the file. For instance en_US for US English and nl for Dutch.


<b>NOTE:</b> If you are using a non-english based language with special chars like tildes (spanish, for example), you have to modify aspell.php
<b>NOTE:</b> If you are using a non-english based language with special chars like tildes (spanish, for example), you have to modify aspell.php
Line 40: Line 40:
</nowiki></pre>
</nowiki></pre>


<b>NOTE:</b> After Changing the aspell language restart the spellchecker as the user zimbra with:
<b>NOTE:</b> After changing the aspell language restart the spellchecker as the user zimbra with the following command:


<pre><nowiki>
<pre><nowiki>

Revision as of 16:09, 2 October 2007

How to add a new dictionary to aspell

  • Download the dictionary from gnu.org
  • Extract it from the tar file in a work directory
  • Set Zimbra's aspell in the path with:
PATH=/opt/zimbra/aspell-0.60.3/bin:$PATH
  • Configure and install the dictionary according to the README

./configure
make
make install

  • Edit the file /opt/zimbra/httpd/htdocs/aspell.php to reference the new dictionary. For example to add the french dictionary:

$dictionary = pspell_new("en_EN");
TO
$dictionary = pspell_new("fr_FR");


NOTE: I think is better to change the value of the variable $locale at the start of the file. For instance en_US for US English and nl for Dutch.

NOTE: If you are using a non-english based language with special chars like tildes (spanish, for example), you have to modify aspell.php

This file is located at /opt/zimbra/httpd/htdocs/aspell.php. Replace this block (line 82 or so)

 $suggestions = implode(",", pspell_suggest($dictionary, $word));
 $misspelled .= "$word:$suggestions\n";

with this one:

 $suggestions = implode(",", pspell_suggest($dictionary, $word));
 $suggestions=iconv("iso-8859-1","UTF-8",$suggestions);
 $misspelled .= "$word:$suggestions\n";

NOTE: After changing the aspell language restart the spellchecker as the user zimbra with the following command:

 zmspellctl stop; zmspellctl start

There is also a problem when splitting words. Replace (line 48 or so)

$words = preg_split('/[^\w\'-] /', $text);

with this one:

$words = preg_split('/[^\w\'\xc0-\xfd-]+/', $text);

This regexp line should be enough for most western Europe languages (Spanish, French, German, Portuguese and Italian). It includes all ISO8859 europeean letters in the range 192-253 of the table below.

latin1.gif


  • To add a set of custom words see this How-To
Jump to: navigation, search