<html>
<head>
 <title>Participate in OpenOffice.org</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="Content-Style-Type" content="text/css">
</head>

<body>
  <a href="index.html">Participate in OpenOffice.org</a>
  <table width="100%">
  <tr>
    <td width="70px"><a href="native-lang.html"><img src="_media/language.png" border="0" alt="Language Communities" vspace="11" /></a></td>
    <td style="vertical-align:middle">
     <h1>OpenOffice.org in Your Language</h1>
    </td>
   </tr>
</table>
  <p>OpenOffice.org is a world-wide project. As such, it is important that it be available to as many linguistic communities as possible. There are two projects that seek to spread the use of OpenOffice.org over the various world languages. OpenOffice.org now supports almost all major languages, and support for many medium/minor languages has started. But help is always needed</p>
  <ul>
  <li>
    <p><b style="color:#a00">Localization (L10n)</b><br />
      The <a href="http://l10n.openoffice.org/">Localization project</a>'s task is to translate the OpenOffice.org interface into other languages. Thanks to this project, OpenOffice.org is now available in several dozen different languages.</p>
  </li>
  <li>
    <p><b style="color:#a00">Native-lang Confederation (NLC)</b><br />
      The <a href="http://native-lang.openoffice.org/">Native Lang Confederation</a> provides a space for support, information, advocacy, and some development of OpenOffice.org in a person's native language.  The constituent projects work closely with the <a href="http://l10n.openoffice.org/">l10n Project</a> to ensure that OpenOffice.org is supported in all the languages to which it has been translated ("localized").</p>
  </li>
</ul>
  <!-- 

Public Documentation License Notice


The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the "License"); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at //licenses/PDL.html.

The Original Documentation is "nataive-lang.html". The Initial Writer of the Original Documentation is Daniel Carrera Copyright (C) 2004. All Rights Reserved. (Initial Writer contact: dcarrera [at] digitaldistribution.com.)  This current document is derived from that original.

Contributor(s): Louis Suarez-Potts (LSP), louis [at] openoffice.org

For a record of all changes made to the original document by Louis Suarez-Potts, see the CVS history at OpenOffice.org ( www/www/contributing/native-lang.html and contributing/www/*)

-->
 </body>
</html>
