JeuWeb - Crée ton jeu par navigateur
Un jeu polyglotte - Oui, mais comment ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Un jeu polyglotte - Oui, mais comment ? (/showthread.php?tid=1679)

Pages : 1 2 3 4 5 6 7


RE: Un jeu polyglotte - Oui, mais comment ? - Sephi-Chan - 31-08-2007

Roworll a écrit :- En fonction du navigateur, soit je fais la transformation XSL en local (Opera) soit je laisse le navigateur se débrouiller (IE/FF)

Accessoirement, le serveur travaille moins car sur FF/IE, la mise en page se fait par XSL sur le poste client.
Ta technique est intéressante mais je ne comprends pas comment tu fais pour déterminer si tu dois faire la transformation côté client ou côté serveur, puisqu'à ce moment là il n'y a pas d'info concernant le poste client. Ca me laisse perplexe.

Mais sinon la technique est super, mais je comprends pas très bien les règles et le format XPATH.


Sephi-Chan


RE: Un jeu polyglotte - Oui, mais comment ? - Roworll - 31-08-2007

Coté client ou serveur ? Ca dépend du navigateur.

En gros, je commence par détecter le navigateur utilisé avec $_SERVER['HTTP_USER_AGENT'] et je colle ça en variable de session (pour éviter de retester à chaque page).
Je sais que IE6+ et FF1.5+ fonctionne bien et si je détecte ces navigateurs, je mets ma variable à true.
Pour le reste c'est sur le serveur, variable à false.

Ensuite, une simple fonction fait l'affaire.
Un truc du genre
Code PHP :
<?php 
function sendXSLT($sXml, $sXslFile) {
$sXml est une chaine XML valide
$sXslFile est le chemin vers le fichier XSL
if(!$_SESSION['Ok_XML']){
//Le client ne supporte pas les transfos XSL : travail sur le serveur
$xslt = new XSLTProcessor();
$xml = new domDocument();
$xml -> loadXml($sXml);

$xsl = new domDocument();
$xsl -> load($sXslFile);
$xslt -> importStylesheet($xsl);
header ('content-type: text/html');
echo
$xslt -> transformToXml($xml);

} else {
//Le client peut faire les transfos XSL
$_xml ='<?xml version="1.0" encoding="UTF-8"?>'.LF;
$_xml.='<?xml-stylesheet type="text/xsl" href="'.$sXslFile.'"?>'.LF;
$_xml.=$sXml;

header ('content-type: text/xml');
echo
$_xml;
}
}

Quand à XPath,c'est hyper simple à appréhender.
Quelques explications ici

Je finis avec deux exemples sur les possibilités du XSL
- Trois présentations différentes à partir de la même source de données (XSL, Résultat)
- Une FAQ. Une seule source de données permet de générer le sommaire et le contenu (XSL, Résultat)


RE: Un jeu polyglotte - Oui, mais comment ? - HammHetfield - 03-09-2007

Je m'incruste dans cette discussion...

Tout d'abord pour rappeller que de nombreux jeux melange plusieurs langues et que tout le monde s'y retrouve (avec l'anglais) donc les interractions sociales devraient aussi etre possibles dans ton jeu ^^

en suite une idée qui me vient a l'esprit serait de faire un panneau d'administration pour chaque page du site, avec de zone de texte, une an anglais, l'autre en francais, avec du bbcode, ce qui te permettrait d'enregistrer ce qui se trouve dans chaque page (le texte, pas les requetes) et dans chaque langue dans une base de données, ensuite, tu recuperes la langue favorite et tu la mets dans une variable de session, si c'est france, quand tu choisiras ta base de donnée, c'est la basse france qui sera choisie, sinon si la variable de session est anglais, ce sera dans la table anglais, comme ca, la traduction est plus clair, il n'y a que l'affichage du texte en fonction de la page, les requetes a insérer dans le code et tout le reste se fait automatiquement!

Et pour reduire encore plus, tu fais tout le site sur une unique page, et tu transmet le nom de la page a afficher par GET, comme ca tu n'as a choisir la base de données qu'une seule fois!

Voila, j'espere t'avoir aidé dans ta decision ^^


RE: Un jeu polyglotte - Oui, mais comment ? - naholyr - 03-09-2007

C'est une idée qui a déjà été soumise et ce n'est pas une bonne solution car en dupliquant toute la base tu duplique également des données qui n'ont pas à être traduites, c'est une source de bugs ou au moins d'incohérences à venir (ah tiens, cebatiment est moins cher en anglais, bah je vais changer de langue avant de l'acheter). Et travailler avec 3 bases (2 pour le contenu multi-langue, 1 pour les valeurs communes), merci :/


RE: Un jeu polyglotte - Oui, mais comment ? - HammHetfield - 03-09-2007

Justement, non, tu ne dupliques pas les parties communes! Les valeurs sont définies dans le code pur, et utilisées de facon textuelle via les formulaires de ta page d'administration!

Ceci dit, les 3 bases me semblent etre une bonne solution!


RE: Un jeu polyglotte - Oui, mais comment ? - NicoMSEvent - 03-09-2007

déjà que la majorité des personnes ont des problemes avec une seule base... alors trois ^^


RE: Un jeu polyglotte - Oui, mais comment ? - naholyr - 03-09-2007

En effet, avoir trois bases me semble être au contraire la pire des solutions possibles :/


RE: Un jeu polyglotte - Oui, mais comment ? - Zamentur - 11-12-2007

Personnelement j'utilise un systeme de fichier langue pour les textes courants (donc qui revienne frequement).

Pour les autres textes (moins frequent ou plus dynamique genre message du forum) j'utilise la bdd. J'ai donc une table `texte` qui contient
id , fr, en (et d'eventuels infos sur le texte si besoin)
Une table `texte_varchar` peut aussi etre nécéssaire

Ainsi toute mes autres tables qui ont besoin de faire appel à du texte font en fait reference à un id de cette table par exemple `objet`
id, id_nom, poid, id_description

Une classe d'abstraction SQL peut aider à creer les jointures necessaires, mais pour l'instant je le fais en requete direct.

Ce systeme permet aussi de mettre au point un forum ou les message important sont traduit dans les differentes langues...

Enfin une console d'administration des textes permet de corriger les textes que ce soit dans la bdd ou dans les fichier langue et çà sans s'en rendre compte.

Par contre j'ai trouvé super interessant la solution avec gettext, je m'en vais voir çà de suite!


RE: Un jeu polyglotte - Oui, mais comment ? - Eluox - 11-12-2007

Perso, moi pour utiliser un systeme de langue j'utilise un fichier php tout simple, jexplique :

Sur mon fichier ou il y a differente langue possible, je fait :

Code PHP :
<?php 
$langue
= explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$langues = strtolower(substr(chop($langue[0]),0,2));
Sa va renvoyer la langue dun navigateur web (fr,en)

Apres je creer differents fichier php, avec dedan :

Code PHP :
<?php 
$lang
= array();

$lang['Bienvenue'] = 'Bienvenue';

Pour le français, et

Code PHP :
<?php 
$lang
= array();

$lang['Bienvenue'] = 'Welcome';

pour l'anglais, et ensuite dans le fichier n'1 ( ou j'ai recuperer la langue du navigateur)
On fait :

Code PHP :
<?php 
if($langues == 'fr')
{
include(
'fr.php');
}
elseif(
$langues == 'en')
{
include(
'en.php');
}
else
{
include(
'fr.php');
}

print
$lang['Bienvenue'];

Si la langue est autre que celle que vous avez choisi de possible, vous utilserz le francais, ou un autre, a vous de voir[/php]


RE: Un jeu polyglotte - Oui, mais comment ? - Plume - 11-12-2007

Plutôt que des tableaux, je préfère utiliser les constantes.

~L~