Yo experimente una vez con clase que llama php-gettext-1.0.7 (Ahora van por la versión 1.0.11) https://launchpad.net/php-gettext/, en su ejemplo ponen la siguiente función.
Código:
<?php
include "../API/php-gettext-1.0.7/streams.php";
include "../API/php-gettext-1.0.7/gettext.php";
//Esta cabecera s�lo es v�lida para idiomas con car�cteres UTF-8
header("Content-type: text/html; charset=UTF-8");
//Alias para manejar traducciones
function __($my_text) {
global $gettext_cache;
if (is_null($gettext_cache)) return $my_text;
else return $gettext_cache->translate($my_text);
}
//Alias para manejar traducciones con singular y prural
function _ngettext($my_text1,$my_text2,$n) {
global $gettext_cache;
if (is_null($gettext_cache)) if ($n>1) return $my_text2; else return $my_text1;
else return $gettext_cache->ngettext($my_text1,$my_text2,$n);}
if ($_GET['language']) $_SESSION['language'] = $_GET['language'];
if (!array_key_exists('language',$_SESSION))$_SESSION['language'] = 'es_es';
if (file_exists("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo")) {
$gettext_cache = new gettext_reader( new CachedFileReader("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo"));
}
?>
Cómo ves utilizan la siguiente función para localizar la traducción.
Código:
if (file_exists("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo")) {
$gettext_cache = new gettext_reader( new CachedFileReader("locale/".$_SESSION["language"]."/LC_MESSAGES/messages.mo"));
}
Tal vez si cambias a la estructura de directorios que necesitas te puede servir.
Un saludo es sólo una idea.
No lo he probado