| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Crisalid WRInaute discret

Inscrit le: 06 Jan 2006 Messages: 51 Localisation: Moselle
|
Posté le : Mar Fév 28, 2006 17:13 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
Bonjour,
Voici une petite participation au forum. Il s'agit plus d'une aide au développement plus qu'au référencement - Encore que cela reste étroitement liée.
Pour tout ce qui concerne les textes de mon site, je n'utilise qu'un seul fichier texte dit "String Table" que je place dans un répertoire (Ex. : french.lng). Sa structure est la suivante :
| Citation: |
| IdentifiantA5Chiffres, "Texte" (Ex. : 10000, "Accueil") |
A chaque nouvelle entrée, j'incrèmente mon identifiant unique.
Ensuite pour afficher le texte sur ma page, j'utilise une petite fonction de lecture de ce fichier texte; en passant comme paramètre l'identifiant du texte que je souhaite afficher
| Code: |
function f1($idString = null, $directory = null) {
$Buffer = @file($directory);
$i = 0;
while ($i <= sizeOf($Buffer) - 1) {
$stringID = substr($Buffer[$i], 0, 5);
$stringValue = substr($Buffer[$i], 8, (strrpos('"', $Buffer[$i]) - 3));
if ($idString == null) { $result[$stringID] = $stringValue; } else {
if ($idString == $stringID) {
$result = $stringValue;
break;
}
}
$i++;
}
return $result;
}
echo f1(10000); // Exemple !
|
Et voila il ne me reste plus qu'à traduire un simple fichier texte, pour passer mon site dans une autre langue Ca ne résoud pas le problème de la base de données, mais bon... Ca sera peut-être pour une prochaine fois ! Pour le reste je suis sur un hébergement Français et la liaison ce fait par de simple sous-domaine. Je pense que c'est la meilleure solution au vue de mon référencement actuel (Non je ne parle pas du site de mon profil - Celui la est en cours de formatage )).
Salutations  |
|
| |
|
 |
Kwiz Nouveau WRInaute
Inscrit le: 06 Oct 2004 Messages: 48 Localisation: Paris
|
Posté le : Mar Fév 28, 2006 18:37 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
Voici ma version qui reprend le même principe que toi avec un document texte :
Le fichier texte de la langue :
| Code: |
LG_BonjourLeMonde='Bonjour le monde !'
LG_AuRevoirLeMonde='Au revoir le monde!'
|
Le parseur à appeller au début de ta page :
| Code: |
$FichierLangue = "langues/fr.lang.php";
$FichierContenu = file($FichierLangue);
while (list($NumeroLigne, $Ligne) = each($FichierContenu)) {
preg_match("/^([a-zA-Z_]+)=(.+)$/", $Ligne, $Var);
$$Var[1] = preg_replace("/\\r/","",$Var[2]);
}
|
Dans ta page tu appelles la variable $LG_BonjourLeMonde à la place du texte.
Kwiz |
|
| |
|
 |
Crisalid WRInaute discret

Inscrit le: 06 Jan 2006 Messages: 51 Localisation: Moselle
|
Posté le : Mar Fév 28, 2006 19:19 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
| J'utilisé ça aussi au départ, mais le problème est que quand tu a beaucoup de texte entrecoupé sur une page c'est un peu long à taper. J'prefère une fonction au nom cours et un chiffre en paramètres c'est beaucoup plus rapide. |
|
| |
|
 |
magic corp. WRInaute impliqué

Inscrit le: 17 Juin 2004 Messages: 422 Localisation: Suisse
|
Posté le : Mar Fév 28, 2006 19:42 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
Une petite question ... pourquoi privilégiez vous cette technique plutot que d'utilisé des DEFINE ?
Exemple:
lang_fr.php
| Code: |
| define('TEXT_WELCOME', 'Bienvenu'); |
index.php
| Code: |
require("lang_fr.php");
...
echo(TEXT_WELCOME); |
C'est ce que j'utilise, parcontre je n'ai pas qu'un seul fichier de langue, mais un par page plus un général pour ne pas définir des textes inutile pour la page en cours et donc de surchargé le serveur inutilement. Est-ce que vos solution sont là pour résoudre se problème et donc d'avoir tout dans un seul fichier ?
- Magic - |
|
| |
|
 |
absoluteweb WRInaute impliqué

Inscrit le: 22 Nov 2002 Messages: 472 Localisation: Nanteuil-lès-Meaux
|
Posté le : Mer Mar 01, 2006 0:02 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| Crisalid a écrit: |
Ca ne résoud pas le problème de la base de données, mais bon... Ca sera peut-être pour une prochaine fois ! |
Bonsoir,
Pour les bases de données j'utilise cette solution :
<fr>texte en français</fr><en>texte en anglais</en><sp>...</sp>
Un seul champ avec toutes les langues.
Une petite fonction me permet de récupérer la version voulue.
Pour les textes en dur, ton histoire de nombres n'est vraiment pas pratique pour "relire" le contenu d'un code source. Avec un $message_remerciement c'est quand même plus parlant qu'un f1(853)...
Nicolas. |
|
| |
|
 |
ChezThierry WRInaute impliqué

Inscrit le: 21 Oct 2005 Messages: 273
|
Posté le : Mer Mar 01, 2006 0:19 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
| Et pourquoi n'utilisez-vous pas la librairie gettext de gnu ? |
|
| |
|
 |
Crisalid WRInaute discret

Inscrit le: 06 Jan 2006 Messages: 51 Localisation: Moselle
|
Posté le : Mer Mar 01, 2006 8:48 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| absoluteweb a écrit: |
| Crisalid a écrit: |
Ca ne résoud pas le problème de la base de données, mais bon... Ca sera peut-être pour une prochaine fois ! |
Bonsoir,
Pour les bases de données j'utilise cette solution :
<fr>texte en français</fr><en>texte en anglais</en><sp>...</sp>
Un seul champ avec toutes les langues.
Une petite fonction me permet de récupérer la version voulue.
Pour les textes en dur, ton histoire de nombres n'est vraiment pas pratique pour "relire" le contenu d'un code source. Avec un $message_remerciement c'est quand même plus parlant qu'un f1(853)...
Nicolas. |
Pas mal, ta solution pour la base de données J'essayerai surement !
Pour les chiffres ou les lettres, franchement pour avoir essayé les lettres... Je trouve que ça manque de productivité, et retrouver une référence avec un bon éditeur va très vite avec les chiffres. Mais bon les gouts et les couleurs comme on dit !  |
|
| |
|
 |
Suede WRInaute accro

Inscrit le: 04 Oct 2002 Messages: 3642 Localisation: Suède
|
Posté le : Mer Mar 01, 2006 11:17 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| absoluteweb a écrit: |
| Crisalid a écrit: |
Ca ne résoud pas le problème de la base de données, mais bon... Ca sera peut-être pour une prochaine fois ! |
Bonsoir,
Pour les bases de données j'utilise cette solution :
<fr>texte en français</fr><en>texte en anglais</en><sp>...</sp>
Un seul champ avec toutes les langues.
Une petite fonction me permet de récupérer la version voulue.
Nicolas. |
Si tu utilises une base de données, pourquoi ne pas avoir un champ langue ? Tant qu'à faire une requete sur base de donnée, autant éviter d'avoir à parser le résultat dans une fonction en plus.
François |
|
| |
|
 |
Kwiz Nouveau WRInaute
Inscrit le: 06 Oct 2004 Messages: 48 Localisation: Paris
|
Posté le : Mer Mar 01, 2006 11:17 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| absoluteweb a écrit: |
Pour les bases de données j'utilise cette solution :
<fr>texte en français</fr><en>texte en anglais</en><sp>...</sp>
Un seul champ avec toutes les langues.
Une petite fonction me permet de récupérer la version voulue.
|
N'est-t-il préférable d'avoir un fichier par langue, histoire d'économiser la mémoire à chaque appel du fichier ?
Kwiz |
|
| |
|
 |
absoluteweb WRInaute impliqué

Inscrit le: 22 Nov 2002 Messages: 472 Localisation: Nanteuil-lès-Meaux
|
Posté le : Mer Mar 01, 2006 15:12 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| Suede a écrit: |
| Si tu utilises une base de données, pourquoi ne pas avoir un champ langue ? Tant qu'à faire une requete sur base de donnée, autant éviter d'avoir à parser le résultat dans une fonction en plus. |
Tu veux dire par exemple pour un site immobilier avoir autant de champ que de langues ?
TitreFR
TitreEN
TitreIT
TitreSP
TitreDE
DescriptionFR
DescriptionEN
DescriptionIT
DescriptionSP
DescriptionDE
SituationFR
SituationEN
SituationIT
SituationSP
SituationDE
...
...
J'ai préféré
Titre
Description
Situation
...
Quand j'aurais à ajouter d'autre langues, aucune manip à faire sur les tables !
Nicolas. |
|
| |
|
 |
absoluteweb WRInaute impliqué

Inscrit le: 22 Nov 2002 Messages: 472 Localisation: Nanteuil-lès-Meaux
|
Posté le : Mer Mar 01, 2006 15:17 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| Kwiz a écrit: |
| absoluteweb a écrit: |
Pour les bases de données j'utilise cette solution :
<fr>texte en français</fr><en>texte en anglais</en><sp>...</sp>
Un seul champ avec toutes les langues.
Une petite fonction me permet de récupérer la version voulue.
|
N'est-t-il préférable d'avoir un fichier par langue, histoire d'économiser la mémoire à chaque appel du fichier ?
Kwiz |
On parle de base de données là, je ne comprends pas la question. J'utilise des fichiers textes pour les pages "statiques" d'un site, mais si j'ai besoin d'une base de données (annonces immobilières par exemple), je ne vois pas comment tu peux utiliser un fichier langue à la place.
Nicolas. |
|
| |
|
 |
magic corp. WRInaute impliqué

Inscrit le: 17 Juin 2004 Messages: 422 Localisation: Suisse
|
Posté le : Mer Mar 01, 2006 15:37 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| absoluteweb a écrit: |
| Suede a écrit: |
| Si tu utilises une base de données, pourquoi ne pas avoir un champ langue ? Tant qu'à faire une requete sur base de donnée, autant éviter d'avoir à parser le résultat dans une fonction en plus. |
Tu veux dire par exemple pour un site immobilier avoir autant de champ que de langues ?
TitreFR
TitreEN
TitreIT
TitreSP
TitreDE
DescriptionFR
DescriptionEN
DescriptionIT
DescriptionSP
DescriptionDE
SituationFR
SituationEN
SituationIT
SituationSP
SituationDE
...
...
J'ai préféré
Titre
Description
Situation
...
Quand j'aurais à ajouter d'autre langues, aucune manip à faire sur les tables !
Nicolas. |
Je penses qu'il voulais dire, d'avoir un champ en plus, par exemple de 2 caractère, où tu spécifie la langue de l'enregistrement.
Ce qui te permet de faire directement des requetes "SQL" sur une langue, style : SELECT * FROM `table_text_langue` WEHRE `lang`="fr"
- Magic - |
|
| |
|
 |
Kwiz Nouveau WRInaute
Inscrit le: 06 Oct 2004 Messages: 48 Localisation: Paris
|
Posté le : Mer Mar 01, 2006 16:00 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
| Citation: |
| On parle de base de données là, je ne comprends pas la question. J'utilise des fichiers textes pour les pages "statiques" d'un site, mais si j'ai besoin d'une base de données (annonces immobilières par exemple), je ne vois pas comment tu peux utiliser un fichier langue à la place. |
Personnellement pour des questions de performance, je préfère utiliser des fichiers avec les textes traduits dans plusieurs langues, plutôt que de devoir interroger SQL à chaque rechargement de la page.
L'affichage celle-ci n'en sera que plus rapide et le serveur SQL solicité uniquement pour renvoyer des données plus dynamique (par exemple pour les résultats d'un moteur de recherche)
Kwiz |
|
| |
|
 |
HawkEye Modérateur

Inscrit le: 23 Fév 2004 Messages: 12410 Localisation: Google
|
Posté le : Mer Mar 01, 2006 16:10 Sujet du message: Développement d'un site multilingue, ma méthode. |
|
|
De mon côté le stocke le contenu linguistique par strings dans une db, style <id_text><lg_fr><lg_en><lg_$$>.
La langue est définie par l'url rewriting (/fr/blabla.html), et il suffit d'un SELECT lg_$lang FROM...
Note: Ca permet aussi d'éditer les langues en ligne via une interface d'admin, et d'afficher le string "fr" à côté du "en" pour faire les traductions. |
|
| |
|
 |
absoluteweb WRInaute impliqué

Inscrit le: 22 Nov 2002 Messages: 472 Localisation: Nanteuil-lès-Meaux
|
Posté le : Mer Mar 01, 2006 16:12 Sujet du message: Re: Développement d'un site multilingue, ma méthode. |
|
|
| magic corp. a écrit: |
Je penses qu'il voulais dire, d'avoir un champ en plus, par exemple de 2 caractère, où tu spécifie la langue de l'enregistrement.
Ce qui te permet de faire directement des requetes "SQL" sur une langue, style : SELECT * FROM `table_text_langue` WEHRE `lang`="fr" |
Ce qui implique 5 fois plus d'enregistrements dans les tables pour gérer 5 langues... Des updates dans 5 enregistrements en cas de modifs...
Je préfère ma solution avec ma toute petite fonction pour extraire la langue choisie.
| Code: |
function recup_xml($chaine,$item) {
// $chaine = <fr>version française</fr><en>version anglaise</en>, $item = fr ou en ...
$tmp = preg_split("/<\/?".$item.">/",$chaine);
return $tmp[1];
} |
|
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|