Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > phplib et phpBB
phplib et phpBB Forum d'entraide sur les moteurs de templates phplib et phpBB. Avant de poster -> FAQ gabarits phpBB2, Cours phpBB2 et Sources phpBB2
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2006, 02h28   #1
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Par défaut [phplib] Insertion code PHP

Bonjour,

Pour des des raisons de simplicité j'ai concu un site web avec des fichiers de langues que je parse dès l'affichage de l'index.
J'utilise la bibliotheque phplib qui s'avere relativement rapide. Mais le problème c'est que je suis obligé de définir des variables (par exemple {PRIX}) pour chaque élément du template correspondant à une occurence dans le fichier de langue ( {PRIX} => FR_PRIX ou {PRIX} => EN_PRIX).

c'est pour cela que je souhaite juste, afin d'eviter de passer par des variables, inserer directement le code php correspondant à l'element du fichier de langue.

Je voudrai savoir si cela est possible en modifiant simplement la classe Template ou autre ??

En esperant avoir ete clair

Merci beaucoup d'avance ^^

Tom
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2006, 10h36   #2
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Je suis donc obligé de passer par un autre moteur de template ??
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2006, 11h01   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Peut être ! Comment gérez-vous le support des différentes langues au niveau du stockage des textes (inclusion d'un tableau, ...) ? Et les variables dynamiques ne pourraient-elles pas vous aider quelque peu ?


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2006, 10h41   #4
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Citation:
Envoyé par julp
Peut être ! Comment gérez-vous le support des différentes langues au niveau du stockage des textes (inclusion d'un tableau, ...) ? Et les variables dynamiques ne pourraient-elles pas vous aider quelque peu ?


Julp.
Je gere les langues en lisant un fichier et en declarant les messages, et les morceaux de texte comme constantes a la volée.

edit: comment faire avec les variables dynamaique ?? je ne vois pas
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 20h01   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ce que vous voudriez faire n'est plus dans la logique des templates, donc sans modifications je ne pense pas que ce soit possible. Vous utilisez des constantes et malheureusement vous ne pouvez dans ce cas avoir recours aux variables dynamiques (un exemple que je n'ai pas testé) :
Code :
1
2
3
4
5
 
$langue = 'FR'; // Extrait d'un cookie, d'une session ou des en-têtes
$FR_PRIX = 'prix';
$EN_PRIX = 'price';
echo ${$langue . '_PRIX'};
N'avez-vous pas trouvé d'autres solutions : définir les mêmes variables pour chaque langue (vu qu'une seule langue est utilisée à la fois) ou encore deux fichiers templates, ... ? (ce ne sont que des "idées").

Faisons tous un brainstorming et on trouvera bien une solution propre et évolutive.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 21h37   #6
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Citation:
Envoyé par julp
Ce que vous voudriez faire n'est plus dans la logique des templates, donc sans modifications je ne pense pas que ce soit possible. Vous utilisez des constantes et malheureusement vous ne pouvez dans ce cas avoir recours aux variables dynamiques (un exemple que je n'ai pas testé) :
Code :
1
2
3
4
5
 
$langue = 'FR'; // Extrait d'un cookie, d'une session ou des en-têtes
$FR_PRIX = 'prix';
$EN_PRIX = 'price';
echo ${$langue . '_PRIX'};
N'avez-vous pas trouvé d'autres solutions : définir les mêmes variables pour chaque langue (vu qu'une seule langue est utilisée à la fois) ou encore deux fichiers templates, ... ? (ce ne sont que des "idées").

Faisons tous un brainstorming et on trouvera bien une solution propre et évolutive.


Julp.

Merci pour votre réponse.
En effet, j'utilise les meme variables pour les langues. Je me suis basé sur dotclear qui s'avere assez simple et m'a plu. Apres je ne sais vraiment pas comment faire sachant que phplib est tres simple et que passer par un autre moteur de template serait une perte de tps considérable.

Merci
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 11h14   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par V_R46
En effet, j'utilise les meme variables pour les langues. Je me suis basé sur dotclear qui s'avere assez simple et m'a plu.
Euh c'est pas ce que j'ai pu lire :
Citation:
Envoyé par V_R46
Mais le problème c'est que je suis obligé de définir des variables (par exemple {PRIX}) pour chaque élément du template correspondant à une occurence dans le fichier de langue ( {PRIX} => FR_PRIX ou {PRIX} => EN_PRIX).
Ne mélangeons pas variables template/PHP et variables (PHP)/constantes.

Citation:
Envoyé par V_R46
Apres je ne sais vraiment pas comment faire sachant que phplib est tres simple et que passer par un autre moteur de template serait une perte de tps considérable.
Ce n'est pas ce que j'ai proposé, et l'utilisation d'un autre système de template vous raménera très probablement au même problème.

Smarty (un moteur de template bien connu) sait prendre des variables d'un fichier de configuration, vous pourriez reprendre ce système ou quelque chose de similaire. Gettext, librairie/extension qui permet de gérer l'internationalisation, vous permettrait d'éviter de passer par des variables/constantes.


Julp.

PS : je n'ai jamais utilisé Dotclear.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 11h29   #8
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Voici une partie d'un de mes fichiers de langues :

;Error login
Il semblerai que les informations d'identification saisies soient incorrectes, recommencez.

;Bad page
La page que vous demandez n'existe pas ou est indisponible, veuillez nous en excuser.

;Die
Mauvaise requête. Veuillez envoyer ce message à un administrateur.


Je lis ce fichiers et je peux utiliser les messages comme suit :

echo __('Bad page');

ce qui fait que dans une template je suis obligé de faire n variables template pour afficher n messages. Ce qui ne s'avere pas tres propres je trouves.


Ce que je voudrai c'est juste eivter les varaibles pour eviter de faire un assign_vars() avec un tableau de 150 entrées. Mais je ne sais pas comment faire.
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 12h15   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Votre méthode ressemble à priori beaucoup au fonctionnement de gettext.

Si vous ne voulez pas faire manuellement des assign_vars, je vous propose d'ajouter toutes vos variables langues (j'espère qu'elles sont pas trop nombreuses) en utilisant la méthode set_var de la classe Template (par exemple quand vous lisez vos fichiers de langues mais une instance du template sera nécessaire).


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 13h10   #10
Invité de passage
 
Inscription : février 2005
Messages : 64
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 64
Points : 4
Points : 4
Citation:
Envoyé par julp
Votre méthode ressemble à priori beaucoup au fonctionnement de gettext.

Si vous ne voulez pas faire manuellement des assign_vars, je vous propose d'ajouter toutes vos variables langues (j'espère qu'elles sont pas trop nombreuses) en utilisant la méthode set_var de la classe Template (par exemple quand vous lisez vos fichiers de langues mais une instance du template sera nécessaire).


Julp.

D'accord je vois, mais n'est-ce pas trop couteux de faire ca a chaque chargement de page ?
V_R46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2006, 17h56   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Comme précisé ci-dessus tout dépend du nombre !

Sinon, il est possible d'utiliser la méthode get_undefined qui vous donne toutes les variables (template) inutilisées et vous vous en servez pour récupérer toutes les variables de langues définies dans cette page. Ainsi, vous pourriez lire votre fichier de langue et attribuer une valeur à ces variables non définies. D'autant plus que vous n'avez nul besoin de toucher (patch) à la classe template. Illustration :

index.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
require_once('template.inc.php');
 
$tpl = new template(); // On garde les valeurs par défaut des paramètres du constructeur
$tpl->set_file('index', 'index.tpl');
 
// $ndefvars contiendra les variables langues définies pour cette page
$ndefvars = $tpl->get_undefined('index');
 
// on les redéfinit avant affichage et après affectation des autres variables
foreach ($ndefvars as $k => $v) {
	$tpl->set_var($k, 'Undefined');
}
 
$tpl->parse('sortie', 'index');
$tpl->p('sortie');
?>
index.tpl :
Code :
1
2
3
4
5
6
7
8
9
 
<html>
	<head>
		<title>{L_TITLE}</title>
	</head>
	<body>
		{L_CORPS}
	</body>
</html>

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h44.


 
 
 
 
Partenaires

Hébergement Web