NEW - bug 210: Babel or Babel-like Community Internationalization
https://foundation.eclipse.org/infrazilla/show_bug.cgi?id=210
diff --git a/html/babel.css b/html/babel.css
index cbe8ae1..0036018 100644
--- a/html/babel.css
+++ b/html/babel.css
Binary files differ
diff --git a/html/callback/getCurrentStringTranslation.php b/html/callback/getCurrentStringTranslation.php
index 87e46c5..e1d7fe8 100644
--- a/html/callback/getCurrentStringTranslation.php
+++ b/html/callback/getCurrentStringTranslation.php
@@ -18,11 +18,14 @@
$language = $_SESSION['language'];
$version = $_SESSION['version'];
+$project_id = $_SESSION['project'];
$query = "select
strings.string_id,
strings.value as string_value,
translations.value as translation_value,
+ files.name,
+ strings.name as token,
max(translations.version)
from
files,
@@ -52,26 +55,103 @@
$line = mysql_fetch_array($res, MYSQL_ASSOC);
+//print_r($line);
+
+
+if($line['translation_value']){
+ $trans = " AND translations.value = '".addslashes($line['translation_value'])."'
+ AND
+ translations.is_active = 1
+ ";
+}else{
+// $trans = "translations.value is NULL ";
+}
+
+$query = "select
+ strings.string_id, strings.value, strings.name max(translations.translation_id)
+ FROM
+ files,
+ strings
+ left join
+ translations
+ on
+ translations.string_id = strings.string_id
+ where
+ files.file_id = strings.file_id
+ AND
+ files.project_id = '".addslashes($project_id)."'
+ AND
+ strings.value = '".addslashes($line['string_value'])."'
+
+ $trans
+ AND
+ files.is_active = 1
+ group by translations.string_id
+ ";
+// AND
+// files.name = (SELECT files.name FROM files as F where F.project_id = '".addslashes($project_id)."')
+
+$query = "SELECT
+ S.*
+ FROM
+ strings AS S
+ inner join files AS F on F.file_id = S.file_id
+ inner join translations AS T on T.string_id = S.string_id
+ where
+ F.project_id = '".addslashes($project_id)."'
+ AND
+ F.file_id in (SELECT files.file_id FROM files where files.project_id = '".addslashes($project_id)."')
+ AND
+ S.value = '".addslashes($line['string_value'])."'
+ and
+ T.value = '".addslashes($line['translation_value'])."'
+ AND
+ T.is_active = 1
+ ";
+
+//INSERT INTO translations SELECT S.string_id, 2, "Some Enhanced Text", other fields..... FROM strings AS S inner join files AS F on F.file_id = S.file_id inner join translations AS T on T.string_id = S.string_id where F.project_id = "eclipse" AND F.name=(SELECT files.name FROM files where file_id = 7) AND S.name="pluginName" and T.value = "Some Old Text" AND T.is_active = 1
+
+//print $query;
+
+$res = mysql_query($query,$dbh);
+
+/*
+while($same_trans = mysql_fetch_array($res, MYSQL_ASSOC)){
+ print "<pre>--";
+ print_r($same_trans);
+ print "</pre>";
+}
+*/
?>
<form id='translation-form'>
<input type="hidden" name="string_id" value="<?=$line['string_id'];?>">
<div id="english-area" class="side-component">
<h4>English String</h4>
- <div id="english-current-area">
- <?= nl2br($line['string_value']);?>
+ <div style='margin-bottom: .5em;'>
+ <b><?= nl2br($line['string_value']);?></b>
+ </div>
+ <h4>File From</h4>
+ <div style='margin-bottom: .5em;'>
+ <?= nl2br($line['name']);?>
+ </div>
+ <h4>Externalized Token</h4>
+ <div>
+ <?= nl2br($line['token']);?>
</div>
</div>
<div id="translation-textarea" class="side-component">
<h4>Current Translation</h4>
- <textarea style='display: inline; width: 390px; height: 150px;' name="translation"><?= nl2br($line['translation_value']);?></textarea>
+ <textarea style='display: inline; width: 320px; height: 150px;' name="translation"><?= nl2br($line['translation_value']);?></textarea>
<br>
<input type="submit" value="translate">
</div>
+
<div id="translation-history" class="side-component">
<h4>History of Translations</h4>
<div id="translation-history">Coming soon!</div>
</div>
+
</form>
diff --git a/html/callback/getLanguages.php b/html/callback/getLanguages.php
index c55b6a7..787b706 100644
--- a/html/callback/getLanguages.php
+++ b/html/callback/getLanguages.php
@@ -13,7 +13,7 @@
require_once("cb_global.php");
-$query = "select * from languages where is_active = 1 and language_id != 1";
+$query = "select * from languages where is_active = 1 and language_id != 1 order by name";
$res = mysql_query($query,$dbh);
@@ -28,8 +28,6 @@
$return[] = $line;
}
-//print_r($return);
-
print json_encode($return);
exit();
diff --git a/html/callback/getStringsforProject.php b/html/callback/getStringsforProject.php
index 9098ad5..303741c 100644
--- a/html/callback/getStringsforProject.php
+++ b/html/callback/getStringsforProject.php
@@ -139,8 +139,7 @@
strings.string_id as stringId,
strings.value as text,
strings.created_on as createdOn,
- translations.value as translationString,
- max(translations.version)
+ translations.value as translationString
from
files,
strings
@@ -149,6 +148,8 @@
translations.language_id = '".addslashes($language)."'
and
translations.string_id = strings.string_id
+ and
+ translations.is_active = 1
)
where
strings.is_active = 1
@@ -158,7 +159,6 @@
files.version = '".addslashes($version)."'
and
files.project_id = '".addslashes($project_id)."'
-
group by strings.string_id,translations.version desc
";
diff --git a/html/callback/setStringTranslation.php b/html/callback/setStringTranslation.php
index 06f153f..7276018 100644
--- a/html/callback/setStringTranslation.php
+++ b/html/callback/setStringTranslation.php
@@ -21,8 +21,25 @@
$language_id = $_SESSION["language"];
$project_id = $_SESSION['project'];
$language_id = $_SESSION["language"];
+$version = $_SESSION["version"];
+
$user_id = $User->userid;
+
+$query = "update
+ translations
+ set
+ is_active = 0
+ where
+ string_id = '".addslashes($string_id)."'
+ and
+ language_id = '".addslashes($language_id)."'
+ and translation_id != ".mysql_insert_id($dbh)."";
+
+//$res = mysql_query($query,$dbh);
+
+
+
$query = "insert into
translations
set
@@ -34,10 +51,152 @@
";
+ $query = "
+ INSERT INTO
+ translations
+ (string_id,
+ language_id,
+ value,
+ userid,
+ created_on)
+ values(select
+ strings.string_id,
+ '".addslashes($language_id)."',
+ '',
+ '".addslashes($translation)."',
+ '".addslashes($user_id)."',
+ NOW()
+ from
+ files,
+ strings
+
+ left join translations on (
+ translations.language_id = '".addslashes($language_id)."'
+ and
+ translations.string_id = strings.string_id
+ )
+ where
+ strings.is_active = 1
+ and
+ files.file_id = strings.file_id
+ and
+ files.project_id = '".addslashes($project_id)."'
+
+ )
+ ";
+
+// group by strings.string_id,translations.version desc
+
+// and
+// files.version = '".addslashes($version)."'
+
+// print $query;
+
+
+
+ $query2 = "select
+ strings.string_id as stringId
+ from
+ files,
+ strings
+ left join translations on (
+ translations.language_id = '".addslashes($language)."'
+ and
+ translations.string_id = strings.string_id
+ and
+ translations.is_active = 1
+ )
+ where
+ strings.is_active = 1
+ and
+ files.file_id = strings.file_id
+ and
+ files.version = '".addslashes($version)."'
+ and
+ files.project_id = '".addslashes($project_id)."'
+
+ group by strings.string_id,translations.version desc
+ ";
+
+
+ $query = "INSERT INTO
+ translations
+ (string_id,
+ language_id,
+ value,
+ userid,
+ created_on)
+
+ (SELECT
+ S.string_id,
+ '".addslashes($language)."' ,
+ '".addslashes($translation)."',
+ '".addslashes($user_id)."',
+ NOW()
+ FROM
+ strings AS S
+
+ inner join files AS F
+ on
+ F.file_id = S.file_id
+
+ left join translations AS T
+ on (
+ T.string_id = S.string_id
+ or
+ T.string_id is null
+ )
+ and
+ (T.value = (select translations.value from strings,translations where strings.string_id = '".addslashes($string_id)."' and translations.string_id = strings.string_id and translations.is_active = 1 limit 1)
+ or
+ T.value is null)
+ AND
+ (
+ T.is_active = 1
+ or
+ T.is_active is null
+ )
+ where
+
+ F.project_id = '".addslashes($project_id)."'
+ AND
+ F.name in (SELECT files.name FROM files where project_id = '".addslashes($project_id)."')
+ AND
+ S.name in (select strings.name from strings where string_id = '".addslashes($string_id)."')
+ )
+ ";
+
+/*
+INSERT INTO translations
+SELECT S.string_id, 2, "Some Enhanced Text", other fields.....
+FROM
+strings AS S
+inner join files AS F on F.file_id = S.file_id
+inner join translations AS T on T.string_id = S.string_id
+where F.project_id = "eclipse"
+AND F.name=(SELECT files.name FROM files where file_id = 7)
+AND S.name="pluginName"
+and T.value = "Some Old Text"
+AND T.is_active = 1
+*/
+ print $query;
+
+ $res = mysql_query($query,$dbh);
+
+ print "error:".mysql_error($dbh);
+
+ print "num rows: ".mysql_affected_rows($dbh);
+
+
+
+
-$res = mysql_query($query,$dbh);
+// while($trans = mysql_fetch_array($res, MYSQL_ASSOC)){
+// print_r($trans);
+// }
+
/*
$res_file_id = mysql_query("select file_id from files where project_id = '".addslashes($project_id)."' limit 1");
$file_id = mysql_fetch_assoc($res_file_id);
diff --git a/html/index.php b/html/index.php
index 6565510..668acfe 100644
--- a/html/index.php
+++ b/html/index.php
@@ -11,7 +11,7 @@
* Eclipse Foundation
*******************************************************************************/
require("global.php");
-InitPage("login");
+InitPage("");
$pageTitle = "Babel Project";
$pageKeywords = "translation,language,nlpack,pack,eclipse,babel";
@@ -24,68 +24,46 @@
?>
<h1 id="page-message">Welcome to the Babel Project</h1>
-<div id="contentArea">
-
- <h2>Languages / Projects / Versions</h2>
- <div id="language" class="side-component">
- <h4 id="language-selection">Langues</h4>
- <ul id="language-area"class="scrollable-area"></ul>
- </div>
-
- <div id="project" class="side-component">
- <h4 id="project-selection">Projects</h4>
- <ul id="project-area" class="scrollable-area"></ul>
+<div>
+ <h2>Eclipse in your language</h2>
+
+ <div style='float: right; border: 0px solid black; background-color: lightblue;'>
+ <h3 style='margin: 0px; padding: 0px;'>Login to Babel</h3>
+ <form name="frmLogin" method="post" action="login.php">
+ <table cellspacing=4 cellpadding=0 border=0>
+ <tr>
+ <td id="formLbl">Email:</td><td style='text-align:left;'><input type="text" name="username" value="<?= $USERNAME ?>" size="20" maxlength="255" /></td>
+ </tr>
+ <tr>
+ <td id="formLbl">Password:</td><td style='text-align:left;'><input type="password" name="password" value="<?= $PASSWORD ?>" size="20" maxlength="255" /></td>
+ </tr>
+ <tr>
+ <td></td><td style='text-align:left;'><input type="checkbox" name="remember" value="1" <?= $REMEMBER ?> />remember me </td>
+ </tr>
+ <tr>
+ <td></td><td style='text-align:left;'><input type="submit" name="submit" value="Login" style="font-size:14px;" /></td></tr>
+ </table>
+ </form>
</div>
- <div id="project" class="side-component">
- <h4 id="version-selection">Versions</h4>
- <ul id="version-area" class="scrollable-area"></ul>
- </div>
-
+ <p>Eclipse is a part of the global community of open source projects.
+ It is in everyone’s interest to ensure that Eclipse is available and translated in as many locales as possible.
+ The Babel project is a set of open tools to make the job of globalizing Eclipse projects easier.
+ Babel provides ways for people world wide, who are interested, to contribute translations in their language of choice.
+ </p>
+
<div class="clearing"></div>
-
-
-<!--
-<script type="text/javascript">
- var myTabs = new YAHOO.widget.TabView("string-area");
-</script>
--->
+ <h2>Who can help?</h2>
+ <p>Anyone who knows more than one language can become become a star translator for any of the Eclipse projects.
+ You don't need to be a developer to help out on this project, just a desire to contribute to one of the best open source project, Eclipse.
+ </p>
-
-
- <div id="string-area" class="yui-navset full-component">
- <h2>Translatable Strings</h2>
-<!--
- <ul class="yui-nav">
- <li class="selected"><a href="#tab1"><em>Untranslated</em></a></li>
- <li><a href="#tab2"><em>Flagged Incorrect</em></a></li>
- <li><a href="#tab3"><em>Awaiting Rating</em></a></li>
- </ul>
- <div class="yui-content" style="clear: both;">
- <div id="not-translated">
- </div>
-
- <ul id="flagged-incorrect">
- </ul>
-
- <ul id="awaiting-ratings">
- </ul>
- </div>
-
--->
- <div id="projecs-strings-area" class="yui-content"> </div>
-
- <div id="not-translated"></div>
- </div>
-
-
- <div id="translation-area" class="full-component">
- <h2>String Translation</h2>
- <div id="translation-form-container"></div>
- </div>
-
+ <h2>How do I get started?</h2>
+ <p>All you need to contribute translations is an active Eclipse bugzilla account and some spare time.
+ So what are you waiting for?
+ </p>
+
<div class="clearing"></div>
-
</div>
<script>YAHOO.languageManager.getAjaxLanguages();</script>
diff --git a/html/js/language.js b/html/js/language.js
index 9432fc3..2ba9dee 100644
--- a/html/js/language.js
+++ b/html/js/language.js
@@ -63,7 +63,8 @@
this.languageId = dataIn['language_id'];
this.name = dataIn['name'];
- this.iso = dataIn['iso'];
+ this.iso = dataIn['iso_code'];
+ this.locale = dataIn['locale'];
}
YAHOO.extend(language,selectable);
@@ -92,7 +93,10 @@
}
language.prototype.createHTML = function(){
this.domElem = document.createElement("li");
- this.domElem.innerHTML = this.name+"("+this.iso+")";
+ this.domElem.innerHTML = this.name;
+ if(this.locale){
+ this.domElem.innerHTML += "("+this.locale+")";
+ }
this.addEvents();
return this.domElem;
diff --git a/html/js/projectString.js b/html/js/projectString.js
index 6f470d3..ffaab3d 100644
--- a/html/js/projectString.js
+++ b/html/js/projectString.js
@@ -65,18 +65,18 @@
tr = this.tableDom.insertRow(0);
tr.id = "translatable-strings-labels-area";
+// td = tr.insertCell(0);
+// td.innerHTML = "Label";
+// td.width = "10%";
td = tr.insertCell(0);
- td.innerHTML = "Label";
- td.width = "10%";
- td = tr.insertCell(1);
td.innerHTML = "String";
- td.width = "20%";
- td = tr.insertCell(2);
+ td.width = "38%";
+ td = tr.insertCell(1);
td.innerHTML = "Last Translation";
td.width = "50%";
- td = tr.insertCell(3);
+ td = tr.insertCell(2);
td.innerHTML = "Create On";
- td.width = "20%";
+ td.width = "12%";
return this.tableDom;
},
@@ -87,7 +87,6 @@
updateSelected: function(selec){
if(this.selected){
-YAHOO.log("removed!!!!!!!!");
this.selected.unselect();
}
this.selected = selec;
@@ -118,22 +117,22 @@
projectString.prototype.createHTML = function(tr){
this.domElem = tr;
+// td = tr.insertCell(0);
+// td.innerHTML = this.data['label'];
+// td.width = "10%";
+
td = tr.insertCell(0);
- td.innerHTML = this.data['label'];
- td.width = "10%";
-
- td = tr.insertCell(1);
td.innerHTML = this.data['text'];
- td.width = "20%";
+ td.width = "38%";
-
- td = tr.insertCell(2);
- td.innerHTML = "<div style='width: 100%; overflow: hidden;'>"+this.data['translationString']+"</div>";
+ td = tr.insertCell(1);
+ var temp = this.data['translationString'] ? this.data['translationString'] : ''
+ td.innerHTML = "<div style='width: 100%; overflow: hidden;'>"+temp+"</div>";
td.width = "50%";
- td = tr.insertCell(3);
+ td = tr.insertCell(2);
td.innerHTML = this.data['createdOn'];
- td.width = "20%";
+ td.width = "12%";
this.addEvents();
}
diff --git a/html/login.php b/html/login.php
index 047ff87..b64d1c8 100755
--- a/html/login.php
+++ b/html/login.php
@@ -36,7 +36,7 @@
$Session = new Session();
$Session->create($User->userid, $REMEMBER);
SetSessionVar('User', $User);
- exitTo("index.php");
+ exitTo("translate.php");
}
}
else {
diff --git a/html/translate.php b/html/translate.php
new file mode 100644
index 0000000..6565510
--- /dev/null
+++ b/html/translate.php
@@ -0,0 +1,97 @@
+<?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
+*******************************************************************************/
+require("global.php");
+InitPage("login");
+
+$pageTitle = "Babel Project";
+$pageKeywords = "translation,language,nlpack,pack,eclipse,babel";
+
+include("head.php");
+
+//$_SESSION['language'] = "";
+//$_SESSION['project'] = "";
+//$_SESSION['version'] = "";
+?>
+
+<h1 id="page-message">Welcome to the Babel Project</h1>
+<div id="contentArea">
+
+ <h2>Languages / Projects / Versions</h2>
+ <div id="language" class="side-component">
+ <h4 id="language-selection">Langues</h4>
+ <ul id="language-area"class="scrollable-area"></ul>
+ </div>
+
+ <div id="project" class="side-component">
+ <h4 id="project-selection">Projects</h4>
+ <ul id="project-area" class="scrollable-area"></ul>
+ </div>
+
+ <div id="project" class="side-component">
+ <h4 id="version-selection">Versions</h4>
+ <ul id="version-area" class="scrollable-area"></ul>
+ </div>
+
+ <div class="clearing"></div>
+
+
+<!--
+<script type="text/javascript">
+ var myTabs = new YAHOO.widget.TabView("string-area");
+</script>
+-->
+
+
+
+ <div id="string-area" class="yui-navset full-component">
+ <h2>Translatable Strings</h2>
+<!--
+ <ul class="yui-nav">
+ <li class="selected"><a href="#tab1"><em>Untranslated</em></a></li>
+ <li><a href="#tab2"><em>Flagged Incorrect</em></a></li>
+ <li><a href="#tab3"><em>Awaiting Rating</em></a></li>
+ </ul>
+ <div class="yui-content" style="clear: both;">
+ <div id="not-translated">
+ </div>
+
+ <ul id="flagged-incorrect">
+ </ul>
+
+ <ul id="awaiting-ratings">
+ </ul>
+ </div>
+
+-->
+ <div id="projecs-strings-area" class="yui-content"> </div>
+
+ <div id="not-translated"></div>
+ </div>
+
+
+ <div id="translation-area" class="full-component">
+ <h2>String Translation</h2>
+ <div id="translation-form-container"></div>
+ </div>
+
+ <div class="clearing"></div>
+
+</div>
+
+<script>YAHOO.languageManager.getAjaxLanguages();</script>
+
+<?php
+
+
+ include("foot.php");
+?>
\ No newline at end of file