2013-08-10 1 views
0

Comme gettext ne fonctionne pas correctement, j'ai besoin de basculer vers des tableaux pour un site multilingue.Enregistrer les données de langue dans la session

Maintenant je me demande quelle est une bonne façon de le faire, puisque j'ai besoin de la langue dans les fichiers php et les classes, mais aussi dans les modèles de brindilles.

Maintenant, je pensais que je pouvais simplement stocker le tableau avec les chaînes de langue (environ 500) dans la session de l'utilisateur, et pourrait être utilisé partout sans problème alors.

Est-ce mauvais? Est-ce que vous avez de meilleures idées, sans avoir besoin de recoder beaucoup, puisque je suis sous pression.

Répondre

0

Le stockage de tout le tableau de langue dans la session de l'utilisateur n'est pas le meilleur réflexe. Vous pouvez stocker la langue i.E. 'en_EN' dans la session de l'utilisateur, puis charger les données de langue en fonction de cette session.

+0

Eh bien, j'ai pensé à cela aussi, mais comment puis-je recive la chaîne alors? Avec un appel de fonction statique? Je pensais que ce n'est pas très rapide quand chaque chaîne est récupérée une par une? – Michael

+0

Vous pouvez soit rendre la variable avec le tableau de langage global, soit écrire une petite classe abstraite qui charge le fichier de langue et possède une fonction statique qui renvoie simplement la valeur de plusieurs du tableau identifié par la clé sumbit en paramètre. Comme ceci: 'Lang :: get ('teststring');' retournerait la valeur de 'teststring'. –

+0

Eh bien c'est beaucoup de travail mais je pense que la solution avec la classe devrait être le meilleur "style" ^^ – Michael

0

Ce n'est pas une très bonne idée, car vous multipliez la quantité de données textuelles stockées par le nombre d'utilisateurs. Il est préférable de placer les différents extraits de texte de langue dans des tableaux, puis de stocker le code de langue correspondant à un utilisateur donné dans le cookie et de l'utiliser comme clé pour récupérer le texte approprié au moment de l'exécution.

+0

Eh bien, mais comment puis-je recive la chaîne alors? Avec un appel de fonction statique? Je pensais que ce n'est pas très rapide quand chaque chaîne est récupérée une par une? – Michael

1

Il n'y a aucune raison d'ajouter des données à la session qui ne sont pas pertinentes pour la session. Il suffit de mettre en évidence un fichier php qui définit un tableau avec des chaînes de langue. C'est la meilleure solution pour la performance et la simplicité.

La maintenance de ce tableau est une question différente. Vous pouvez utiliser un outil de traduction tel que https://poeditor.com/. Cet outil (et il en existe d'autres) vous permet d'exporter vos traductions vers un tableau PHP afin qu'il soit généré dynamiquement.

+0

Oui, je l'ai déjà fait maintenant. C'était une idée stupide, je ne voulais pas modifier tout le code. J'ai créé le tableau de traduction manuellement. Comment poeditor sait-il quelles chaînes sont des chaînes de traduction? – Michael

Questions connexes