Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Changement automatique de la langue...

7 réponses
Avatar
Laurent Pointal
Bonjour,

[Je ne sais pas si ce que je veux faire est même possible (pas trouvé
sur le net, pas réussi avec mes tests).]

Je travaille sur un site dont certaines pages auront des traductions en
anglais. Pour servir les pages, on utilise Apache et sa possibilité de
servir xxx.en.html ou xxx.fr.html en fonction des préférences réglées
dans le butineur client.
Là, ça marche bien, Apache cherche une page dans la langue adaptée au
client, et s'il ne trouve pas il sert l'autre langue.

Maintenant, il peut arriver des fois où mon butineur est réglé sur 'fr'
mais je veux pour une page voir la version 'en'. Je peux bien sûr aller
ouvrir mes préférences, modifier la langue, puis recharger la page -
c'est long, tout le monde ne connaît pas.

Donc, je voudrais pouvoir placer un petit script associé à un lien, qui
modifie - pour la session - la langue préférée de l'utilisateur... et là
ça semble impossible...


Q? quelqu'un a-t-il réussi via du Javascript à modifier la langue courante ?



Exemple de page:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Version française</title>
<script language="JavaScript" type="text/javascript">
<!--
function setNavLang(language)
{
if (navigator.userLanguage)
{
navigator.userLanguage = language ;
}
else if (navigator.browserLanguage)
{
navigator.browserLanguage = language ;
}
//document.location.reload();
//location.reload();
window.location.reload();
//window.location.href=window.location.href;
}
//-->
</script>
</head>
<body>
Là c'est la version française.

<a href="javascript:setNavLang('en')">==&gt; VEN</a>.
</body>
</html>



Note: j'ai essayé de modifier navigator.language, la console Javascript
de Firefox m'a indiqué que c'était une variable en lecture seule.

7 réponses

Avatar
Laurent Wacrenier
Laurent Pointal écrit:
Maintenant, il peut arriver des fois où mon butineur est réglé sur 'fr'
mais je veux pour une page voir la version 'en'. Je peux bien sûr aller
ouvrir mes préférences, modifier la langue, puis recharger la page -
c'est long, tout le monde ne connaît pas.



En demandant explicitement xxx.en.html, non ?
Avatar
Laurent Pointal
Laurent Wacrenier wrote:
Laurent Pointal écrit:

Maintenant, il peut arriver des fois où mon butineur est réglé sur 'fr'
mais je veux pour une page voir la version 'en'. Je peux bien sûr aller
ouvrir mes préférences, modifier la langue, puis recharger la page -
c'est long, tout le monde ne connaît pas.




En demandant explicitement xxx.en.html, non ?



Ca sera éventuellement la solution "fallback", avec un lien généré par
un script PHP côté serveur (il y a une partie commune sur toutes les
pages).
L'inconvénient est que ça n'est valide que pour la page en cours, dès
que l'utilisateur va cliquer sur un lien, il va retourner dans la langue
par défaut du butineur (il est demandé aux rédacteurs de ne pas
spécifier les extensions des pages afin que Apache fasse la sélection
selon ses règles de négociation avec le client - si une page n'existe
pas en anglais, elle sera quand même servie mais en français - éviter
les 404).
Avatar
Fabien LE LEZ
On Fri, 12 Aug 2005 13:58:20 +0200, Laurent Pointal
:

Je travaille sur un site dont certaines pages auront des traductions en
anglais. Pour servir les pages, on utilise Apache et sa possibilité de
servir xxx.en.html ou xxx.fr.html en fonction des préférences réglées
dans le butineur client.



Idée intéressante en théorie, mais douteuse en pratique -- comme
d'ailleurs tu viens de t'en rendre compte.


J'ai un Firefox en anglais, et je lis l'anglais presque aussi
facilement que le français.
S'il s'agit d'une page sur la programmation, je la préfère en
anglais, car il y a plein de termes francisés que je connais mal.
S'il s'agit d'une page sur les mathématiques, je la préfère en
français, car j'ai suivi mes études de maths en français.
Dans les autres cas, s'il y a une version originale et une
version traduite, je préfère la version originale.

Comment suis-je censé régler mon navigateur pour que ton site
marche ainsi ?


J'ai quant à moi préféré une autre solution : c'est un script
PHP qui décide quelle version afficher, et qui ajoute un lien vers la
version dans l'autre langue. Ainsi, le visiteur choisit la langue qui
l'intéresse, et peut changer à tout moment.

Pour un site assez petit, pensé tout de suite dans les deux
langues, j'ai mis tout simplement un paramètre :
http://machin.com/truc.php?langue=fr.
Pour un site plus gros, traduit en anglais sur le tard, j'ai mis
le paramètre dans le nom du serveur : http://fr.machin.com affiche la
version française, et http://en.machin.com la version anglaise.
Avatar
Damien Hardy
Fabien LE LEZ a écrit :
On Fri, 12 Aug 2005 13:58:20 +0200, Laurent Pointal
:


Je travaille sur un site dont certaines pages auront des traductions en
anglais. Pour servir les pages, on utilise Apache et sa possibilité de
servir xxx.en.html ou xxx.fr.html en fonction des préférences réglées
dans le butineur client.




Idée intéressante en théorie, mais douteuse en pratique -- comme
d'ailleurs tu viens de t'en rendre compte.


J'ai un Firefox en anglais, et je lis l'anglais presque aussi
facilement que le français.
S'il s'agit d'une page sur la programmation, je la préfère en
anglais, car il y a plein de termes francisés que je connais mal.
S'il s'agit d'une page sur les mathématiques, je la préfère en
français, car j'ai suivi mes études de maths en français.
Dans les autres cas, s'il y a une version originale et une
version traduite, je préfère la version originale.

Comment suis-je censé régler mon navigateur pour que ton site
marche ainsi ?


J'ai quant à moi préféré une autre solution : c'est un script
PHP qui décide quelle version afficher, et qui ajoute un lien vers la
version dans l'autre langue. Ainsi, le visiteur choisit la langue qui
l'intéresse, et peut changer à tout moment.

Pour un site assez petit, pensé tout de suite dans les deux
langues, j'ai mis tout simplement un paramètre :
http://machin.com/truc.php?langue=fr.
Pour un site plus gros, traduit en anglais sur le tard, j'ai mis
le paramètre dans le nom du serveur : http://fr.machin.com affiche la
version française, et http://en.machin.com la version anglaise.




Là je pense qu'il faudra voir du coté des extentions firefox (ou en faire une soit même) pour changer les préférences de l'onglet en court par exemple)

Dam
Avatar
Pierre Goiffon
Laurent Pointal wrote:
Je travaille sur un site dont certaines pages auront des traductions en
anglais. Pour servir les pages, on utilise Apache et sa possibilité de
servir xxx.en.html ou xxx.fr.html en fonction des préférences réglées
dans le butineur client.
Là, ça marche bien, Apache cherche une page dans la langue adaptée au
client, et s'il ne trouve pas il sert l'autre langue.

Maintenant, il peut arriver des fois où mon butineur est réglé sur 'fr'
mais je veux pour une page voir la version 'en'.



Ca arrive même souvent ! Cybercafé, entreprise, borne, enfin tout poste
partagé

Nous en avions parlé dans le temps sur f.c.i.w.auteurs... C'est
d'ailleurs le lieu le plus adapté pour discuter de la chose (copie et
suivi positionnés, du coup). Regardez sur Google groups, on retrouve pas
mal de choses avec "négociation de contenu" ou "accept-language" par
exemple - un peu beaucou pour que je les liste ici en fait
Il y a aussi différentes pistes proposées sur OpQuast...

Personnellement, je tend à penser que la négociation de contenu sur
l'entête accept-language n'est pas vraiment utilisable telle quelle, au
moins - exactement pour à cause du prb que vous rencontrez, et aussi
parce que par nature les historiques de révisions des documents ne sont
pas identiques, et que l'on peut vouloir accéder à la dernière version
en en alors que l'on a demandé le français par défaut. Je reste donc
partisan de laisser l'utilisateur choisir du début à la fin. Et pour
cela la solution la plus satisfaisante reste à mon avis une page sur le
site "central" qui aiguille vers telle ou telle langue, puis un nom de
domaine spécifique pour chaque langue (fr.machin.com, en.machine.com, ...).

Concernant la solution donnée par Laurent Wacrenier (diable il faut
employer les noms de famille maintenant - bref c'était pointer vers le
fichier .en.html) c'est la solution choisie sur plusieurs sites... Par
exemple la partie internationalisation du W3C :
http://www.w3.org/International/ (cliquer sur un article traduit)
Avatar
Nicolas Krebs
Bonjour,

Laurent Pointal écrivit dans l'article
news:ddi3ja$oa$

Pour la compréhennsion de la discussion, je rajoute deux paragraphes
présents dans news:ddi2sq$vsu$ mais absents de
news:ddi3ja$oa$ .

(début citation supplémentaire)
Je travaille sur un site dont certaines pages auront des traductions en
anglais. Pour servir les pages, on utilise Apache et sa possibilité de
servir xxx.en.html ou xxx.fr.html en fonction des préférences réglées
dans le butineur client.
Là, ça marche bien, Apache cherche une page dans la langue adaptée au
client, et s'il ne trouve pas il sert l'autre langue.




(fin citation supplémentaire)

Laurent Wacrenier wrote:
> Laurent Pointal écrit:
>
>>Maintenant, il peut arriver des fois où mon butineur est réglé sur 'fr'
>>mais je veux pour une page voir la version 'en'. Je peux bien sûr aller
>>ouvrir mes préférences, modifier la langue, puis recharger la page -
>>c'est long, tout le monde ne connaît pas.



(autre citation supplémentaire)
Donc, je voudrais pouvoir placer un petit script associé à un lien, qui
modifie - pour la session - la langue préférée de l'utilisateur... et là
ça semble impossible...




(fin citation supplémentaire)

> En demandant explicitement xxx.en.html, non ?

Ca sera éventuellement la solution "fallback", avec un lien généré par
un script PHP côté serveur (il y a une partie commune sur toutes les
pages).
L'inconvénient est que ça n'est valide que pour la page en cours, dès
que l'utilisateur va cliquer sur un lien, il va retourner dans la langue
par défaut du butineur (il est demandé aux rédacteurs de ne pas
spécifier les extensions des pages afin que Apache fasse la sélection
selon ses règles de négociation avec le client - si une page n'existe
pas en anglais, elle sera quand même servie mais en français - éviter
les 404).



1
Si vous voulez que le document envoyé soit adapté à la langue de
l'utlisateur, vous pouvez mettre en place une systèmes de choix coté
serveur, en anglais /content negotiation/ et /language negotiation/.
Consultez la documentation existente :
http://www.w3.org/TR/cuap#cp-laneg-def
http://www.w3.org/International/questions/qa-when-lang-neg
http://www.la-grange.net/w3c/cuap/#cp-laneg-def
http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html
http://www.ietf.org/rfc/rfc2616.txt
http://www.w3.org/International/questions/qa-apache-lang-neg
http://httpd.apache.org/docs/content-negotiation.html
news:fr.comp.infosystemes.www.serveurs
(Archive-Name: fr/chartes/comp.infosystemes.www.serveurs)
Ne pas oublier de remplir le champ Vary dans l'en-tête http de réponse,
avec au moins Accept-Language.
Lire aussi éventuellement
http://www.w3.org/International/questions/qa-http-and-lang
http://www.w3.org/International/questions/qa-mono-multilingual
http://www.la-grange.net/2004/06/03.html#negociation
(le logiciel SPIP pour sa part indique avec *(?|&)lang=code)
http://www.la-grange.net/w3c/cuap/#cp-bm-neg
http://www.w3.org/TR/cuap#cp-bm-neg .

2
Si vous voulez que les utilisateurs puissent accéder à une version d'une
ressource dans une autre langue, ajoutez un lien vers la ou les
traductions ou équivalences, comme dans les documents
http://www.w3.org/International/questions/qa-when-lang-neg.en
http://www.w3.org/International/questions/qa-when-lang-neg.fr et
http://www.w3.org/2004/11/sptour-pressrelease
(lire aussi http://www.w3.org/International/questions/qa-navigation-select )
et un champ d'en-tête html link rel="alternate"
( http://www.la-grange.net/w3c/html4.01/types.html#type-links
http://www.w3.org/TR/html401/types.html#type-links )
<link rel="alternate" href="URL" hreflang="LANG" type="text/html" />
où LANG est le code de langue indiqué dans
http://www.w3.org/International/articles/language-tags/ et
http://www.ietf.org/rfc/rfc3066.txt .

3
Si vous voulez que les utilisateurs puissent choisir une autre langue
pour le reste de leur visite, établissez une... session (hé oui, vous
aviez la solution)
http://www.w3.org/International/questions/qa-when-lang-neg#stickyness
pour laquelle la langue du reste de la visite est modifiée.
Utilisez une méthode coté client ou (de préférence) coté serveur.
Consultez le forum fr.comp.lang.* correspondant à votre méthode de
session choisie (fr.comp.lang.javascript si javascript,
http://faqfclphp.free.fr/#7 et fr.comp.lang.php si php,
news:fr.comp.infosystemes.www.serveurs pour un module d'apache).
Vous pouvez évidement permettre à l'utilisateur de changer
plusieurs fois de langue au cours d'une même session.

4
Si vous voulez savoir comment régler un logiciel client web pour qu'il
envoi un champs http Accept-Language (seule question en-charte dans
fr.comp.infosystemes.www.navigateurs),
http://www.w3.org/International/questions/qa-lang-priorities.html
(pour mozilla firefox 1.0 fr : dans l'aide, Options (Préférences) de Mozilla
Firefox, Langues et Outils, Options, Général, Langues).


Note pour les particpants de fr.comp.infosystemes.www.auteurs :
J'ai lus vos arguments sur ce sujet des mois précédents, mais aucun ne
m'a fait changer d'avis.

Article publié dans fr.comp.infosystemes.www.auteurs,
fr.comp.infosystemes.www.navigateurs, fr.comp.infosystemes.www.serveurs,
répondre dans un seul forum de préférence.

--
L'important c'est le lecteur.©
Avatar
Laurent Pointal
Laurent Pointal wrote:
Bonjour,




Merci à tous pour vos réponses.

Je crois que pour le moment ça va se traduire par des liens directs vers
les versions dans d'autres langues lorsqu'elles existent - relativement
facile à générér via PHP (il n'est pas prévu pour le moment de gérer de
session - service de pages statiques + inclusion via PHP d'éléments
récurrents).
Plus tard, peut-être...

L.Pointal.

Note: post et FUPTO sur fr.comp.infosystemes.www.auteurs