<html>
<head>
  <meta http-equiv="Content-Type" CONTENT="text/html; charset=utf-8">
  <title>Thank you for using OpenOffice.org - now Apache OpenOffice</title>
</head>

<body>

<h1>Thank you for using OpenOffice.org - now Apache OpenOffice</h1>

<h2>Get the latest version</h2>

<p>OpenOffice.org is now <strong>Apache OpenOffice</strong>.</p>

<p><strong>Please note:</strong>  You are running an old version of OpenOffice and are missing new features and bug fixes, including security fixes.  The latest version is 
Apache OpenOffice 3.4.1, released in August 2012. You can download the latest version, free, from:  <a href="http://www.openoffice.org/download/">the official OpenOffice download site</a>.</p>

<p>Apache OpenOffice 3.4.1 is available in the following translations: Arabic, Asturian,Basque, Brazilian Portuguese, Czech, Danish, Dutch, Finnish, French, Galician, German, Hungarian,
Italian, Japanese, Khmer, Korean, Norwegian, Polish, Russian, Scottish Gaelic, Simplified Chinese, Slovak, Slovenian, Spanish, Swedish, Traditional Chinese, UK English and US English.
</p>

<h2>More languages, with your help</h2>

<p>If the latest version of Apache OpenOffice is not yet available in your language, this means that we need volunteers to help us with the translation.  We have several
	languages that have partial translations.  A little more help now can help us support the language in our next major release, Apache OpenOffice 4.0.  
	Languages that are more than 90% complete are:
	
	<ul>
		<li>Welsh (98% complete)</li>
		<li>Uighur (98% complete)
		<li>Latvian (98% complete)
		<li>Indonesian (98% complete)
		<li>Icelandic (98% complete)
		<li>Catalan (98% complete)
		<li>Bulgarian (98% complete)
		<li>Serbian (97% complete)
		<li>Greek (97% complete)
		<li>English (South African) (96% complete)
		<li>Portuguese (95% complete)
		<li>Oriya (95% complete)
		<li>Marathi (95% complete) 	
		<li>Kannada (95% complete) 	
		<li>Irish (95% complete) 	
		<li>Gujarati (95% complete) 	
		<li>Turkish (94% complete) 	
		<li>Telugu (94% complete) 	
		<li>Vietnamese (93% complete) 	
		<li>Tamil (93% complete) 	
		<li>Burmese (93% complete) 	
		<li>Hebrew (92% complete) 	
		<li>Sinhala (91% complete)		
	
	</ul>
	
			(Other languages that are less than 90% complete are <a href="https://translate.apache.org/projects/OOo_34/">listed here</a>.  We can support them as well, 
			given sufficient volunteer interest.)</p>
			
	<p>If you are interested in helping with translation, we have a page on <a href="http://openoffice.apache.org/translate.html">How to Help Translate Apache OpenOffice</a>.  
	You can also <a href="mailto:L10n@openoffice.apache.org">send a note</a> to our public localization mailing list for more information on how to help.</p>

<h2>Stay informed</h2>

There are several ways in which you can be notified about important project announcements:

<ul>
  <li>Subscribe the <a href="http://openoffice.apache.org/mailing-lists.html#announce-mailing-list">OpenOffice announce mailing list</a></li>
  <li>Follow us on <a href="https://www.facebook.com/ApacheOO">Facebook</a></li>
  <li>Follow us on <a href="https://twitter.com/ApacheOO">Twitter</a></li>
  <li>Follow us on <a href="https://plus.google.com/+openoffice/posts">Google+</a></li>
    </ul>

</body>
</html>
