Bug avec fichier de traduction

Eléphanteau du PHP | 12 Messages

28 mai 2014, 10:50

Bonjour,

Il y a vraisemblablement plusieurs approches pour les sites multilingues.

Initialement j'ai opté pour un fichier PHP contenant l'ensemble des variables utiles :

[php]if ( $langue == "fr" )
{
define( "TXT_VAR1", "TEXT1_fr" );
define( "TXT_VAR2", "TEXT2_fr" );
define( "TXT_VAR3", "TEXT3_fr" );
}
else if ( $langue == "en" )
{
define( "TXT_VAR1", "TEXT1_en" );
define( "TXT_VAR2", "TEXT2_en" );
define( "TXT_VAR3", "TEXT3_en" );
}[/php]

Bizarrement il arrive que des chaines ne sortent pas du tout comme prévu. Des mots se mélangent. Des espaces s'insèrent ici et là. Toujours sans logique apparente. De façon aléatoire.

Cette méthode poserait-elle problème au niveau de la charge du serveur ?

J'utilise un MUTU chez OVH. PHP 5.2.17.

Merci pour votre aide.

Eléphant du PHP | 422 Messages

28 mai 2014, 11:10

hello

peux tu nous donner un exemple d'utilisation des var dans ton fichier php (notamment ou ça se mélange )

++
toujours faire une recherche sur http://www.php.net et/ou sur http://www.google.fr :)
utiliser http://ideone.com/ pour vos codes :)

Mammouth du PHP | 2278 Messages

28 mai 2014, 13:49

Ce qui m'intéresserait, moi, c'est plutôt comment sont constitués les fichiers contenant les textes finaux. Cette solution me semble bien compliquée, mais fcile à simplifier.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

28 mai 2014, 15:08

Bonjour,

Merci de l'intérêt que vous portez à mon problème.

Tout d'abord je définis la langue dans un paramètre de l'URL avec un URL Rewriting dans mon .htaccess

Ex : mondomaine.com/fr/page

[php]$langue = $_GET["langue"];[/php]

Avant d'écrire mon code HTML j'inclus mon fichier de traduction

[php]require( "traductions.php" );[/php]

Puis j'utilise tout simplement mes constantes en générant le code HTML :

[php]echo( "<h1>" . TXT_VAR1 . "</h1>" );[/php]

Mammouth du PHP | 2278 Messages

28 mai 2014, 17:17

Ce que je voulais savoir, c'est si tu as autant de fichiers que de langues différentes :
fic_fr.php
define ("TEXT_VAR1", "Mon compte");
fic_en.php
define ("TEXT_VAR1", "My account");
etc
ou
un seul fichier
d
efine ("TEXT_VAR1_fr", "mon compte");
define ("TEXT_VAR1_en", 'My account");
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 12 Messages

02 juin 2014, 09:10

Bonjour,

Comme indiqué dans mon premier message, j'utilise un fichier de traduction pour l'ensemble des langues :

[php]if ( $langue == "fr" )
{
define( "TXT_VAR1", "TEXT1_fr" );
define( "TXT_VAR2", "TEXT2_fr" );
define( "TXT_VAR3", "TEXT3_fr" );
}
else if ( $langue == "en" )
{
define( "TXT_VAR1", "TEXT1_en" );
define( "TXT_VAR2", "TEXT2_en" );
define( "TXT_VAR3", "TEXT3_en" );
}[/php]

Mammouth du PHP | 1339 Messages

02 juin 2014, 09:21

Quand je fais un site en multilangue, je me sers tout simplement d'un tableau en fait .

$langue['fr']['bonjour'] = 'Hello comment ca va ?';
$langue['en']['bonjour'] = 'Hy, how are you ?';

C'est plus simple quoi ...
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Eléphanteau du PHP | 12 Messages

02 juin 2014, 11:01

Merci pour ta remarque.

J'ai déjà utilisé ce genre de pratique. Mais pour le projet concerné j'ai utilisé des constantes plutôt que des variables ou tableaux multidimensionnels car j'ai lu un tutoriel qui préconisait cet usage.

Je ne suis pas contre avoir une autre approche, mais j'aimerais bien comprendre l'origine de ce dysfonctionnement.