Site Multi-Langues....Comment procéder ?

Site Multi-Langues....Comment procéder ? - PHP - Programmation

Marsh Posté le 09-06-2008 à 09:09:21    

Bonjour,
 
Je viens vous pour avoir un avis sur une solution. Je dois faire un site en Multi-Langues.  
Quelles est la manière façon de procéder ?
 
- Un template par langues ?
- Mettre les champs et le texte dans la base de donnée ?
- Utiliser des fichiers externes ?
 
 
Je dévellope en PHP / MYSQL.
 
 
J'hésite entre les trois solutions, notament pour le référencement.  
Quelle est la meillieur ? S'il en n'existe d'autres lesquels sont-elles ?
 
D'avance merci
Cvb
 

Reply

Marsh Posté le 09-06-2008 à 09:09:21   

Reply

Marsh Posté le 09-06-2008 à 10:07:19    

Salut,
 
le sujet a plusieurs fois été abordé.
pour ma part, je fais un tableau (php) de paires index/valeurs pour une langue, tableau que je décline en plusieurs fichiers selon les langues.
 
concrètement, par exemple, le fichier fr.php contient :

Code :
  1. <?php
  2.    $array_lang['hello'] = 'bonjour';
  3.    $array_lang['connect'] = 'Connexion';
  4.    $array_lang['disconnect'] = 'Déconnexion';
  5. ?>


 
puis à coté, je fais mes autres langues
par exemple, en.php :

Code :
  1. <?php
  2.    $array_lang['hello'] = 'hello';
  3.    $array_lang['connect'] = 'Connection';
  4.    $array_lang['disconnect'] = 'Log out';
  5. ?>


 
puis dans le programme, je passe en paramètre (en session, par exemple) ma langue : $_SESSION['lang'] = 'fr'; et j'inclue le fichier correspondant : include($_SESSION['lang'].'.php');
 
pour les fonctions, je passe en global mon tableau :

Code :
  1. <?php
  2.   function Blabla($prenom, arg1, arg2, ... argX)
  3.   {
  4.       global $array_lang;
  5.       echo $array_lang['hello'].' '.$prenom;
  6.   }
  7. ?>


 
Pour le référencement, faut juste voir pour un peu de réécriture d'URL plutôt qu'avoir ?lang=fr ...
 
Il n'y a pas de *meilleure* solution, il faut que tu arrives à trouver laquelle t'es plus pratique, laquelle te permet la maintenance la plus simple ...
Point de vvue référencement


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 09-06-2008 à 10:18:19    

Merci beaucoup pour ta réponse :)
Je vais voir ça :)

Reply

Marsh Posté le 09-06-2008 à 10:31:12    

Reply

Marsh Posté le 09-06-2008 à 16:09:53    

Perso, j'ai une fonction très simple dédiée à la gestion de l'internationalisation :

Code :
  1. <?php echo __('Hello world !') ?>


 
Le fichier de langue français par exemple :  

Code :
  1. $__I18N = array(
  2.   'Hello world !' => 'Bonjour le monde !',
  3. );


 
Suivant la langue définie (fichier de conf, choix utilisateur...), la fonction __($string) renvoie la bonne traduction. L'avantage d'utiliser une clef compréhensible (Hello world), c'est que la lecture et la compréhension des templates est grandement facilitée, et la langue principale du site ne nécessite pas de fichiers de langues.

Reply

Marsh Posté le 09-06-2008 à 22:51:42    

Comme dit précédemment, il n'y a pas de meilleure solution.
 
Je suis plutôt de l'avis de NewsletTux (mais en transformant la variable globale en session, c'est plus joli :P), bien que cela reste un choix personnel.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 10-06-2008 à 08:17:58    

Merci à vos tous pour vos réponses :=)
@++
Cvb

Reply

Marsh Posté le 10-06-2008 à 08:41:34    

CyberDenix a écrit :

Comme dit précédemment, il n'y a pas de meilleure solution.
 
Je suis plutôt de l'avis de NewsletTux (mais en transformant la variable globale en session, c'est plus joli :P), bien que cela reste un choix personnel.


 
En session ? Ptain t'as pas peur toi  :pt1cable:

Reply

Marsh Posté le 10-06-2008 à 13:33:56    

j'ai préféré opter pour globaliser la variable afin de ne pas surcharger les ressources de la Session, si ton tableau comporte une centaine de lignes, ce n'est *pas forcément* dérangeant, mais quand tu as 1500 ou 2000 lignes de traduction ... ça t'augmente la taille de la variable s_SESSION inutilement je trouve.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 10-06-2008 à 14:36:36    

NewsletTux a écrit :

j'ai préféré opter pour globaliser la variable afin de ne pas surcharger les ressources de la Session, si ton tableau comporte une centaine de lignes, ce n'est *pas forcément* dérangeant, mais quand tu as 1500 ou 2000 lignes de traduction ... ça t'augmente la taille de la variable s_SESSION inutilement je trouve.


et ça la duplique pour chaque user, bonjour l'économie.[:moule_bite]


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed