diff --git a/html/callback/getLanguages.php b/html/callback/getLanguages.php
new file mode 100644
index 0000000..be1bd18
--- /dev/null
+++ b/html/callback/getLanguages.php
@@ -0,0 +1,35 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+ *    Eclipse Foundation
+*******************************************************************************/
+
+if(defined(BABEL_BASE_DIR)){
+	require_once(BABEL_BASE_DIR."html/global.php");
+}else{
+	require_once("../global.php");
+}
+
+InitPage("login");
+
+$query = "select * from languages where is_active = 1";
+
+$res = mysql_query($query,$dbh);
+
+while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+	$return .= "<li><a href='?language_id=".$line['language_id']."'>".$line['iso_code']. " - ". $line['name']. "</a>";
+}
+
+?>
+
+<ul id='language-choices'>
+	Please select a langue to translate:<br>
+	<?=$return;?>
+</ul>
\ No newline at end of file
diff --git a/html/callback/getProjects.php b/html/callback/getProjects.php
new file mode 100644
index 0000000..96b5355
--- /dev/null
+++ b/html/callback/getProjects.php
@@ -0,0 +1,29 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+
+*******************************************************************************/
+require("../global.php");
+
+InitPage("login");
+
+$query = "select * from projects where is_active = 1";
+$res = mysql_query($query,$dbh);
+
+$return = '<ul id="project-choices">';
+
+while($line = mysql_fetch_array($res, MYSQL_ASSOC)){
+	$return .= '<li><a href="project_id='.$line['project_id'].'">'.$line['project_id'].'</a>';
+}
+$return .= "</ul>";
+
+print $return;
+
+?>
\ No newline at end of file
diff --git a/html/callback/setCurrentLangue.php b/html/callback/setCurrentLangue.php
new file mode 100644
index 0000000..f7b5e3b
--- /dev/null
+++ b/html/callback/setCurrentLangue.php
@@ -0,0 +1,35 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+ *    Eclipse Foundation
+*******************************************************************************/
+
+
+
+if(defined(BABEL_BASE_DIR)){
+	require_once(BABEL_BASE_DIR."html/global.php");
+}else{
+	require_once("../global.php");
+}
+
+InitPage("login");
+
+$language_post = $App->getHTTPParameter("lang", "POST");
+
+if($language_post){
+	$lang = explode("=",$language_post);
+	if($lang[1] and is_numeric($lang[1])){
+		# TODO check database before setting to make sure input is valid choice
+		$_SESSION['language'] = $lang[1];
+		print getLanguagebyID($lang[1]);
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/html/callback/setCurrentProject.php b/html/callback/setCurrentProject.php
new file mode 100644
index 0000000..d133415
--- /dev/null
+++ b/html/callback/setCurrentProject.php
@@ -0,0 +1,36 @@
+<?php
+/*******************************************************************************
+ * Copyright (c) 2007 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:
+ *    Paul Colton (Aptana)- initial API and implementation
+ *    Eclipse Foundation
+*******************************************************************************/
+
+
+if(defined(BABEL_BASE_DIR)){
+	require_once(BABEL_BASE_DIR."html/global.php");
+}else{
+	require_once("../global.php");
+}
+
+InitPage("login");
+
+$language_post = $App->getHTTPParameter("proj", "POST");
+
+if($language_post){
+	$lang = explode("=",$language_post);
+	if($lang[1]){
+		# TODO check database before setting to make sure input is valid choice
+		$_SESSION['project'] = $lang[1];
+		print $lang[1];
+	}else{
+		echo "bad";
+	}
+}
+
+?>
\ No newline at end of file
