[Winmerge-svn] SF.net SVN: winmerge:[6867] trunk/Web/translations
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ge...@us...> - 2009-06-25 17:00:46
|
Revision: 6867 http://winmerge.svn.sourceforge.net/winmerge/?rev=6867&view=rev Author: gerundt Date: 2009-06-25 17:00:44 +0000 (Thu, 25 Jun 2009) Log Message: ----------- Web: Use new PHP5 class for Trunk translations status Modified Paths: -------------- trunk/Web/translations/index.php trunk/Web/translations/status_trunk.php trunk/Web/translations/status_trunk_rss.php trunk/Web/translations/translations.inc Modified: trunk/Web/translations/index.php =================================================================== --- trunk/Web/translations/index.php 2009-06-25 16:35:07 UTC (rev 6866) +++ trunk/Web/translations/index.php 2009-06-25 17:00:44 UTC (rev 6867) @@ -1,5 +1,6 @@ <?php include('../page.inc'); + include('translations.inc'); $page = new Page; $page->addRssFeed('status_branch_rss.php', 'Translations Status (Stable Branch)'); @@ -8,24 +9,21 @@ ?> <h2>Translations</h2> <p>We currently have WinMerge translated into the languages listed below:</p> +<ul class="inline"> <?php - $status = $page->convertXml2Array('status_trunk.xml'); - print("<ul class=\"inline\">\n"); - if (!empty($status)) { //If translations status available... - $translations = $status['STATUS'][0]['TRANSLATIONS'][0]['TRANSLATION']; - $translations = $page->multisortArray($translations, 'LANGUAGE', SORT_ASC); - for ($i = 0; $i < count($translations); $i++) { //For all translations... - $translation = $translations[$i]; - $language_name = $translation['LANGUAGE'][0]['VALUE']; - - print(" <li>" . $language_name . "</li>\n"); + try { + $status = New TranslationsStatus('status_trunk.xml'); + + $languages = $status->getLanguagesArray(); + foreach ($languages as $language) { //for all languages... + print(" <li>" . $language . "</li>\n"); } } - else { //If translations status NOT available... - print(" <li>...</li>\n"); + catch (Exception $ex) { //If problems with translations status... + print(" <li>English</li>\n"); } - print("</ul>\n"); ?> +</ul> <p>To change languages, select the desired language from the <span class="guimenu">View</span> → <span class="guimenuitem">Languages</span> menu choice.</p> Modified: trunk/Web/translations/status_trunk.php =================================================================== --- trunk/Web/translations/status_trunk.php 2009-06-25 16:35:07 UTC (rev 6866) +++ trunk/Web/translations/status_trunk.php 2009-06-25 17:00:44 UTC (rev 6867) @@ -6,14 +6,15 @@ $page->addRssFeed('status_trunk_rss.php'); $page->printHead('Translations Status (Unstable Trunk)', TAB_TRANSLATIONS); - $status = $page->convertXml2Array('status_trunk.xml'); $page->printRssHeading('Translations Status (Unstable Trunk)', 'status_trunk_rss.php'); - if (!empty($status)) { //If translations status available... - printTranslationsTOC($status); - printTranslationsStatus($status, 'http://winmerge.svn.sourceforge.net/viewvc/winmerge/trunk/Translations/'); - printTranslationsTranslators($status); + try { + $status = New TranslationsStatus('status_trunk.xml'); + $status->svnUrl = 'http://winmerge.svn.sourceforge.net/viewvc/winmerge/trunk/Translations/'; + $status->printTOC(); + $status->printStatus(); + $status->printTranslators(); } - else { //If translations status NOT available... + catch (Exception $ex) { //If problems with translations status... print("<p>The translations status is currently not available...</p>\n"); } $page->printFoot(); Modified: trunk/Web/translations/status_trunk_rss.php =================================================================== --- trunk/Web/translations/status_trunk_rss.php 2009-06-25 16:35:07 UTC (rev 6866) +++ trunk/Web/translations/status_trunk_rss.php 2009-06-25 17:00:44 UTC (rev 6867) @@ -1,10 +1,18 @@ <?php header('Content-type: application/rss+xml'); - include('../page.inc'); include('translations.inc'); - $page = new Page; - $status = $page->convertXml2Array('status_trunk.xml'); - printTranslationsStatusRSS($status, 'Trunk', 'http://winmerge.svn.sourceforge.net/viewvc/winmerge/trunk/Translations/', 'http://winmerge.org/translations/status_trunk.php'); + try { + $status = New TranslationsStatus('status_trunk.xml'); + $status->version = 'Unstable Trunk'; + $status->svnUrl = 'http://winmerge.svn.sourceforge.net/viewvc/winmerge/trunk/Translations/'; + $status->rssLink = 'http://winmerge.org/translations/status_trunk.php'; + $status->printRSS(); + } + catch (Exception $ex) { //If problems with translations status... + print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + print("<rss version=\"2.0\">\n"); + print("</rss>\n"); + } ?> \ No newline at end of file Modified: trunk/Web/translations/translations.inc =================================================================== --- trunk/Web/translations/translations.inc 2009-06-25 16:35:07 UTC (rev 6866) +++ trunk/Web/translations/translations.inc 2009-06-25 17:00:44 UTC (rev 6867) @@ -11,262 +11,300 @@ /** * ... - * - * Based partially on the TortoiseSVN Drupal module: - * @link http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/drupal-modules/module/tortoisesvn.module */ - function get_status_graph($count, $translated, $fuzzy, $untranslated) { - // Calculate width of bars - $wc = 150; - $wt = round($wc * $translated / $count); - $wf = round($wc * $fuzzy / $count); - $wu = round($wc * $untranslated / $count); + class TranslationsStatus { + public $version; + public $svnUrl; + public $rssLink; - // Make sure that each bar is at least 2px wide if its value is > 0 - if (($wt<2) && ($translated>0)) $wt=2; - if (($wf<2) && ($fuzzy>0)) $wf=2; - if (($wu<2) && ($untranslated>0)) $wu=2; + private $_status; - // Make sure total width stays constant by determining the widest bar - // and subtracting the width of the shorter bars from it. - if ($wt+$wf+$wu!=$wc) { - if ($wt>=$wf && $wt>=$wu) { - $wt = $wc-$wf-$wu; - } else if ($wf>=$wt && $wf>=$wu) { - $wf = $wc-$wt-$wu; - } else { - $wu = $wc-$wt-$wf; + /** + * Constructor + */ + public function __construct($filename) { + $this->version = ''; + $this->svnUrl = ''; + $this->rssLink = ''; + + $this->_status = null; + + if (file_exists($filename)) { //if XML file exists... + $xml = @simplexml_load_file($filename); + if ($xml) { //if XML file was valid... + $this->_status = $xml; + } + else //if XML file was NOT valid... + throw new Exception('File not valid.'); } + else //if XML file NOT exists... + throw new Exception('File not found.'); } - // Calculate percentages - $pt = ($translated * 100) / $count; - $pf = ($fuzzy * 100) / $count; - $pu = ($untranslated * 100) / $count; + /** + * ... + * + * Based partially on the TortoiseSVN Drupal module: + * @link http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/contrib/drupal-modules/module/tortoisesvn.module + */ + private function getStatusGraph($count, $translated, $fuzzy, $untranslated) { + // Calculate width of bars + $wc = 150; + $wt = round($wc * $translated / $count); + $wf = round($wc * $fuzzy / $count); + $wu = round($wc * $untranslated / $count); + + // Make sure that each bar is at least 2px wide if its value is > 0 + if (($wt<2) && ($translated>0)) $wt=2; + if (($wf<2) && ($fuzzy>0)) $wf=2; + if (($wu<2) && ($untranslated>0)) $wu=2; + + // Make sure total width stays constant by determining the widest bar + // and subtracting the width of the shorter bars from it. + if ($wt+$wf+$wu!=$wc) { + if ($wt>=$wf && $wt>=$wu) { + $wt = $wc-$wf-$wu; + } else if ($wf>=$wt && $wf>=$wu) { + $wf = $wc-$wt-$wu; + } else { + $wu = $wc-$wt-$wf; + } + } + + // Calculate percentages + $pt = ($translated * 100) / $count; + $pf = ($fuzzy * 100) / $count; + $pu = ($untranslated * 100) / $count; + + $temp = ""; + if ($wt > 0) + $temp .= "<img src=\"images/translated.png\" alt=\"Translated\" title=\"Translated: " . round($pt, 1) . "%\" width=\"$wt\" height=\"16\">"; + if ($wf > 0) + $temp .= "<img src=\"images/fuzzy.png\" alt=\"Fuzzy\" title=\"Fuzzy: " . round($pf, 1) . "%\" width=\"$wf\" height=\"16\">"; + if ($wu > 0) + $temp .= "<img src=\"images/untranslated.png\" alt=\"Untranslated\" title=\"Untranslated: " . round($pu, 1) . "%\" width=\"$wu\" height=\"16\">"; + + return $temp; + } - $temp = ""; - if ($wt > 0) - $temp .= "<img src=\"images/translated.png\" alt=\"Translated\" title=\"Translated: " . round($pt, 1) . "%\" width=\"$wt\" height=\"16\">"; - if ($wf > 0) - $temp .= "<img src=\"images/fuzzy.png\" alt=\"Fuzzy\" title=\"Fuzzy: " . round($pf, 1) . "%\" width=\"$wf\" height=\"16\">"; - if ($wu > 0) - $temp .= "<img src=\"images/untranslated.png\" alt=\"Untranslated\" title=\"Untranslated: " . round($pu, 1) . "%\" width=\"$wu\" height=\"16\">"; + /** + * ... + */ + private function getStatusGraphLegend() { + $temp = "<ul class=\"inline\">\n"; + $temp .= " <li><img src=\"images/translated.png\" alt=\"*\" width=\"16\" height=\"16\"> Translated</li>\n"; + $temp .= " <li><img src=\"images/fuzzy.png\" alt=\"*\" width=\"16\" height=\"16\"> Fuzzy</li>\n"; + $temp .= " <li><img src=\"images/untranslated.png\" alt=\"*\" width=\"16\" height=\"16\"> Untranslated</li>\n"; + $temp .= "</ul>\n"; + return $temp; + } - return $temp; - } - - /** - * ... - */ - function getTranslationsStatusGraphLegend() { - $temp = "<ul class=\"inline\">\n"; - $temp .= " <li><img src=\"images/translated.png\" alt=\"*\" width=\"16\" height=\"16\"> Translated</li>\n"; - $temp .= " <li><img src=\"images/fuzzy.png\" alt=\"*\" width=\"16\" height=\"16\"> Fuzzy</li>\n"; - $temp .= " <li><img src=\"images/untranslated.png\" alt=\"*\" width=\"16\" height=\"16\"> Untranslated</li>\n"; - $temp .= "</ul>\n"; - return $temp; - } - /** - * ... - */ - function printTranslationsTOC($xmlarray) { - $update = $xmlarray['STATUS'][0]['UPDATE'][0]['VALUE']; - $status = $xmlarray['STATUS'][0]['TRANSLATIONS']; - - $temp = "<p>Status from <strong>" . $update . "</strong>:</p>\n"; - $temp .= "<ul>\n"; - for ($i = 0; $i < count($status); $i++) { //For all projects... - $project = $status[$i]['ATTRIBUTES']['PROJECT']; - $temp .= " <li><a href=\"#" . $project ."\">" . $project . "</a></li>\n"; + * ... + */ + public function printTOC() { + $status = $this->_status; + + $temp = "<p>Status from <strong>" . $status->update . "</strong>:</p>\n"; + $temp .= "<ul>\n"; + foreach ($status->translations as $translations) { //for all projects... + $project = (string)$translations->attributes()->project; + $temp .= " <li><a href=\"#" . $project ."\">" . $project . "</a></li>\n"; + } + $temp .= " <li><a href=\"#translators\">Translators</a></li>\n"; + $temp .= "</ul>\n"; + print($temp); } - $temp .= " <li><a href=\"#translators\">Translators</a></li>\n"; - $temp .= "</ul>\n"; - print($temp); - } - - /** - * ... - */ - function printTranslationsStatus($xmlarray, $svnurl) { - global $page; - $status = $xmlarray['STATUS'][0]['TRANSLATIONS']; - - $temp = ''; - for ($i = 0; $i < count($status); $i++) { //For all projects... - $project = $status[$i]['ATTRIBUTES']['PROJECT']; - $temp .= "<h3><a name=\"" . $project . "\">" . $project . "</a></h3>\n"; - $temp .= "<table class=\"status\">\n"; - $temp .= " <tr>\n"; - $temp .= " <th class=\"left\">Language</th>\n"; - $temp .= " <th class=\"center\">Graph</th>\n"; - $temp .= " <th class=\"right translated\">Translated</th>\n"; - $temp .= " <th class=\"right fuzzy\">Fuzzy</th>\n"; - $temp .= " <th class=\"right untranslated\">Untranslated</th>\n"; - $temp .= " <th class=\"center\">Last Update</th>\n"; - $temp .= " </tr>\n"; - $translations = $status[$i]['TRANSLATION']; - $translations = $page->multisortArray($translations, 'LANGUAGE', SORT_ASC); - for ($j = 0; $j < count($translations); $j++) { //For all translations... - $translation = $translations[$j]; - $language_name = $translation['LANGUAGE'][0]['VALUE']; - if ($language_name != 'English') { //If NOT English... - $file_name = $translation['FILE'][0]['VALUE']; - $translation_update = $translation['UPDATE'][0]['VALUE']; - $strings = $translation['STRINGS'][0]; - $strings_count = $strings['COUNT'][0]['VALUE']; - $strings_translated = $strings['TRANSLATED'][0]['VALUE']; - $strings_fuzzy = $strings['FUZZY'][0]['VALUE']; - $strings_untranslated = $strings['UNTRANSLATED'][0]['VALUE']; + /** + * ... + */ + public function printStatus() { + $status = $this->_status; + + $temp = ''; + foreach ($status->translations as $translations) { //for all projects... + $project = (string)$translations->attributes()->project; + $temp .= "<h3><a name=\"" . $project . "\">" . $project . "</a></h3>\n"; + $temp .= "<table class=\"status\">\n"; + $temp .= " <tr>\n"; + $temp .= " <th class=\"left\">Language</th>\n"; + $temp .= " <th class=\"center\">Graph</th>\n"; + $temp .= " <th class=\"right translated\">Translated</th>\n"; + $temp .= " <th class=\"right fuzzy\">Fuzzy</th>\n"; + $temp .= " <th class=\"right untranslated\">Untranslated</th>\n"; + $temp .= " <th class=\"center\">Last Update</th>\n"; + $temp .= " </tr>\n"; + //TODO: Sort languages!? + foreach ($translations as $translation) { //for all translations... + $language_name = (string)$translation->language; - $temp .= " <tr>\n"; - $temp .= " <td class=\"left\"><a href=\"" . $svnurl . $project . '/' . $file_name . "\" rel=\"nofollow\">" . $language_name . "</a></td>\n"; - $temp .= " <td class=\"center\">" . get_status_graph($strings_count, $strings_translated, $strings_fuzzy, $strings_untranslated) . "</td>\n"; - $temp .= " <td class=\"right translated\">" . $strings_translated . "</td>\n"; - $temp .= " <td class=\"right fuzzy\">" . $strings_fuzzy . "</td>\n"; - $temp .= " <td class=\"right untranslated\">" . $strings_untranslated . "</td>\n"; - $temp .= " <td class=\"center\">" . $translation_update . "</td>\n"; - $temp .= " </tr>\n"; + $template = (bool)$translation->attributes()->template; + if ($template == false) { //If NO template... + $file_name = (string)$translation->file; + $translation_update = (string)$translation->update; + $strings = $translation->strings; + $strings_count = (int)$strings->count; + $strings_translated = (int)$strings->translated; + $strings_fuzzy = (int)$strings->fuzzy; + $strings_untranslated = (int)$strings->untranslated; + + $temp .= " <tr>\n"; + $temp .= " <td class=\"left\"><a href=\"" . $this->svnUrl . $project . '/' . $file_name . "\" rel=\"nofollow\">" . $language_name . "</a></td>\n"; + $temp .= " <td class=\"center\">" . $this->getStatusGraph($strings_count, $strings_translated, $strings_fuzzy, $strings_untranslated) . "</td>\n"; + $temp .= " <td class=\"right translated\">" . $strings_translated . "</td>\n"; + $temp .= " <td class=\"right fuzzy\">" . $strings_fuzzy . "</td>\n"; + $temp .= " <td class=\"right untranslated\">" . $strings_untranslated . "</td>\n"; + $temp .= " <td class=\"center\">" . $translation_update . "</td>\n"; + $temp .= " </tr>\n"; + } + else { //If template... + $template_language_name = (string)$translation->language; + $template_file_name = (string)$translation->file; + $template_translation_update = (string)$translation->update; + $template_strings_count = (int)$translation->strings->translated; + } } - else { //If English... - $english = $translations[$j]; - $english_file_name = $english['FILE'][0]['VALUE']; - $english_translation_update = $english['UPDATE'][0]['VALUE']; - $english_strings_count = $english['STRINGS'][0]['COUNT'][0]['VALUE']; - } + $temp .= " <tr>\n"; + $temp .= " <td class=\"left\"><a href=\"" . $this->svnUrl . $project . '/' . $template_file_name . "\" rel=\"nofollow\">" . $template_language_name . " (Template)</a></td>\n"; + $temp .= " <td class=\"center\"></td>\n"; + $temp .= " <td colspan=\"3\" class=\"center\">Total: " . $template_strings_count . "</td>\n"; + $temp .= " <td class=\"center\">" . $template_translation_update . "</td>\n"; + $temp .= " </tr>\n"; + $temp .= "</table>\n"; + $temp .= $this->getStatusGraphLegend(); } - $temp .= " <tr>\n"; - $temp .= " <td class=\"left\"><a href=\"" . $svnurl . $project . '/' . $english_file_name . "\" rel=\"nofollow\">English (Template)</a></td>\n"; - $temp .= " <td class=\"center\"></td>\n"; - $temp .= " <td colspan=\"3\" class=\"center\">Total: " . $english_strings_count . "</td>\n"; - $temp .= " <td class=\"center\">" . $english_translation_update . "</td>\n"; - $temp .= " </tr>\n"; - $temp .= "</table>\n"; - $temp .= getTranslationsStatusGraphLegend(); + print($temp); } - print($temp); - } - - /** - * ... - */ - function printTranslationsStatusRSS($xmlarray, $version, $svnurl, $link) { - global $page; - $update = $xmlarray['STATUS'][0]['UPDATE'][0]['VALUE']; - $status = $xmlarray['STATUS'][0]['TRANSLATIONS']; - - switch ($version) { - case 'Trunk': $version_title = 'Unstable Trunk'; break; - case 'Branch': $version_title = 'Stable Branch'; break; - default: $version_title = $version; - } - - $temp = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; - $temp .= "<rss version=\"2.0\">\n"; - $temp .= " <channel>\n"; - $temp .= " <title>WinMerge Translations Status (" . $version_title . ")</title>\n"; - $temp .= " <link>http://winmerge.org/</link>\n"; - $temp .= " <description>...</description>\n"; - for ($i = 0; $i < count($status); $i++) { //For all projects... - $project = $status[$i]['ATTRIBUTES']['PROJECT']; + /** + * ... + */ + public function printRSS() { + $status = $this->_status; - $temp .= " <item>\n"; - $temp .= " <title>" . $project ." Status [" . $update . "]</title>\n"; - $temp .= " <description>\n"; - $temp .= " <![CDATA[\n"; - $temp .= "<ul>\n"; - $translations = $status[$i]['TRANSLATION']; - $translations = $page->multisortArray($translations, 'LANGUAGE', SORT_ASC); - for ($j = 0; $j < count($translations); $j++) { //For all translations... - $translation = $translations[$j]; - $language_name = $translation['LANGUAGE'][0]['VALUE']; - if ($language_name != 'English') { //If NOT English... - $file_name = $translation['FILE'][0]['VALUE']; - $translation_update = $translation['UPDATE'][0]['VALUE']; - $strings = $translation['STRINGS'][0]; - $strings_untranslated = $strings['UNTRANSLATED'][0]['VALUE']; + $temp = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; + $temp .= "<rss version=\"2.0\">\n"; + $temp .= " <channel>\n"; + $temp .= " <title>WinMerge Translations Status (" . $this->version . ")</title>\n"; + $temp .= " <link>http://winmerge.org/</link>\n"; + $temp .= " <description>...</description>\n"; + foreach ($status->translations as $translations) { //for all projects... + $project = (string)$translations->attributes()->project; + + $temp .= " <item>\n"; + $temp .= " <title>" . $project ." Status [" . $status->update . "]</title>\n"; + $temp .= " <description>\n"; + $temp .= " <![CDATA[\n"; + $temp .= "<ul>\n"; + //TODO: Sort languages!? + foreach ($translations as $translation) { //for all translations... + $language_name = (string)$translation->language; - $temp .= " <li>\n"; - $temp .= " <a href=\"" . $svnurl . $project . '/' . $file_name . "\">" . $language_name . "</a> (" . $strings_untranslated . " Untranslated)\n"; - $temp .= " </li>\n"; + $template = (bool)$translation->attributes()->template; + if ($template == false) { //If NO template... + $file_name = (string)$translation->file; + $translation_update = (string)$translation->update; + $strings_untranslated = (int)$translation->strings->untranslated; + + $temp .= " <li>\n"; + $temp .= " <a href=\"" . $this->svnUrl . $project . '/' . $file_name . "\">" . $language_name . "</a> (" . $strings_untranslated . " Untranslated)\n"; + $temp .= " </li>\n"; + } } + $temp .= "</ul>\n"; + $temp .= " ]]>\n"; + $temp .= " </description>\n"; + $temp .= " <guid>" . $project . "_" . $status->update . "</guid>\n"; + $temp .= " <link>" . $this->rssLink . "#" . $project . "</link>\n"; + $temp .= " </item>\n"; } - $temp .= "</ul>\n"; - $temp .= " ]]>\n"; - $temp .= " </description>\n"; - $temp .= " <guid>" . $project . "_" . $update . "</guid>\n"; - $temp .= " <link>" . $link . "#" . $project . "</link>\n"; - $temp .= " </item>\n"; + $temp .= " </channel>\n"; + $temp .= "</rss>\n"; + print($temp); } - $temp .= " </channel>\n"; - $temp .= "</rss>\n"; - print($temp); - } - - /** - * ... - */ - function printTranslationsTranslators($xmlarray) { - global $page; - $projects = array(); - $languages = array(); - - $status = $xmlarray['STATUS'][0]['TRANSLATIONS']; - for ($i = 0; $i < count($status); $i++) { //For all projects... - $projects[$i] = $status[$i]['ATTRIBUTES']['PROJECT']; + /** + * ... + */ + public function printTranslators() { + $projects = array(); + $languages = array(); - $translations = $status[$i]['TRANSLATION']; - $translations = $page->multisortArray($translations, 'LANGUAGE', SORT_ASC); - for ($j = 0; $j < count($translations); $j++) { //For all translations... - $translation = $translations[$j]; - $language_name = $translation['LANGUAGE'][0]['VALUE']; + $status = $this->_status; + foreach ($status->translations as $translations) { //for all projects... + $project = (string)$translations->attributes()->project; + $projects[$project] = $project; - if ($language_name != 'English') { //If NOT English... - $translators = @$translation['TRANSLATORS'][0]['TRANSLATOR']; + //TODO: Sort languages!? + foreach ($translations as $translation) { //for all translations... + $language_name = (string)$translation->language; - $temp = ''; - for ($k = 0; $k < count($translators); $k++) { //For all translators... - $translator = $translators[$k]; - $translator_name = @$translator['NAME'][0]['VALUE']; - $translator_mail = @$translator['MAIL'][0]['VALUE']; - $maintainer = @$translator['ATTRIBUTES']['MAINTAINER']; + $template = (bool)$translation->attributes()->template; + if ($template == false) { //If NO template... + $temp = ''; + foreach ($translation->translators as $translators) { //for all translators... + foreach ($translators as $translator) { //for each translator... + $translator_name = utf8_decode((string)$translator->name); + $translator_mail = utf8_decode((string)$translator->mail); + $maintainer = (bool)$translator->attributes()->maintainer; + + if ($maintainer) + $temp .= "<strong title=\"Maintainer\">"; + if ($translator_mail != '') + $temp .= "<a href=\"mailto:" . $translator_mail . "\" title=\"" . htmlentities($translator_name) . " <" . $translator_mail . ">\">" . htmlentities($translator_name) . "</a>"; + else + $temp .= $translator_name; + if ($maintainer) + $temp .= "</strong>"; + $temp .= "<br>"; + } + } - if ($maintainer == '1') - $temp .= "<strong title=\"Maintainer\">"; - if ($translator_mail != '') - $temp .= "<a href=\"mailto:" . $translator_mail . "\" title=\"" . htmlentities($translator_name) . " <" . $translator_mail . ">\">" . htmlentities($translator_name) . "</a>"; - else - $temp .= $translator_name; - if ($maintainer == '1') - $temp .= "</strong>"; - $temp .= "<br>"; + $languages[$language_name][$project] = $temp; } } - - $languages[$language_name][$i] = $temp; } - } - - $temp = "<h3><a name=\"translators\">Translators</a></h3>\n"; - $temp .= "<table class=\"status\">\n"; - $temp .= " <tr>\n"; - $temp .= " <th class=\"left\">Language</th>\n"; - foreach ($projects as $project) { //For all projects... - $temp .= " <th class=\"left\">" . $project . "</th>\n"; - } - $temp .= " </tr>\n"; - foreach ($languages as $language_name => $language_translators) { //For all languages... + + $temp = "<h3><a name=\"translators\">Translators</a></h3>\n"; + $temp .= "<table class=\"status\">\n"; $temp .= " <tr>\n"; - $temp .= " <td class=\"left\">" . $language_name . "</td>\n"; - foreach ($projects as $project_key => $project_name) { //For all projects... - $temp .= " <td class=\"left\">" . @$language_translators[$project_key] . "</td>"; + $temp .= " <th class=\"left\">Language</th>\n"; + foreach ($projects as $project) { //For all projects... + $temp .= " <th class=\"left\">" . $project . "</th>\n"; } $temp .= " </tr>\n"; + foreach ($languages as $language_name => $language_translators) { //For all languages... + $temp .= " <tr>\n"; + $temp .= " <td class=\"left\">" . $language_name . "</td>\n"; + foreach ($projects as $project_key => $project_name) { //For all projects... + $temp .= " <td class=\"left\">" . @$language_translators[$project_key] . "</td>"; + } + $temp .= " </tr>\n"; + } + $temp .= "</table>\n"; + print($temp); } - $temp .= "</table>\n"; - print($temp); + + /** + * ... + */ + public function getLanguagesArray() { + $languages = array(); + + $status = $this->_status; + foreach ($status->translations as $translations) { //for all projects... + foreach ($translations as $translation) { //for all translations... + $language_name = (string)$translation->language; + + if (!in_array($language_name, $languages)) { //if language NOT exists... + $languages[] = $language_name; + } + } + } + + sort($languages, SORT_STRING); + return $languages; + } } ?> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |