Une astuce toute simple qui permet automatiquement d'ouvrir votre site dans la langue du client.
Il faut dans mon exemple, mettre le code dans la page de demarrage (www.monsite.com/fr/default.aspx) à la racine du site www.monsite.com et mettre le site francais dans le sous dossier fr (www.monsite.com/fr/) et l'anglais dans le sous dossier en dans ses sous dossiers il faut bien sur avoir une page qui s'appelle Accueil.aspx
pour Changer la lange du navigateur et ainsi tester le code, dans IE OUtils>Options Internet>Langue
Vous voyez qu'il y a la possibilité de mettre plusieur langue dans un certains ordre
Ainsi avec mon code, si le navigateur est configuré en allemand comme langue principal et anglais comme langue secondaire, il va etre redirigé vers le site en anglais grace au deuxieme bloc select
Request.UserLanguages(0) recupere la premiere langue et
Request.UserLanguages(1) la deuxieme est ainsi de suite ...
Si toutefois, le code ne peut pas rediriger le navigateur, la page s'affichera, il faudra faire une page avec les liens et les navigateurs, (ce qui est grandement conseillé pour les moteurs de recherches ..)
Pour finir, je vous met ici : la liste des principaux EnglishName (non traduit en francais ...) attention à la casse
Czech
Danish
German
Greek
English
Spanish
Finnish
French
Source / Exemple :
Try
Select Case New CultureInfo(Request.UserLanguages(0)).EnglishName
Case "French"
Response.Redirect("fr/Accueil.aspx")
Case "English"
Response.Redirect("en/Accueil.aspx")
Case Else
Try
Select Case New CultureInfo(Request.UserLanguages(1)).EnglishName
Case "French"
Response.Redirect("fr/Accueil.aspx")
Case "English"
Response.Redirect("en/Accueil.aspx")
End Select
Catch ex As Exception
'Soit on met rien et il n'y aura
'pas de redirection et c'est à l'utilisateur
'de choisir sa langue grace à la page sur lequel est ce script
'Soit on redirige
'Response.Redirect("fr/Accueil.aspx")
End Try
End Select
Catch ex As Exception
'Soit on met rien et il n'y aura
'pas de redirection et c'est à l'utilisateur
'de choisir sa langue grace à la page sur lequel est ce script
'Soit on redirige
'Response.Redirect("fr/Accueil.aspx")
End Try
Conclusion :
Si vous avez des commentaires n'hésitez pas
J'ai rajouté une gestion d'erreur au cas ou l'utilisateur n'aurait pas de langue ou de deuxieme langue par défaut
25 avril 2004 à 21:14
Il suffit de garder les 2 premières lettres. Sinon ici j'utilise une variable session qui sauvegarde la langue jusqu'à une nouvelle requête...
J'ai donc réglé le problème complètement et le code C# ci-dessous fonctionne sans problème avec je pense toute les erreurs qu'il y a moyen :
if(Session["chosenlang"]== null || Request.Params["lang"]!= null )
{
if( Request.Params["lang"]!= null)
{
//session variable holds data for 20 minutes after the last request to an application to a particular user
Session["chosenlang"]=Request.Params["lang"];
}
else
{
// For each request initialize the culture values with
// the user language as specified by the browser.
if (Request.UserLanguages != null)
{
try
{
CultureInfo browserlanguage1 = new CultureInfo(Request.UserLanguages[0].Substring(0,2));
switch (browserlanguage1.TwoLetterISOLanguageName)
{
case "fr" :
Session["chosenlang"]="fr";
break;
case "en" :
Session["chosenlang"]="en";
break;
case "es" :
Session["chosenlang"]="es";
break;
case "nl" :
Session["chosenlang"]="nl";
break;
default :
try
{
CultureInfo browserlanguage2 = new CultureInfo(Request.UserLanguages[1].Substring(0,2));
if (Request.UserLanguages[1] != null)
{
switch (browserlanguage2.TwoLetterISOLanguageName)
{
case "fr" :
Session["chosenlang"]="fr";
break;
case "en" :
Session["chosenlang"]="en";
break;
case "es" :
Session["chosenlang"]="es";
break;
case "nl" :
Session["chosenlang"]="nl";
break;
default :
Session["chosenlang"]="en";
break;
}
}else Session["chosenlang"]="en";
}
catch(Exception err)
{
Session["chosenlang"]="en";
}
break;
}
}
catch (Exception err)
{
Session["chosenlang"]="en";
}
}
else
// Default to English if there are no user languages
Session["chosenlang"]="en";
}
}
Merci pour tous tes post...
MrFlo
25 avril 2004 à 18:32
pour ton code en C# je connais pas assez ce langage pour te dire comment faire mais ca doit pas etre compliqué :)
25 avril 2004 à 18:10
Si l'utilisateur n'a pas configuré de langue par exemple... erreur fatale ou si il n'y a qu'une langue... Ton code accède alors à une cellule d'un tableau qui n'existe pas...
Mais ce code m'interesse si quelqun à une idée pour gérer les erreurs voici le mien en C#:
CultureInfo browserlanguage1 = new CultureInfo(Request.UserLanguages[0]);
CultureInfo browserlanguage2 = new CultureInfo(Request.UserLanguages[1]);
switch (browserlanguage1.EnglishName)
{
case "French" :
Session["chosenlang"]="fr";
break;
case "English" :
Session["chosenlang"]="en";
break;
case "Spanish" :
Session["chosenlang"]="sp";
break;
case "Dutch" :
Session["chosenlang"]="nl";
break;
default :
switch (browserlanguage2.EnglishName)
{
case "French" :
Session["chosenlang"]="fr";
break;
case "English" :
Session["chosenlang"]="en";
break;
case "Spanish" :
Session["chosenlang"]="sp";
break;
case "Dutch" :
Session["chosenlang"]="nl";
break;
default :
Session["chosenlang"]="en";
break;
}
break;
}
19 avril 2004 à 18:25
19 avril 2004 à 12:14
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.