Gestion des langues avec Prado
Voici un petit tutorial pour mettre en place un site en français et anglais avec Prado.
Tout d’abord, nous allons configurer le fichier application.xml pour mettre en place la gestion de l’Internationalization (I18N).
Nous lui rajoutons donc le module concerné ayant pour langue par défaut : fr
<module id=”globalization” class=”TGlobalizationAutoDetect” Culture=”fr”>
<translation type=”XLIFF” source=”Application.lang” autosave=”false” cache=”false” />
</module>
Application.lang signifiant que les fichiers xml des langues seront dans le répertoire lang de l’application : protected/lang par défaut.
Ensuite nous modifions le fichier index.php de l’application en lui ajoutant une nouvelle classe héritant de TApplication.
On remplace donc :
$application=new TApplication;
$application->run();
Par :
class MyApplication extends TApplication
{
public function OnLoadStateComplete()
{parent::OnLoadStateComplete();// If the culture has changed
if (isset($this->Request[’lang’])) {$this->setGlobalState(’lang’, $this->Request[’lang’]);
}
// This changes the Culture if the GlobalState variable ‘lang’ is set.
if ($this->getGlobalState(’lang’) != “”) {$this->getGlobalization()->setCulture($this->getGlobalState(’lang’));
}
$this->getGlobalization()->Charset = “UTF-8″; //change the charset
}
}
$application=new MyApplication;
$application->run();
Vous pouvez bien entendu mettre autre chose que UTF-8 pour le Charset.
Nous rajoutons ensuite des liens pour passer de français à anglais et vise et versa :
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=fr”>FR</a>
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=en”>EN</a>
Il ne vous reste plus qu’à mettre <%[Welcome]%> à la place de Welcome par exemple, et Prado va créer automatiquement les fichiers xml : lang/fr/messages.xml et lang/en/messages.xml
Ensuite à vous de rentrer les traductions dans les fichiers xml comme ceci :
<trans-unit id=”1″>
<source>Bienvenue</source>
<target>Welcome</target>
</trans-unit>
<trans-unit id=”2″>
<source><![CDATA[Propulsé par]]></source>
<target>Powered by</target>
</trans-unit>
Pour le deuxième exemple : <%[Propulsé par]%>
Pour toute question, critique ou suggestion, n’hésitez pas.
Création des classes Active Record sous Prado
Pour créer les classes Active Record correspondant aux tables de votre base de donnée, tout est expliqué ici : http://www.pradosoft.com/demos/blog-tutorial/?page=Day2.CreateAR
Cependant, une petite précision :
Pour effectuer la commande php path/to/prado-cli.php shell . sous windows :
Ouvrez la console windows (démarrer->exécuter->cmd), allez dans le répertoire où ce situe php.exe, et tapez :
php chemin_vers_le_framework_prado/prado-cli.php shell chemin_vers_le_repertoire_de_votre_site
Si vous avez des erreurs, vérifiez bien les paramètres de connexion à la base dans le fichier application.xml. Et surtout le bon chargement de l’extension php_pdo_mysql dans le fichier ini de php (si vous travaillez sous wamp, faites la modification dans les 2 fichiers ini de php, car en mode console ce n’est pas le même qui est chargé).
Remplir une liste depuis une base de donnée avec Prado
Dans la documentation de Prado (blog tutorial et quickstart), il y est expliqué les différents moyens d’accès à une base de donnée ainsi que les différents composants (liste, label, boutons,…).
Pour ceux qui sont un peu perdu, je vais mettre ici un exemple simple et rapide, pour remplir une liste à partir d’un contenu extrait d’une base de donnée.
Tout d’abord, il faut créer un fichier gabarit (exemple : bindListe.page) et son fichier de classe (soit bindListe.php) et les placer dans le répertoire par défaut des pages du site nommé “Pages”.
Ensuite on veut que notre application démarre par défaut sur cette page. Pour cela il suffit de modifier le fichier “application.xml” et de insérer/modifier le code existant par :
<paths>
<using namespace=”System.Data.*” />
<using namespace=”System.Web.UI.ActiveControls.*” />
</paths>
et
<services>
<service id=”page” class=”TPageService” DefaultPage=”index” />
</services>
Ensuite dans le fichier “bindListe.page”, copier/coller le code suivant :
<com:TActivePanel>
<com:TActiveListBox ID=”liste” Rows=”1″ />
</com:TActivePanel>
Et dans le fichier “bindListe.php”, copier/coller le code suivant :
<?php
class bindListe extends TPage
{
public function onInit($param)
{
parent::onInit($param);
$connection=new TDbConnection(”mysql:host=host;dbname=nomBDD”,”user”,”pass”);
$connection->Active=true;$command=$connection->createCommand(”SELECT * FROM votreTable”);
$dataReader=$command->query();$dataReader->bindColumn(2,$texte); //traduiser cette ligne de code par “je veux que la colonne 2 du résultat de ma requête sql soit envoyé dans la variable $texte”
$tbl=array();
//on lit l’ensemble des lignes du résultat de la requête
while($dataReader->read()!==false)
{
$tbl[]=array($texte);
}
$this->liste->DataSource=$tbl;
$this->liste->dataBind();
}
}
?>
Bien entendu vous devez avoir une table dans votre base avec au minimum 2 colonnes. La 2ème colonne étant le texte à afficher dans la liste.
Voilà, pour tout problème ou commentaire, n’hésitez pas à laisser un message.
Découverte de Prado
Voici un petit tutorial pour mettre en place un site en français et anglais avec Prado.
Tout d’abord, nous allons configurer le fichier application.xml pour mettre en place la gestion de l’Internationalization (I18N).
Nous lui rajoutons donc le module concerné ayant pour langue par défaut : fr
<module id=”globalization” class=”TGlobalizationAutoDetect” Culture=”fr”>
<translation type=”XLIFF” source=”Application.lang” autosave=”false” cache=”false” />
</module>
Application.lang signifiant que les fichiers xml des langues seront dans le répertoire lang de l’application : protected/lang par défaut.
Ensuite nous modifions le fichier index.php de l’application en lui ajoutant une nouvelle classe héritant de TApplication.
On remplace donc :
$application=new TApplication;
$application->run();
Par :
class MyApplication extends TApplication
{
public function OnLoadStateComplete()
{parent::OnLoadStateComplete();// If the culture has changed
if (isset($this->Request[’lang’])) {$this->setGlobalState(’lang’, $this->Request[’lang’]);
}
// This changes the Culture if the GlobalState variable ‘lang’ is set.
if ($this->getGlobalState(’lang’) != “”) {$this->getGlobalization()->setCulture($this->getGlobalState(’lang’));
}
$this->getGlobalization()->Charset = “UTF-8″; //change the charset
}
}
$application=new MyApplication;
$application->run();
Vous pouvez bien entendu mettre autre chose que UTF-8 pour le Charset.
Nous rajoutons ensuite des liens pour passer de français à anglais et vise et versa :
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=fr”>FR</a>
<a href=”index.php?page=<%= $this->Request->ServiceParameter %>〈=en”>EN</a>
Il ne vous reste plus qu’à mettre <%[Welcome]%> à la place de Welcome par exemple, et Prado va créer automatiquement les fichiers xml : lang/fr/messages.xml et lang/en/messages.xml
Ensuite à vous de rentrer les traductions dans les fichiers xml comme ceci :
<trans-unit id=”1″>
<source>Bienvenue</source>
<target>Welcome</target>
</trans-unit>
<trans-unit id=”2″>
<source><![CDATA[Propulsé par]]></source>
<target>Powered by</target>
</trans-unit>
Pour le deuxième exemple : <%[Propulsé par]%>
Pour toute question, critique ou suggestion, n’hésitez pas.