ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008
-
2 sept. 2008 à 23:45
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008
-
5 sept. 2008 à 17:20
Bonjour,
Je voudrais offrir l'option à mes visiteurs de choisir la langue de leur choix, en cliquant sur un drapeau. J'ai deux fichiers de langues, lang_fra.php et lang_eng.php que j'ai sauvegardés dans le répertoire /lang.
Et pour chaque mot qui doit être traduit, j'ai la variable $lang comme marqueur, ex.: $lang['index']['welcome']
Mais quand on clique sur un drapeau, je reçois le message d'erreur suivant : Fatal error : Cannot use string offset as an array in /home/ochadoca/public_html/store/test/lang/lang_fra.php on line 19
C'est à cette ligne que débute ma traduction
$lang['index']['welcome'] = 'Bienvenue';
Je ne comprends pas le message d'erreur et je ne sais plus trop où donner de la tête... Est-ce que quelqu'un aurait une idée du problème et comment le solutionner?
cs_Aaron
Messages postés116Date d'inscriptionlundi 29 juillet 2002StatutMembreDernière intervention19 janvier 2009 3 sept. 2008 à 02:07
De plus, $lang est un string (chaîne de caractères) et non un array (un tableau), alors il n'est pas possible d'utiliser la méthode : $lang['clé']['valeur'].
Pour vérifier : print_r($lang);
Si c'est pas la même variable, nomme les différemment, là cela me parait assez confus.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008 3 sept. 2008 à 02:43
Merci Aaron
J'ai ajouté le code et effectivement, le problème semble être dû au fait que $lang est utilisé comme un array dans mon fichier de langue mais que le code pour appeler le choix est un string... Alors j'ai codé comme ça au lieu :
Mais le fouilli que ça a généré! Ouh là! Je vois ma page maintenant mais tous les array sont sorti de leurs gonds et apparaissent aussi sur la page. Je ne crois pas être sur la bonne voie là
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008 3 sept. 2008 à 18:35
Salut!
Pas de problème, je connais ça aussi les nuits blanches
Je veux bien vous poster tout le code mais ça va être vraiment long (c'est une boutique électronique)... Pour l'instant, j'ai fait les corrections et plus d'erreurs! Je sauterais de joie mais il y a un hic (bien sûr), quand je clique sur les drapeaux, il ne se passe rien. Je ne crois pas que le fichier de langue est appelé. J'ai remis "lang" au lieu de "text" (sait-on jamais) mais c'est le statu quo; rien ne se passe.
Je pense bien qu'Aaron avait raison à propos des arrays. Je n'ai plus le message d'erreur mais le programme semble bloquer quelque part.
Et vraiment, je n'en peux plus de Google Translate (il me traduit essence naturelle par gazoline naturel!! Ah oui, le thé aux pêches est devenu du thé aux poissons... et j'en passe...)
En ce moment c'est les fichiers suivant que j'utilise :
<li>index.php</li><li>main_index.html (index.php redirige à ce fichier qui fait parti d'un modèle)
</li><li>table_languages.html (appelé dans main_index.html comme $table[languages])</li><li>lang_fra.php</li><li>lang_eng.php
</li>
index.php
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008 4 sept. 2008 à 20:40
Bonjour extraman1
Ah oui, j'aurais dû parler des templates...Désolée!
J'ai remis les variables à $lang et le menu est revenu. Par contre, les guillemets simple ou double me donne un message d'erreur de "parsing". Il aime pas, quoi...
Je me demande... le template utilise par défaut le lang_fra.php, fichier qu'il est stocké dans une base de données. Est-ce que cela aurait un impact?
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008 4 sept. 2008 à 21:00
Oui, c'est que j'ai une table, "settings", dans laquelle y est indiqué le fichier de langue employé pour le template, soit dans le cas présent lang_fra.php. Je peux mettre le fichier lang_eng.php mais je reviens au même problème qu'avant, c'est à dire que mes visiteurs ne pourront pas choisir la langue et ils auront soit le français ou soit l'anglais uniquement. J'espérais pouvoir mettre ce choix dans une variable pour une session mais là je me demande si les deux sont en conflit...
ochado
Messages postés9Date d'inscriptionmardi 2 septembre 2008StatutMembreDernière intervention 5 septembre 2008 5 sept. 2008 à 17:20
Bon, j'ai regardé de plus près mais je n'arrive pas à trouver le code qui appelle le fichier de langue dans la base de données... si je pouvais trouver ça, je pourrais ajuster le code pour qu'il change au fichier anglais... je poursuis mes recherches... Il y a aussi le global.php que je n'ai pas vraiment regardé.