[Frhed-commits] SF.net SVN: frhed:[827] trunk/Web/engine
Brought to you by:
kimmov
From: <ge...@us...> - 2009-09-21 09:18:34
|
Revision: 827 http://frhed.svn.sourceforge.net/frhed/?rev=827&view=rev Author: gerundt Date: 2009-09-21 09:18:27 +0000 (Mon, 21 Sep 2009) Log Message: ----------- Web: Backport translation engine changes from WinMerge (canonical link for base language, forcing URL parameter) Modified Paths: -------------- trunk/Web/engine/engine.inc trunk/Web/engine/page.inc trunk/Web/engine/simpletranslate.inc Modified: trunk/Web/engine/engine.inc =================================================================== --- trunk/Web/engine/engine.inc 2009-09-21 09:05:20 UTC (rev 826) +++ trunk/Web/engine/engine.inc 2009-09-21 09:18:27 UTC (rev 827) @@ -20,7 +20,7 @@ $translations->addLanguage('de', __('German'), $languagesdir . 'de.po'); $translations->addLanguage('fr', __('French'), $languagesdir . 'fr.po'); $translations->addLanguage('nl', __('Dutch'), $languagesdir . 'nl.po'); - if (!$translations->detectLanguageFromUrl()) { + if (!$translations->detectLanguageFromUrl()) { //if NOT detect language from URL... $translations->detectLanguageFromBrowser(); } Modified: trunk/Web/engine/page.inc =================================================================== --- trunk/Web/engine/page.inc 2009-09-21 09:05:20 UTC (rev 826) +++ trunk/Web/engine/page.inc 2009-09-21 09:18:27 UTC (rev 827) @@ -15,14 +15,13 @@ * ... */ class Page { - var $_lang, $_title, $_charset; + var $_title, $_charset; var $_description, $_keywords, $_rssfeeds; /** * Constructor */ function Page() { - $this->_lang = __('en'); $this->_title = ''; $this->_charset = 'UTF-8'; $this->_description = ''; @@ -31,13 +30,6 @@ } /** - * set the language from the page - */ - function setLang($lang) { - $this->_lang = $lang; - } - - /** * set the title from the page */ function setTitle($title) { @@ -76,9 +68,11 @@ * print the head from the page */ function printHead($title = '') { + global $translations; + $this->_title = $title; $temp = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n"; - $temp .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . $this->_lang . "\">\n"; + $temp .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"" . $translations->getActiveLanguageId() . "\">\n"; $temp .= "<head>\n"; if ($this->_title != '') { $temp .= " <title>" . $this->_title . " - " . __('Frhed') . "</title>\n"; @@ -99,6 +93,9 @@ foreach ($this->_rssfeeds as $rssurl => $rsstitle) { //for all RSS feeds... $temp .= " <link rel=\"alternate\" type=\"application/rss+xml\" title=\"" . $rsstitle . "\" href=\"" . $rssurl . "\" />\n"; } + if ($translations->isBaseLanguage()) { //if base language... + $temp .= " <link rel=\"canonical\" href=\"" . $translations->getLink() . "\"/>\n"; + } $temp .= "</head>\n"; $temp .= "<body>\n"; $temp .= "<div id=\"wrapper\">\n"; @@ -250,10 +247,10 @@ $languages = $translations->getLanguages(); foreach ($languages as $language) { //for all languages... if ($translations->isActiveLanguage($language)) { //if current language... - $temp .= " <li><strong><a href=\"" . $translations->getLink($language) . "\">" . __($language->getName()) . "</a></strong></li>\n"; + $temp .= " <li><strong><a href=\"" . $translations->getLink($language, true) . "\">" . __($language->getName()) . "</a></strong></li>\n"; } else { //if NOT current language... - $temp .= " <li><a href=\"" . $translations->getLink($language) . "\">" . __($language->getName()) . "</a></li>\n"; + $temp .= " <li><a href=\"" . $translations->getLink($language, true) . "\">" . __($language->getName()) . "</a></li>\n"; } } $temp .= "</ul>\n"; Modified: trunk/Web/engine/simpletranslate.inc =================================================================== --- trunk/Web/engine/simpletranslate.inc 2009-09-21 09:05:20 UTC (rev 826) +++ trunk/Web/engine/simpletranslate.inc 2009-09-21 09:18:27 UTC (rev 827) @@ -14,6 +14,7 @@ */ class SimpleTranslate { var $_urlparameter; + var $_forceurlparameter; var $_languages; var $_baselanguageid; var $_activelanguageid; @@ -24,6 +25,7 @@ */ function SimpleTranslate() { $this->_urlparameter = 'lang'; + $this->_forceurlparameter = false; $this->_languages = array(); $this->_baselanguageid = ''; $this->_activelanguageid = ''; @@ -107,6 +109,20 @@ } /** + * get forcing of the URL parameter... + */ + function getForceUrlParameter() { + return $this->_forceurlparameter; + } + + /** + * set forcing of the URL parameter... + */ + function setForceUrlParameter($force) { + $this->_forceurlparameter = $force; + } + + /** * add a language... */ function addLanguage($id, $name, $pofile = '') { @@ -116,7 +132,9 @@ $this->_baselanguageid = $id; } else { //if normal language... - $this->_languages[$id] = new SimpleTranslateLanguage($id, $name, $pofile); + if (file_exists($pofile) == true) { //if the PO file exists... + $this->_languages[$id] = new SimpleTranslateLanguage($id, $name, $pofile); + } } } @@ -139,6 +157,20 @@ } /** + * get the languages count... + */ + function getLanguagesCount() { + return count($this->_languages); + } + + /** + * get the base language ID... + */ + function getBaseLanguageId() { + return $this->_baselanguageid; + } + + /** * get the base language... */ function getBaseLanguage() { @@ -148,14 +180,31 @@ /** * check if the language is the base language... */ - function isBaseLanguage($language) { - if ($language == $this->getBaseLanguage()) { //if base language... - return true; + function isBaseLanguage($language = null) { + if (isset($language)) { //if language committed... + if ($language == $this->getBaseLanguage()) { //if base language... + return true; + } } + else { //if language NOT committed... + if ($this->_baselanguageid == $this->_activelanguageid) { //if base language is active... + return true; + } + } return false; } /** + * get the active language ID... + */ + function getActiveLanguageId() { + if ($this->_activelanguageid != '') { + return $this->_activelanguageid; + } + return $this->_baselanguageid; + } + + /** * get the active language... */ function getActiveLanguage() { @@ -225,7 +274,7 @@ */ function prepareLink($link) { $activelanguage = $this->getActiveLanguage(); - if (strtolower(get_class($activelanguage)) == 'simpletranslatelanguage') { //if normal language... + if ((strtolower(get_class($activelanguage)) == 'simpletranslatelanguage') || ($this->_forceurlparameter == true)) { //if normal language OR forcing URL parameter... return $this->appendUrlParameter($link, $this->_urlparameter, $activelanguage->getId()); } else { //if base language... @@ -236,14 +285,18 @@ /** * get the language link... */ - function getLink($language) { + function getLink($language = null, $forceurlparameter = null) { $phpself = str_replace('index.php', '', $_SERVER['PHP_SELF']); - if (strtolower(get_class($language)) == 'simpletranslatelanguage') { //if normal language... - return $phpself . '?' . $this->_urlparameter . '=' . $language->getId(); + if (isset($language)) { //if language committed... + $forceing = $this->_forceurlparameter; + if (isset($forceurlparameter)) { //if force URL parameter committed... + $forceing = $forceurlparameter; + } + if ((strtolower(get_class($language)) == 'simpletranslatelanguage') || ($forceing == true)) { //if normal language OR forcing URL parameter... + return $phpself . '?' . $this->_urlparameter . '=' . $language->getId(); + } } - else { //if base language... - return $phpself; - } + return $phpself; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |