By: glachant
Date: 2009-11-20
Time: 00:30
|
multi-langues et LoadTemplate KO
Bonjour,
je capitule après plusieurs heures sans trouver d'où vient mon problème. Je veux gérer du multilangues donc je passe par URL le paramètre lang=fr
au cas où, pour info, mon site est en utf-8
voilà ma page template (pour faire simple) :
<body>
[var.TXT]
</body>
mon script qui charge ce template :
if (isset($_GET['lang']) and $_GET['lang']=='fr')
$lang = 'fr';
elseif(isset($_GET['lang']) and $_GET['lang']=='en')
$lang = 'en';
elseif(isset($HTTP_ACCEPT_LANGUAGE) and $HTTP_ACCEPT_LANGUAGE<>""){
$lang = explode(",", $HTTP_ACCEPT_LANGUAGE);
$lang = StrToLower(substr(chop($lang[0]),0,2));
LoadTemplate($tpl_f_content, $lang);
et la fonction LoadTemplate :
function LoadTemplate($template, $lang){
// La norme retenue pour la gestion des fichiers langues est la suivante :
// 1- Chemin d'accès au fichier est le suivant : [racine_site]/lang/[code_langue]
// 2- Nom du fichier langue du template chargé = [nom_template]_[code_langue].php
// Exemple : index.tpl ==> /lang/fr/index_fr.php
//Construction du nom du fichier langue concerné
$tpl_lang_filename = explode("/", $template);
$tpl_lang_filename = $tpl_lang_filename[count($tpl_lang_filename)-1];
$tpl_lang_filename = explode(".", $tpl_lang_filename);
$tpl_lang_filename = $tpl_lang_filename[0];
$tpl_lang_filename = $tpl_lang_filename."_".$lang.".php";
$tpl_lang_filename = $_SERVER["DOCUMENT_ROOT"]."lang/".$lang."/".$tpl_lang_filename;
//Chargement du fichier contenant les textes du template dans la langue choisie
include($tpl_lang_filename);
//Chargement du template avec tbs
$tbs->LoadTemplate($template, CHARSET);
le contenu du fichier langue (un fichier php) :
<?php
$TXT = 'Mon texte de bienvenue en Français avec accents "éê" et caractères spéciaux |#~&';
?>
et voilà le résultat :
TinyButStrong Error in field [var.TXT...] : the PHP global variable named 'TXT' does not exist or is not set yet. This message can be cancelled using parameter 'noerr'.
pourtant quand je fais un print ($TXT) avant $tbs->LoadTemplate, il m'affiche bien mon texte (donc il a bien trouvé le fichier)...ça a marché une fois (j'en suis certain)...mais ça marche plus et je vois pas ce que j'ai changé....HEEEELLP !
je déséspère !
Merci de votre aide,
|
By: glachant
Date: 2009-11-20
Time: 00:47
|
Re: multi-langues et LoadTemplate KO
finalement j'ai trouvé mon erreur...comme quoi, faut jamais lacher !
dans
$tbs->LoadTemplate($template, CHARSET);
j'ai changé le $template qui n'était pas la bonne variable !
et dans mon fichier de langue j'ai remplacé
$TXT = 'mon texte';
par
$GLOBALS['TXT'] = 'mon texte';
...comme ça au moins ça pourra donner des idées à certains
|