Bonjour,
la détection automatique par javascript de la langue du navigateur (avec direction vers la page adéquate) est-elle, selon vous efficace et suffisante ?

Ce que je propose :
<!doctype html>

<html lang="fr">

<head>

<meta charset="utf-8" />
<meta name="description" content="Sélection automatique de la langue selon celle du navigateur." />

<title>Sélection automatique de la langue</title>

<script>
if (navigator.userLanguage) //Si InternetExplorer v. < 11
var x = navigator.userLanguage;
else
var x = navigator.language;

if(x = "fr") document.location.href = 'francais.html';
else if(x = "en") document.location.href = 'english.html';
else if(x = "it") document.location.href = 'italiano.html';
else if(x = "es") document.location.href = 'espanol.html';

else document.location.href = 'english.html'; // Page par défaut si la langue n'est pas reconnue.
</script>

</head>

<body>

<div>
Sélection automatique de la langue selon celle du navigateur ...
</div>

</body>

</html>
La 'redirection' sera automatique et instantanée.

Je postule de cette façon ... qu'un Français à Tokyo ayant configuré le navigateur en langue française verra bien s'afficher la page française. Idem pour un Italien séjournant à Moscou : il aura bien la page en italien parce qu'il aura configuré le navigateur en italien. Et qu'un Saoudien à Paris aura la page en anglais ...
Modifié par pictural (01 Sep 2015 - 13:23)
Bonjour Picturial
Personnellement je fais ça en PHP dans un fichier index.php: quand l'utilisateur se connecte, je retrouve non pas seulement LA langue favorite de l'utilisateur, mais toutes les langues déclarées et la priorité que leur donne l'utilisateur, ce qui permet de choisir la langue la plus appropriée.
De facon intéressante, ces informations sont bien entendu disponibles au navigateur, puisqu'il les transmet au serveur dans la requête HTTP, mais il n'est pas possible d'y accéder en Javascript, ou du moins ce n'est possible qu'avec certains navigateurs, c'est à dire qu'on ne peut pas raisonnablement bâtir une stratégie sur cette fonctionnalité.
Modifié par PapyJP (01 Sep 2015 - 07:45)
Bonjour PapyJp,
je te remercie pour cette réponse fort bien argumentée, et lumineuse de simplicité ; et je devine que tu avais deviné que j'en avais ressenti le manque et le besoin ...
pictural a écrit :
Bonjour PapyJp,
je te remercie pour cette réponse fort bien argumentée, et lumineuse de simplicité ; et je devine que tu avais deviné que j'en avais ressenti le manque et le besoin ...

Je vais joindre le bout de code php correspondant dès que j'aurai un peut de temps, j'espère cet après-midi.
Et en fait d'ergonomie, je ne manquerai pas de faire apparaître également une sélection manuelle de l'une des 4 langues. La proposition (littéraire, car je n'aime pas les seuls drapeaux !) pourrait être rédigée dans la langue détectée ...
Voici le bout de code promis
Ce bout de code n'a pas été testé tel quel, c'est un dérivé de ce que j'utilise.
Si tu l'utilises, mets le au point et renvoie la version qui marche, ça pourra servir à d'autres.
Le cookie n'est pas indispensable
Les commentaires sont avant la ligne à laquelle ils s'appliquent
<?php
    /* search for a "lang" in POST arguments 	*/
    $userLang = $_POST['lang'];
    /* if none, search in in GET arguments		*/
    if(!isset($userLang)) $userLang = $_GET['lang'];
    /* if none, search in cookies				*/
    if(!isset($userLang)) $userLang = $_COOKIE['lang'];
    /* list of supported languages				*/
    $LANGUAGES = array('en', 'fr', 'it', 'de', 'es');
    $langValues = array();
    /* set "-1" for supported languages			*/
    foreach $LANGUAGES as $lang) $langValues[$lang] = -1;
    /* search in navigator language preferences	*/
    if(!isset($userLang)) {
        $langItems = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
		/* look in language list				*/
        foreach($langItems as $langItem) {
			/* force q to 1 if not provided				*/
            list($lang, $val) = explode(';', $langItem . ';q=1');
			/* eg en-us => en, fr-be => fr, etc.		*/
            $lang = substr($lang, 0, 2);
			/* should be q=number						*/
            list($q, $value) = explode('=', $val);
			/* priority value							*/
            $value = (float)$value;
			/* if $lang is one of the supported languages*/
			if(in_array($lang, $LANGUAGES)) {
				$prevValue = $langValues[$lang];
				/* set priority to the highest value	*/
				if($value > $prevValue) $langValues[$lang] = $value;
			}
        }
		/* sort the list in decreasing order			*/
		arsort($langValues);
		foreach($langValues as $lang => $value) {
			/* consider the supported language with highest priority */
			if($value >= 0) $userLang = $lang;
			break;
		}
    }
	if(!isset($userLang)) $userLang = 'en';
    setcookie('lang', $userLang, (time() + 3600 * 24 * 365), '/');
	/* make the cookie valid for one year 		*/
?>
Ok PapyJp ! et merci.

Je verrai cela prochainement. Or pas tout de suite, parce que la création d'un site à vocation touristique et professionnelle nécessite d'abord la collecte (relationnelle) et la traduction des données d'une douzaine d'artisans et autres artistes implantés de façon récente et pérenne dans la petite ville française où je viens de m'installer (...). Je me suis proposé de créer et de réaliser pour notre 'collectif spontané' le site web (que je me surprends à nommer 'le sib' !).

Celui-ci sera responsive et dynamique (html css javascript), et précisément conçu comme une 'vitrine d'atelier et de galerie', même si d'emblée le php y participerait. Il devrait se développer lentement mais sûrement, au fil des mois et de l'intérêt (de fréquentation) qu'il aura suscité ... (+ les archives fabuleuses du sib, + les grands délires artistiques, + les petits potins artistiques, + le courrier des visiteurs, + les événements éphémères, + ...)

En soi l'aventure humaine s'avère passionnante. Une stratégie identitaire s'en dégage actuellement qui soit puissante et autonome, hors de toute allégeance à une 'Comcom', à un Office de Tourisme, à un annonceur ou à un partenaire ... (dans un premier temps : faire nos preuves afin de nous hisser à la qualité d'interlocuteur 'audible' et cohérent). En somme, ce sera à chacun de mener des efforts prodigieux et talentueux !

Je reviendrai volontiers vers toi et vers les Alsanautes lorsqu'en fin de septembre le site sera opérationnel et disponible en ligne. A +++.
Modifié par pictural (01 Sep 2015 - 16:16)