<?php
/*******************************************************************************
 * Copyright (c) 2008 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Eclipse Foundation - Initial API and implementation
*******************************************************************************/

# Note: the style attribute for the ol tag below was causing a truncation in IE.
# I removed the attribute. The layout is still acceptable. Future modifications to this file should be tested in IE also.

include("global.php");

$pageTitle 		= "Babel Project - Eclipse translation";
$pageKeywords 	= "translation,language,nlpack,pack,eclipse,babel,english,french,german,chinese,japanese,spanish,arabic,hebrew,hungarian,polish,italian,russian,dutch,finnish,greek,norwegian,sweedish,turkish";

global $addon;
$addon->callHook("head");

?>

<h1 id="page-message">Welcome to the Babel Project</h1>
<div id="index-page" style='width: 510px; padding-right: 190px;'>

	<img src="<?php echo imageRoot() ?>/large_icons/categories/preferences-desktop-peripherals.png"><h2>Become a Committer on the Babel Project</h2>
	<br style='clear: both;'>
	<p>The main goal of the Babel project is to involve you the community in making Eclipse projects available in any language.  
	   To make this effort a success we need quality translators to help with the translation.
	   And we need help from developers to bring new features to Babel.
	</p>

	<h3 style='margin-left: 40px;'>Everybody can:</h3>
	<ol>
		<li><a href="translate.php">Help translate Eclipse projects into your language</a></li>
		<li><a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?assigned_to=babel.core-inbox%40eclipse.org&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&component=Website&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&dependson=&description=&flag_type-1=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=P3&product=Babel&qa_contact=&rep_platform=All&short_desc=&version=unspecified">Open a bug you found in Babel</a></li>
		<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&classification=Technology&product=Babel&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=anywords&keywords=helpwanted+bugday&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&known_name=babel&query_based_on=babel&field0-0-0=product&type0-0-0=substring&value0-0-0=babel&field0-0-1=component&type0-0-1=substring&value0-0-1=babel&field0-0-2=short_desc&type0-0-2=substring&value0-0-2=babel&field0-0-3=status_whiteboard&type0-0-3=substring&value0-0-3=babel&field0-0-4=longdesc&type0-0-4=substring&value0-0-4=babel">Squash a bug already open</a></li>
		<li><a href="https://dev.eclipse.org/mailman/listinfo/babel-translators">Join the mailing list</a></li>
	</ol>	  

	<h3 style='margin-left: 40px;'>Projects Members can:</h3>
	<ol>
		<li><a href="importing.php">Get your Eclipse project imported to Babel</a></li>
		<li>Help make specific language packs for Eclipse projects (pending)</li>
		<li>Review translations for quality/consistency (pending)</li>
		<li>Promote your projects translation progress (pending)</li>
	</ol>
	  
</div>

<?php
	global $addon;
    $addon->callHook("footer");
?>