Comment faites-vous au niveau de la base de données pour realiser un site internet multi-lingue ?
Etant donné que seuls certains champs doivent etre traduits, qu'on risque un jour de rajouter un langue, qu'on veut que ca reste pas trop compliqué...
Comment font les site actuels ?
Merci
# Re: Site multi-lingue
Posté par 36 75 . Évalué à 2.
Je met aussi une variable de session (ou un param dans l'url) du même nom (LangID).
avec ca, tu rajoute juste une clause ' and LangID=?' dans les requettes SQL, et ca roule.
Evidemment c'est un peut lourd quand tu à d'autres infos que le texte à traduire dans la table, t'es obligé de faire un petit peut de redondance.
[^] # Re: Site multi-lingue
Posté par 36 75 . Évalué à 1.
c'est surtout utile pour des textes administrables dans un BackOffice, ou qui changes souvent.
Si tu a beaucoup de textes qui ne change jamais/raremment utilise plutot des fichiers de constantes (genre .properties en java).
# Re: Site multi-lingue
Posté par Hardy Damien . Évalué à 3.
dans le fichier fr.inc.php:
<?php
$main_title = 'Mon Site Web';
$field1 = 'champ 1';
?>
dans le fichier en.inc.php:
<?php
$main_title = 'My Web Site';
$field1 = 'field 1';
?>
et dans le script
proprement dit au depart
<?php
switch ($lang) {
case 'fr' : include ('fr.inc.php'); break;
case 'en' : include ('en.inc.php'); break;
default: include ('fr.inc.php'); break;
}
....$value = 'truc';
echo '<h1>',$main_title,'<h1>',"\n";
echo $field1 , '=', $value;
...
?>
Dam
[^] # Re: Site multi-lingue
Posté par Jérôme (site web personnel) . Évalué à 0.
[^] # Re: Site multi-lingue
Posté par Nicolas (site web personnel) . Évalué à 1.
p.s: Dans ton CV c'est école polytechniques de Nantes et non école Polytechnique de ...
[^] # Re: Site multi-lingue
Posté par Hardy Damien . Évalué à 1.
et je suis me suis lancé dans la refonte du site :)
merci pour la remarque
Dam
[^] # Re: Site multi-lingue
Posté par Nicolas (site web personnel) . Évalué à 1.
C'est aussi comme cela que je fais. Reste à savoir comment tu propages la langue: cookie, url, session,...
De rien pour la remarque. C'était juste un clin d'oeil (J'ai fait une formation à l'ireste) car je me doute bien que tu connais la différence.
[^] # Re: Site multi-lingue
Posté par Hardy Damien . Évalué à 1.
dans l'URL lors d'un clic sur un drapeau par exemple ou via un formulaire, on pourra mettre cette variable en session ensuite pour propager sur le site ou dans un cookie pour le prendre en compte lors de prochaines visites. Encore plus simple prendre tout simplement les préference du navigateur (dans l'entête HTTP lors du GET)
Dam
[^] # Re: Site multi-lingue
Posté par Nicolas (site web personnel) . Évalué à 1.
[^] # Re: Site multi-lingue
Posté par BeTraVE . Évalué à 1.
[^] # Re: Site multi-lingue
Posté par Nicolas (site web personnel) . Évalué à 1.
Ah non justement s'il est bien configuré comme tu dis, l'id de session ne passe pas dans l'url mais dans les entêtes http. On utilise un cookie de session et pas un id de session transmis par l'url. L'id de session transmis par l'url est une possible faille de sécurité (vol de session en particulier).
[^] # Re: Site multi-lingue
Posté par QS . Évalué à 2.
En général, si les cookies sont autorisés => transmission du sid par cookies, sinon transmission par URL.
(session.use_cookies = 1 et session.use_trans_sid = 1)
[^] # Re: Site multi-lingue
Posté par ukemi . Évalué à 1.
# Re: Site multi-lingue
Posté par jmfayard . Évalué à 1.
il n'y a pas moyen de faire comme pour les applications
développées avec mozilla ( voire http://books.mozdev.org(...)
et l'impressionant Mozilla Amazon Browser http://www.cfmentor.com/~faser/mab/(...) ) en XHtml, c'est à dire avec une DTD importée suivant la langue ?
un truc comme
<! ENTITY greetings "Hello World" >
<! ENTITY greetings "Bonjour tout le monde" >
dont on se sert comme ça
&greetings;
[^] # Re: Site multi-lingue
Posté par Hardy Damien . Évalué à 1.
Dam
[^] # Re: Site multi-lingue
Posté par jmfayard . Évalué à 1.
pour le reste, j'ai compris, merci.
# Avec xml et xslt
Posté par Samaty Tramo . Évalué à 1.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xm(...)
Le truc c'est de faire un fichier xml dans la langue voulue, et de faire les transformations avec xslt avec la fonction extension au standart transformNode.
Si quelqu un connait comment faire une transformation xslt du même genre en php qu il ne se gène pas pour le dire :p
[^] # Ma reponse à ma question
Posté par Samaty Tramo . Évalué à 1.
On pourrait regretter l ouverture en fichier texte et non xml qui serait pratique pour faire des ajout à l xml avant de l envoyer au passeur xslt
Noter que l on pourrait gérer un cache pour éviter de faire la transformation xslt a chaque appel de page.
<?php
// Include the DeviceType() function.
INCLUDE("xmllib.inc");
// What are the XML and XSL files?
$xmlFile = "news.xml";
$xslFile = DeviceType();
// Create a new processor handle
$th = @xslt_create() or die("Can't create XSLT handle!");
// Open the XML and XSL files
$xh = fopen($xmlFile, "r") or die("Can't open XML file");
$sh = fopen($xslFile, "r") or die("Can't open XSL file");
// Read in the XML and XSL contents
$xmlContent = fread($xh, filesize($xmlFile));
$xslContent = fread($sh, filesize($xslFile));
// Perform the XSL transformation
@xslt_process($xslContent, $xmlContent, $XSLtransformation);
// send the correct WAP header if necessary
if ($xslFile == "wapnews") :
header("content-type: text/vnd.wap.wml");
endif;
// Output the transformed XML file
echo $XSLtransformation;
// Free up the resources
@xslt_free($th);
?>
d autre avis ?
[^] # Re: Ma reponse à ma question
Posté par Samaty Tramo . Évalué à 1.
# Re: Site multi-lingue
Posté par Anonyme . Évalué à 2.
[^] # Re: Site multi-lingue
Posté par Bernez . Évalué à 1.
php gettext : http://si.php.net:8888/manual/en/ref.gettext.php(...)
# Re: Site multi-lingue
Posté par Elrik de Melnibone . Évalué à 1.
héhé mais en fait c'etait tres interressant.
Merci. PS: p-e encore quelque precision, ou d'autre facon de faire pour la base de donnée.
[^] # Re: Site multi-lingue
Posté par Hardy Damien . Évalué à 1.
Si c'est des articles complets il suffit de rajouter un champ pour les taguer avec la langue (une info suplementaire) qui leur correspond et les repeter autant de fois que de langue voulue avec un meme identifiant
Mais je pense qu'il faut bien dissocier l'interface utilisateur du schema de la base de données et ne pas la designer en pensant a l'interface mais à la meilleur maniere de décrire tes données
<ma_vie>
/me a vue des schema immonde avec des tables repliquées uniquement pour rajouter un espace avant le libélé pour mieux caller la sortie papier ....
</ma_vie>
Dam
[^] # Re: Site multi-lingue
Posté par Pooly (site web personnel) . Évalué à 1.
[^] # Re: Site multi-lingue
Posté par Elrik de Melnibone . Évalué à 1.
CiMer.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.