Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Rodrigo Rodrigues dos Santos em 11/06/2005    [ 5071 hits ]

Login: rsantos, 40540 pontos

   


Descrição

Uma classe simples para seus sistemas/aplicações/sites serem multi linguagens sem replicar informações, apenas usando arquivos Xmls para as traduções.

Tem um exemplo do script usando o já conhecido Smarty Templates(smarty.php.net), para testar acesse o "index_smarty.php" mas lembrando que não tem os fontes do Smarty, pode pegar direto no site.

Espero que gostem, caso tenham alguma crítica/dúvida/sugestão entre em contato.

Sem mais, Rodrigo.

[ Download: phpi18n.zip ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

// class_phpi18n.php
<?php
/**
* Classe simples para internacionalizar sua aplicação em diversas linguagens, para cada linguagem existirá um arquivo Xml contendo as traduções.
* O script é muito simples(porém eficiente), ele lê o arquivo Xml de tradução, faz um loop e adiciona no array($arrayLabel) os índices(atributo <name>) e seus valores(atributo <value>).
* Através desse índice ele retorna a tradução da linguagem selecionada.
* O padrão de nomenclatura dos arquivos Xmls serão esses:
*    phpi18n.xml -> Linguagem padrão
*   phpi18n_xx_XX.xml -> Ondes xxXX são a abreviação da linguagem e país.
* Para maiores detalhes sobre abreviaturas dos países acessem(http://ftp.ics.uci.edu/pub/ietf/http/related/iso639.txt, http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html, http://www.iso.org/iso/en/prods-services/iso3166ma/index.html).
* Autor: Rodrigo Rodrigues
* Email: web-rodrigo@bol.com.br
* Versão: 1
* IMPORTANTE: PRECISA TER INSTALADO O PHP 5 PORQ USA O COMPONENTE SimpleXml(http://br.php.net/manual/pt_BR/ref.simplexml.php).
*/
class PhpI18N {
   
   /**
   * Variável Array privada com os valores da tradução.
   */
   private $arrayLabel = array();
   
   /**
   * Variável privada com o nome default do arquivo Xml de tradução.
   */
   private $xmlFile;
   
   /**
   * Variável privada com o nome da linguagem.
   */
   private $language;
   
   /**
   * Variável privada com o nome do país.
   */
   private $country;
   
   /**
   * Variável privada com o nome do arquivo Xml de tradução.
   */
   private $xml;
   
   /**
   * Método construtor para configurar a linguagem e o país de tradução, caso não encontre o arquivo Xml de tradução entra no default(Português).
   */
   function __construct($xmlFile = "", $language = "", $country = "") {
      
      if(empty($xmlFile)){
         
         $xmlFile = "phpi18n";
         
      }
      
      $this->language = $language;
      
      $this->country = $country;
      
      $this->xml = $xmlFile;
      
      if(!(empty($this->language) && empty($this->country))){
         
         $this->xml .= "_".$this->language."_".$this->country;
         
      }
      
      $this->xml .= ".xml";
      
      $this->loadXml($this->xml);
      
   }
   
   /**
   * Método para carregar o xml da linguagem selecionada.
   */
   private function loadXml($xml) {
      
      if(!file_exists($xml)){
         
         $xml = "phpi18n.xml"; // Language Default
         
      }
      
      $simpleXml = @simplexml_load_file($xml);
      
      if(!$simpleXml){
         
         echo "Não existe tradução padrão.";
         
         exit();
         
      }

      foreach($simpleXml->label as $loadLabel){
         
         $this->arrayLabel["$loadLabel->name"] = $loadLabel->value;
         
      }
      
   }
   
   /**
   * Método que retorna o nome do arquivo Xml.
   */
   public function getXml() {
      
      return $this->xml;
      
   }
   
   /**
   * Método que retorna o valor da tradução.
   */
   public function getLabel($keyName) {

      return utf8_decode($this->label($keyName));
      
   }
   
   /**
   * Método privado que verifica se o parâmetro existe na chave(índice) do array, caso exista retorna seu valor.
   */
   private function label($keyName) {
      
      if($this->arrayLabel == null || $this->arrayLabel[$keyName] == null ){

         return "empty";
         
      }
      
      return $this->arrayLabel[$keyName];
      
   }
   
   /**
   * Método para destruir o array de tradução.
   */
   function __destruct() {
      
      unset($this->arrayLabel);
      
   }
   
}
?>

// Exemplo
<?php
include_once("class_phpi18n.php");

$phpI18N = new PhpI18N("", $_GET['lan'], $_GET['cou']);
echo $phpI18N->getLabel("title");
?>

Scripts recomendados
   Script Linux recomendado Código de Barras
   Script Linux recomendado evePHP: Classe para desenvolvimento PHP
   Script Linux recomendado Fast Template CVS revision 1.2.0
   Script Linux recomendado Transferir dados do Excel ou TXT para BD utilizando PHP
   Script Linux recomendado Redimensionador de fotos em PHP

Comentários
[1] Comentário enviado por augusto_hp em 18/09/2008 - 18:20h:

Você conhece as funções do próprio PHP para internacionalização, que são por acaso as mesmas funções que as aplicações Linux e muitas outras usam ?
http://www.php.net/gettext


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.