<mySearch ⁄>
<mySnippets order="rand" ⁄>
<myContacts ⁄><email ⁄>
<windows live messenger ⁄>
<myCurriculum type="pdf" ⁄>
<myBlog show="last" ⁄>
<myNews show="rand" ⁄>
<myNews type="cat" ⁄>
<myQuote order="random" ⁄>Transportai um punhado de terra todos os dias e fareis uma montanha
<myPhoto order="random" ⁄>
<myAdSense ⁄>
<myVisitorsMap ⁄>
-- Table "dados_linguagem" DDL CREATE TABLE `dados_linguagem` ( `id` tinyint(4) UNSIGNED NOT NULL AUTO_INCREMENT, `txt_pt` varchar(255) character SET latin1 NOT NULL DEFAULT '', `txt_en` varchar(255) character SET latin1 NOT NULL DEFAULT '', `txt_jp` varchar(255) character SET latin1 NOT NULL DEFAULT '', `txt_fr` varchar(255) character SET latin1 NOT NULL DEFAULT '', `txt_es` varchar(255) character SET latin1 NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- Insert Statment -- INSERT INTO dados_linguagem (id, txt_pt, txt_en, txt_jp, txt_fr, txt_es) VALUES( 1, "O Lorem Ipsum é texto aleatório da indústria tipográfica e de impressão. O Lorem Ipsum tem vindo a ser o texto standard usado por estas indústrias desde o ano de 1500, quando uma misturou os caracteres de um texto para criar um espécime de livro...", "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book...", "Domo arigatou gozaimasu! ^_^''", "Le Lorem Ipsum est simplement du faux texte employé dans la composition et la mise en page avant impression. Le Lorem Ipsum est le faux texte standard de l'imprimerie depuis les années 1500, quand un peintre anonyme assembla ensemble des morceaux de ...", "Lorem Ipsum es simplemente el texto de relleno de las imprentas y archivos de texto. Lorem Ipsum ha sido el texto de relleno estándar de las industrias desde el año 1500, cuando un impresor (N. del T. persona que se dedica a la imprenta) desconocido..." );
*{padding: 0; margin: 0;} body{ font-family: Verdana, Tahoma, Arial, sans-serif;font-size: 62.5%; color: #000;background: #fff;text-align: justify;margin-top: .5em; } div#container{ margin: 0 auto; width: 40em; padding: .8em; border: solid 0.6em #3F4C6B; overflow: auto; } div#flags{ text-align: right; padding: .4em; border: solid 0.4em #6BBA70; float: right; } span, strong{font-size: 1.1em;color: #D01F3C;} strong{color: #356AA0 !important; font-weight: 900;} a{text-decoration: none;outline: 0;} img.flag{width: 1.6em; height: 1.1em;border: solid .2em #6BBA70;} img.selected{border: solid .2em #FF7400 !important;} ul#flags_list{list-style-type: none;} ul#flags_list li{display: inline;margin: 0 .4em;}
<?php /** * Class Language * * @author pedrocorreia.net * */ class Language{ private $_short_description; private $_description; private $_flag; /** * Método construtor * * @param String - Breve descrição da linguagem * @param String - Descrição completa da linguagem * @param String - Nome da imagem da bandeira */ public function __construct($short,$full,$flag){ $this->Short($short); $this->Full($full); $this->Flag($flag); } /** * Getter/ Setter - Breve descrição da linguagem * * nota: deverão ser unicamente 2 letras * * @param String * @return String */ public function Short($value=""){ if($value) $this->_short_description=$value; else return $this->_short_description; } /** * Getter/ Setter - Descrição completa da linguagem * * @param String * @return String */ public function Full($value=""){ if($value) $this->_description=$value; else return $this->_description; } /** * Getter/ Setter - Nome da imagem da bandeira * * @param String * @return String */ public function Flag($value=""){ if($value) $this->_flag=$value; else return $this->_flag; } } ?>
<?php include_once("class.Language.php"); /** * Class que permite gerir a linguagem no site * * @author pedrocorreia.net */ class MyLanguage{ private $_cur_lang; private $_arr_langs; private $_ck_lang="my_current_language"; private static $_instance; public static $DefaultLang="pt"; public static $PT="pt"; public static $JP="jp"; public static $EN="en"; public static $FR="fr"; public static $ES="es"; /** * Método construtor * * @param String [Optional] $lang */ public function __construct($lang="") { //Singleton Pattern if(!self::$_instance) self::$_instance=$this; else return ; //criar linguagens disponiveis $this->_arr_langs=array(); $this->_arr_langs[self::$PT]=new Language(self::$PT,"Português","pt.png"); $this->_arr_langs[self::$JP]=new Language(self::$JP,"Japanese","jp.png"); $this->_arr_langs[self::$EN]=new Language(self::$EN,"English","en.png"); $this->_arr_langs[self::$FR]=new Language(self::$FR,"Français","fr.png"); $this->_arr_langs[self::$ES]=new Language(self::$ES,"Español","es.png"); //guardar a linguagem, caso tenha sido passada essa informação if($lang) {$this->SetLanguage($lang);} //caso contrário, tentar obter a linguagem já existente else{$this->_SetCurLanguage();} } /** * Atribuir linguagem. * * Caso a linguagem atribuida não seja válida, * será atribuida a linguagem por omissão * * @param String $lang */ public function SetLanguage($lang){ if($this->IsValid($lang)) $this->_cur_lang=$lang; else $this->_cur_lang=self::$DefaultLang; $this->_SaveLanguage(); } /** * Obter linguagem * * @return Language */ public function Language(){return $this->_arr_langs[$this->_cur_lang];} /** * Verificar se a linguagem é válida * * @param String $lang * @return Boolean */ public function IsValid($lang){return array_key_exists($lang,$this->_arr_langs);} /** * Método privado * * Ler e atribuir informação sobre a linguagem selecionada (cookie) */ private function _SetCurLanguage(){$this->SetLanguage($_COOKIE[$this->_ck_lang]);} /** * Método privado * * Guardar numa cookie a informação sobre a linguagem corrente * */ private function _SaveLanguage(){ if(!$this->_cur_lang) throw new Exception("LANG_NOT_DEFINED"); setcookie($this->_ck_lang,$this->_cur_lang,strtotime("+128 week")); } /** * Obter bandeiras com respectivos links * * nota: o url será sempre mantido * * @return String */ public function GetFlags(){ $query_string=$_SERVER['QUERY_STRING']; if($query_string) { $query_string="?$query_string"; //remover da query_string os set_lang, caso existam $query_string=$this->_remove_querystring_var($query_string,"set_lang"); $query_string=str_replace("&","&",$query_string); } $query_string_separator=($query_string)?"&":"?"; foreach ($this->_arr_langs as $key=>$lang){ $img_class=($key==$this->_cur_lang)?"selected":""; $img_title=" alt='{$lang->Full()}' title='{$lang->Full()}' "; $img="<img class='flag $img_class' src='images/{$lang->Flag()}' $img_title />"; $link_flag="<a href='{$query_string}{$query_string_separator}set_lang=$key'>$img</a>"; $str.="<li>$link_flag</li>"; } return "<div id='flags'><ul id='flags_list'>$str</ul></div>"; } /** * Método privado * * Remover variável da query string * * Adaptado do seguinte url: http://www.ilovejackdaniels.com/php/querystring-functions/ * * @param String $url * @param String $key * @return String */ private function _remove_querystring_var($url, $key) { $url = preg_replace('/(.*)(\?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); $url = substr($url, 0, -1); return ($url); } } ?>
<?php function GenerateDummyInfo($lang){ $db=connectDB(); $iSQL="select id, txt_$lang from dados_linguagem where id='1' "; $sql=mysql_query($iSQL) or die(mysql_error()); $myrow=mysql_fetch_assoc($sql); mysql_close($db); return $myrow["txt_$lang"]; } function connectDB(){ $db=mysql_connect("localhost","root",""); mysql_select_db("test",$db); return $db; } ?>
<?php include_once("Class/class.MyLanguage.php"); //criar objecto $my_language=new MyLanguage(); $set_lang=$_REQUEST["set_lang"]; //especificar nova linguagem, caso tenha sido especificado if($set_lang){ $my_language->SetLanguage($set_lang); } ?>
<?php include_once("ProcessRequests.php"); include_once("generate_dummy_info.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>MyLanguage</title> <link href="css/style.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="container"> <?php echo $my_language->GetFlags(); echo "<span>Linguagem Selecionada:</span> <strong>{$my_language->Language()->Full()}</strong>"; echo "<br/>"; echo "<span>Abreviatura:</span> <strong>{$my_language->Language()->Short()}</strong>"; echo "<br/><br/>"; echo GenerateDummyInfo($my_language->Language()->Short()); echo "<br/><br/>"; echo "<span>QueryString=</span>\"<strong>".htmlentities($_SERVER['QUERY_STRING'])."</strong>\""; ?> </div> </body> </html>