Bonjour,

Je souhaite créer une version en anglais pour un site XHTML + CSS + js + php...en évitant l'artillerie lourde genre base de données (je n'ai que 2 langues à gérer et seulement 5 pages par langue)

Ma première idée (la nature humaine adore la symétrie) a été de créer 2 répertoires Fr et En dans lesquels sont dupliquées les pages à la langue près. Les feuilles de style screen et print sont bien entendues communes et stockées dans un 3ième répertoire "styles". Le switch Fr/En est fait entre les pages index_fr et index_en en cliquant sur le drapeau qui va bien.
A la racine du site j'ai ajouté une page index avec une redirection en php qui lance index_fr dans le répertoire Fr

Tout ça valide et fonctionne mais est-ce une/la bonne solution?
En particulier en terme de référencement, ma page de redirection ne va- t-elle pas gêner le travail des robots recherchant les mots clé?

Une alternative serait de laisser l'index_fr à la racine et de faire une croix sur cette belle symétrie qui finalement ne me paraît pas obligatoire
Pour vos avis éclairés...et de meilleures solutions s'il en existe!
Merci à tous Smiley smile
Modifié par zanzibar (13 Sep 2005 - 08:44)
Tu fais un système avec PHP et cookie, avec un choix par défaut;
ensuite, dans chaque page, tu fais :

if($langue==''){
 $langue='fr';
}

if($langue=='fr'){
echo 'Coucou !';
}

if($langue=='en'){
echo 'Hello !';
}
Salut Sylvain,

Merci pour la suggestion, j'avais effectivement pensé à ça aussi mais ça me semblait un peu long à mettre en place (de la paresse ou je m'y connais pas Smiley lol ) ....même si ç'est meilleur en maintenance, en encombrement mémoire, et que ça solutionne mes interrogations sur le référencement!...a réfléchir Smiley cligne Je vois quand même un bémol, ça nuit un peu à la clarté des pages quand on relit son code.

D'autres avis sur la question???

Au fait as tu vu mon mail perso de la sem passée, je ne crois pas que tu m'aies répondu (si pas d'intérêt pour toi no problem)?
Modifié par zanzibar (12 Sep 2005 - 17:35)
Bonjour

Moi je ferais comme ça.
Un fichier php spécifique par langue qui contient tous les textes.
Par exemple :


//Fichier français
$L = array();
$L['msg1'] = "Bonjour";
$L['msg2'] = "Cliquez ici !";

// fichier anglais
$L = array();
$L['msg1'] = "Hello";
$L['msg2'] = "Click here !";



et ensuite tu fais l'include de l'un ou de l'autre selon la langue choisie par l'utiliasteur, et tu affiches avec un simple echo $L['msg1']; par exemple.

Voilà.
Salut Quentin,
Ca me plait bien comme soluce, je crois qu'on va faire un truc de ce genre là, je laisse le sujet ouvert jusqu'à demain pour d'autres remarques éventuelles... et je reste aware Smiley lol
Merci
Modifié par zanzibar (12 Sep 2005 - 18:42)
zanzibar a écrit :
Le switch Fr/En est fait entre les pages index_fr et index_en en cliquant sur le drapeau qui va bien.
A la racine du site j'ai ajouté une page index avec une redirection en php qui lance index_fr dans le répertoire Fr

Tout ça valide et fonctionne mais est-ce une/la bonne solution?
En particulier en terme de référencement, ma page de redirection ne va- t-elle pas gêner le travail des robots recherchant les mots clé?

Les moteurs suivent les liens "en dur". Si je comprends bien, tu as une page d'accueil commune aux 2 langues, sur laquelle tu as placé 2 liens : vers index_fr et vers index_en. Ensuite, depuis ces pages tu accèdes aux autrs pages vie des liens classiques...
Aucun problème les moteurs suivent les liens. Maintenant, reste à savoir comment ils vont réagir aux contenus, je suppose que tu vas devoir travailler tes titres, descriptions et mots clés dans les 2 langues, avec les balises meta qui indiquent les langues dans chaque page pour que les moteurs indexent tes pages en français et en anglais...
Une question peut-être à aller regerder de plus près sur webrankinfo ?
Bonjour,

La meilleure solution du point de vue du référencement consiste à ce que TOUT ce qui peut constituer un argument de référencement soit utilisé comme argument de référencement.

Il en va de la balise "title" comme de l'url, du contenu textuel de la page et des balises "title" et "alt" des images...

A noter que "title" s'utilise également avec profit pour les liens.

Pour un site statique contenant peu de pages j'opterais pour une page d'index à la racine du site qui serait bilingue et décrirait l'objet du site, puis 1 lien vers la page index du répertoire "fr" et un autre vers le répertoire "en", chacun contenant donc des pages à l'url explicite dans la langue considérée (ici-on-parle-de-ceci.php).
IL faudrait rediriger directement vers la page fr si l'utilisateur est francophone, et la page en sinon.
Pour ça, il faut regarder la variable de serveur ACCEPT_LANGUAGE, LANGUAGE, etc ou quelque chose du style, si le navigateur a fourni l'info.
Merci à tous de vos réponses

@jcm > ton lien
a écrit :
(ici-on-parle-de-ceci.php).
ne fonctionne pas.

@cktoon > Yes la config actuelle est bien celle que tu indiques sauf que dans la page d'index bilingue commune ce n'est pas un lien à proprement parler mais une redirection automatique php genre
<?php
header("location:  http://nomdusite.free.fr/Fr/index_fr.php");
 
?>
en tête de page qui est donc la première instruction sur laquelle le robot arrivera (j'aimerais pas qu'il s'arrête là Smiley ohwell ), ensuite en backup j'ai une entête XHTML avec DTD, déclaration de langue et liens classiques pour le cas fort improbable ou php ne fonctionnerait pas.
Sinon dans les pagesindex_fr et index_en, les titres et mots clé sont effectivement bien là dans chaque langue.

@quentinc > j'ai un autre site qui détecte la langue du navigateur et commute sur la bonne page en fonction de ça, c'est fait en js, même si ça marche dans les cas que j'ai testé, je suis sûr qu'il y a plein de cas où ça marche pas (ne serait ce que pour ceux qui désactivent js).... ta solution de traiter ça en fonction de la variable serveur est sans doute meilleure mais maintenant j'hésite à utiliser ce genre d'astuce à la fiabilité toujours un peu douteuse, c'est les trucs les plus simples qui fonctionnent le mieux Smiley smile

Bon en conclusion je creuse en encore un peu et je vais voir sur WEBRANKINFO, mais à priori j'ai un faible pour la soluce QUENTINC avec mots clé dans les deux langues... mais sans détection automatique de la langue Smiley smile
Smiley confus Smiley confus Smiley confus sorry sorry: j'ai cru que tu me renvoyais vers un site tartempion sur le sujet par un lien actif, bon c'est clair maintenant Smiley smile
Administrateur
Bonjour,

hormis la méthode indiquée par QuentinC qui concerne le texte traduit message par message, il y a le reste. Par exemple:
- les dates et heures (14:00 ==> 2 PM, 3/2 = 2 mars ou 3 février??),
- les dérivés de nombres (1st 2nd 3rd Nth 21st <== 1er Nème 21ème),
- NN € ==> £ MM,
etc
voire avec certaines langues les problèmes des pluriels (pour dire la même chose, usage du pluriel ou du singulier selon la langue, ainsi que différentes façons de mettre au pluriel une phrase ou un mot au singulier).

La lecture d'une partie de la doc de gettext me semble intéressante: qu'est-ce qui relève de l'internationalisation (i18n) et de la localisation (l10n), les méthodes adoptées par gettext pour s'en inspirer (tant qu'à devoir réinventer la roue, autant s'inspirer du design de cette roue-là qui a fait ses preuves Smiley cligne )
Modifié par Felipe (13 Sep 2005 - 16:20)
Bref encore un sujet + complexe qu'il ne parraissait au départ....
Merci des infos
Modifié par zanzibar (13 Sep 2005 - 16:26)
Je ne comprends pas où il pourrait y avoir un problème avec les pluriels étant donné qu'on traduit les textes en entier ? Les pluriels dans le texte vont avec, non ?

Pour les dates, par contre, c'est exact. Mais on peut s'en sortir avec, dans le fichier de langue contennat les textes :


// Fichier français
define("DATEFORMAT", "d/m/Y H:i:s");

//Fichier anglais
define("DATEFORMAT", "Y-m-d H:i:s");

//et puis, dans le fichier principal
echo date($monTimestamp, DATEFORMAT);


comme ça le problème des dates est réglé.
Pour les euros/dollars, là encore :


//français
$msg3 = "Cet article vous coûtera";
$moneySign = '€';
$moneyRate = 1.0;

//anglais
$msg3 = "This article will cost";
$moneySign = '$';
$moneyRate = 1.2;

//et puis :
$cost = 18; // en euros
$cost *= $moneyRate;
echo "$msg3 $cost $moneySign";




Comme ça c'est aussi réglé. Bon ne vous fiez pas au 1.2, je ne connais pas le rapport entre 1€ et 1$ mais c'est pour l'exemple.
C'est plus compliqué que ça pour les devises, par exemple l'unité monétaire se met en 1er en anglais.

Et puis il y a des divergences pour la séparation de la partie décimale (virgule en fr, point en en) et aussi des milliers (espace en fr, virgule en en).
Pour le formatage de nombres, number_Format me semble tout indiqué.
et pour le devises alors, on peut à la limite :


// français
$moneyValue = "%s €";

// anglais
$moneyValue = "$%s";

// et ensuite :
printf($moneyValue, 18.4);