<html><head>
	  <title>Auto-Install</title>
	  <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
  </head>
  <body>
		<a href="download_dictionary.html">return to Table of Contents</a><br />
				
    <table width="80%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>
          <h2 align="center">Automated Dictionary Installers:</h2>
          <h2>===&gt; <a href="#dicooo">			<b>DicOOo Macro</b></a>: multi-platform<br />
    							===&gt; <a href="#dictinstall"><b>DictInstall</b></a>: Windows<br />
    							===&gt; <a href="#ooodi">			 <b>OOoDI</b></a>: Unix, Linux</h2>
					<br />
    							
          <h4><a name="dicooo">*** DicOOo Macro:</a>
          Multi-Platform, Multi-Language, On/Off-Line Dictionary Installer</h4>
          The macro in <a href="dictpack.html"> DicOOo.sxw</a>,
          created by Laurent Godard, is a multi-platform solution for installing dictionaries:
          <ol>
            <li>on any platform executing OpenOffice.org and with DicOOo.sxw available;</li>
            <li>On-Line: install dictionaries from the Internet while connected; or</li>
            <li>Off-Line: use <a href="dictpack.html">Dictionary Packs</a> for installation from a local network, hard disk or Community CD.</li>
          </ol>
          <hr />
          <p>We hope that <b>Community distributors</b> will find DicOOo and dictionary packs a useful addition on their CDs.<br />
          <br />
            Some notes on building or modifying Off-Line Dictionary Packs for your requirements:<br />
            This feature is especially dedicated to distributing dictionaries with CDs. An Off-Line Dictionary Pack contains 3 text files and the
            included dictionary zip files. The 3 text files describe what the off-line pack contains for each dictionary type:<br />
            <ol>
              <li>spell.txt: for the included spellchecker zip files. Uses same structure as the <a href="available.lst">http://lingucomponent.openoffice.org/available.lst</a> file.</li>
              <li>hyph.txt: for the included hyphenation zip files. Uses same structure as the <a href="hyphavail.lst">http://lingucomponent.openoffice.org/hyphavail.lst</a> file.</li>
              <li>thes.txt: for the included thesaurus zip files. Uses same structure as the <a href="thesavail.lst">http://lingucomponent.openoffice.org/thesavail.lst</a> file.</li>
            </ol>
            Moreover, DicOOo code has been designed to limit the needed modification to the code, to let it start in off-line mode by default.
            Users who want to adapt it, have only to focus on two global constants in the LangPack module:<br />
            &nbsp; &nbsp; StartOffLine=0     ; 0/1 to deactivate/activate off-line mode by default<br />
            &nbsp; &nbsp; NomPackLang="" ; Name of the off-line pack zip file. Relative URLs to DicOOo location are allowed<br />
          <hr />
          <blockquote>
          Tech Notes:<br />
          <br />
          When finished installing dictionaries, exit OpenOffice.org and exit the QuickStarter if it's running.<br />
          Restart OpenOffice.org and navigate to Tools&gt;Options&gt;Language Settings&gt;Writing Aids.<br />
          Select your new dictionaries.  :-))
          </blockquote>
          <h4 align="center">DicOOo Tutorials Available:</h4>
          <p>
          <a href="http://de.openoffice.org/spellcheck/about-spellcheck-dicooo.html">Deutsch, html</a> &nbsp; ::
          <a href="http://www.linuxplusvalue.be/download/tutoriel_dicooo-en.pdf">English, pdf</a> &amp;
          <a href="http://www.linuxplusvalue.be/download/tutoriel_dicooo-en.sxw"> sxw</a>&nbsp; ::
          <a href="dicooo/Tut_es/Tutorial_DicOOo_es.html">Español, html</a>&nbsp; ::
          <a href="http://www.linuxplusvalue.be/download/tutoriel_dicooo-fr.pdf">Français, pdf</a> &amp;
          <a href="http://www.linuxplusvalue.be/download/tutoriel_dicooo-fr.sxw"> sxw</a>&nbsp; ::
          </p>
          <br />
          Make a tutorial in another lang? Suggestion for improvement? Error? &nbsp; Contact Richard at openoffice.org.<br />
          <hr /><br />

          <h4><a name="dictinstall">*** DictInstall:  OOo Dictionary Installer for Windows</a></h4>

          <p>For Windows, Lee Corbin has created a nicely automated Dictionary Installer. Binary and source are available for <br />
          <a href="http://ooodocs.sourceforge.net/dictinstall/">Lee Corbin's DictInstall for Windows</a>.</p>

          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt; Lee's Dictionary Install Tips for Windows,&nbsp; in<br />
          &nbsp;&nbsp;&nbsp; <b>English | Deutsch | Français | Español | Finnish | Danish | Greek | Italian | Nederlands</b></p>
          <hr /><br />

          <h4><a name="ooodi">*** OOoDI:  OOo Dictionary Installer for Linux/Unix</a></h4>

          <p>For Linux/Unix, Jonathan Hudson has created a nice, automated Dictionary Installer. Binary and source are available at
          <a href="http://ooodi.sourceforge.net">http://ooodi.sourceforge.net</a>.</p>

          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt; <a href="http://ooodi.sourceforge.net/OOodi.html#usage">
          Jonathan's Dictionary Install Tips for Linux.</a></p>
          <hr />

      		<p><a href="download_dictionary.html">return to Table of Contents for Writer's Aids</a></p>

        </td>
      </tr>
    </table>
  </body>
</html>
 