Categories > TinyButStrong general (FR) >

multi-langues et LoadTemplate KO

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
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