Bonjour,
J'ai conçu un site (en français) et je souhaite mettre une deuxième langues (anglais). Les données à afficher sont proviennent d'une BDD MySql.
Comment procéder ?
Merci.
Bonjour,
J'ai conçu un site (en français) et je souhaite mettre une deuxième langues (anglais). Les données à afficher sont proviennent d'une BDD MySql.
Comment procéder ?
Merci.
Il y a deux aspects à traiter quand on internationalise un site :
1) La traduction de la partie statique du site, c'est à dire l'interface applicative avec les titres, les libellés de champs de saisie, les pages fixes genre informations légales...
2) La traduction éventuelle de la partie dynamique, c'est à dire des données affichées par le site.
Pour le premier aspect, cela peut se traiter :
- par des fichiers de traduction ;
- par une traduction stockée en base de données.
Pour le second aspect, il faut commencer par déterminer ce que vous voulez traduire et modéliser l'internationalisation de vos tables.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Merci,
Pour les données statiques, je prévoir utiliser un tableau associatif avec des id.
Quand aux données stockées,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $string_lang = array( 'HOME' => array( 'fr-fr' => "accueil", 'en-En' => "Home"), ......................... ......................... 'COPY' => array( 'fr-fr' => "Mention légale", 'en-uk' => "CopyRight") ); ?>
je suis voudrais ajouter une rubrique langue dans ma table dans ce cas toutes les requête auront une variable $lang (variable session).
Ce méthode implique forcement que chaque article sera obligatoirement inséré dans la table en français et en anglais.
exemple de requête:Est une méthode efficace ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM table WHERE lang = $_session['lang']...
Ça peut fonctionner ainsi en effet.
3 remarques :
Si vous avez beaucoup de libellés, vous allez charger tous les libellés pour les deux langues, ce qui peut être lourd. Et si un jour vous ajoutez d'autres langues, vous augmentez d'autant la taille des informations chargées. Il vaut parfois mieux faire un fichier par langue et ne charger en mémoire que la langue choisie par l'utilisateur.Pour les données statiques, je prévoir utiliser un tableau associatif avec des id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php $string_lang = array( 'HOME' => array( 'fr-fr' => "accueil", 'en-En' => "Home"), ......................... ......................... 'COPY' => array( 'fr-fr' => "Mention légale", 'en-uk' => "CopyRight") ); ?>
Attention aux injections SQL ! Utilisez PDO ou mysqli et "bindez" vos variables php.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM table WHERE lang = $_session['lang']...
Dans votre code PHP, vous utilisez 'fr_FR' et 'en_EN', soit 5 caractères pour une langue. En base de données, faites plutôt une table des langues et utilisez l'identifiant auto-incrémenté de cette table, ça prend moins de place en BDD et c'est plus facilement maintenable en cas d'erreur ou de changement de code.
Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise la suite Linux Mageïa !
Merci pour les conseils. Je m'y et je reviens.
Merci CinePhil c'est bon. J'ai crée une table pour les langues et une table pour les données statiques. Et jusque là tous va bien.
Partager