2010-07-19 19 views
0

J'ai un peu de mal à faire fonctionner gettext. J'ai fait un simple fichier de test où j'appelle translate.php et echo T _ ("XXXXX") et Il est traduit, mais quand j'essaie d'utiliser echo T_ dans une fonction cela ne fonctionne pas ..gettext fonctionne dans un fichier et pas l'autre?

traduire. php:

<?php 

error_reporting(E_ALL | E_STRICT); 

// define constants 
define('PROJECT_DIR', realpath('./functions/')); 
//define('LOCALE_DIR', PROJECT_DIR .'/functions/locale'); 
define('LOCALE_DIR', PROJECT_DIR .'locale'); 
define('DEFAULT_LOCALE', 'en_US'); 

require_once('gettext.inc'); 

$supported_locales = array('en_US', 'sr_CS', 'de_CH'); 
$encoding = 'UTF-8'; 

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE; 

// gettext setup 
T_setlocale(LC_MESSAGES, $locale); 
// Set the text domain as 'messages' 
$domain = 'messages'; 
T_bindtextdomain($domain, LOCALE_DIR); 
T_bind_textdomain_codeset($domain, $encoding); 
T_textdomain($domain); 

//header("Content-type: text/html; charset=$encoding"); 
?> 

fichier de test de travail:

<?php 
require("translate.php"); 

echo T_("test"); 

?> 

C'était juste un test pour voir si cela a fonctionné et le mot "test" se est traduit comme je l'espérais réaliser. Cela devient un peu plus compliqué avec les fichiers php réels.

info.php

<?php 

    require("functions\info_functions.php"); 

    (...) 

    class infopage extends Page 
    { 
     public function display() 
     { 
     (...) 

     displayInfo(); 

     (...) 
     } 
    } 


    $homepage = new infopage(); 
    $homepage->display(); 

?> 

info_functions.php - Ici l'écho ne soit pas traduit!

<?php 

require("translate.php"); 

echo T_("test"); 

      function displayInfo() 
      { 

      (...) 

      echo T_("test"); 

      (...) 

      } 

?> 

Répondre

1

Vérifiez si votre variable d'environnement LOCALE_DIR est en fait pointer à l'endroit correct dans displayInfo(). De:

// define constants 
define('PROJECT_DIR', realpath('./functions/')); 
//define('LOCALE_DIR', PROJECT_DIR .'/functions/locale'); 
define('LOCALE_DIR', PROJECT_DIR .'locale'); 

On dirait qu'il peut être un chemin relatif qui ne fonctionne pas à l'intérieur info_functions.php car il est dans un répertoire différent de vos autres fichiers (test).