J'essaie d'obtenir le pays de mes clients, alors j'utilise la cultureinfo.CurrentCulture. Le problème est que lorsque mes clients canadiens utilisent mon site Web, ils se présentent comme américain. P>
Il ressemble à la cultureInfo.CurrentCulture renvoie le pays de mon serveur au lieu de leur pays. Alors, comment puis-je obtenir le pays de mes clients? P>
3 Réponses :
Je pense que vous devez écrire du code sur lire la culture de l'utilisateur à partir de la demande du navigateur entrant forte>, et définissez votre cultureIfo de cela. Ce type décrit comment ils le font : définir le Afficher la culture pour le fil actuel à la culture la plus appropriée de l'objet "Demande" HTTP «Demande» de l'utilisateur. P> Il a une excellente discussion là-bas, mais c'est essentiellement comment il le fait: p> Dans où c'est ce que cela est appelé: p> page_load code>, ils apportent cet appel:
uiutities.setculture (demande); code> p>
/// Set the display culture for the current thread to the most
/// appropriate culture from the user's incoming Http "request" object.
internal static void setCulture(HttpRequest request)
{
if (request != null)
{
if (request.UserLanguages != null)
{
if (request.UserLanguages.Length > -1)
{
string cultureName = request.UserLanguages[0];
UIUtilities.setCulture(cultureName);
}
}
// TODO: Set to a (system-wide, or possibly user-specified) default
// culture if the browser didn't give us any clues.
}
}
/// Set the display culture for the current thread to a particular named culture.
/// <param name="cultureName">The name of the culture to be set
/// for the thread</param>
private static void setCulture(string cultureName)
{
Thread.CurrentThread.CurrentCulture =
CultureInfo.CreateSpecificCulture(cultureName);
Thread.CurrentThread.CurrentUICulture = new
CultureInfo(cultureName);
}
Sur les bonnes lignes, mais notez que l'en-tête d'acceptation envoyé par le navigateur n'est pas nécessairement la langue préférée de l'utilisateur. Je suis en Europe et je vais avoir une version américaine de Windows, donc mon IE8 envoie en-nous. Notez également que le nom de l'en-tête d'acceptation de langue n'est peut-être pas un nom de culture .NET valide, de sorte que l'appel à CreatePecificculture doit être joint à un essai / prise.
Qu'est-ce que vous obtenez de demande.userLanguages? C'est-à-dire que vous êtes sûr de quelle langue votre navigateur demande?
IE: {Dimensions: [1]} [0]: "EN-US" FF: {Dimensions: [2]} [0]: "EN-US" [1]: "EN; Q = 0.5" Chrome: { Dimensions: [2]} [0]: "EN-US" [1]: "EN; Q = 0,8" Le problème est que, puisque je ne sais pas comment changer cela, je ne peux pas m'attendre à ce que mes utilisateurs sauront comment. Alors, puis-je supposer que mes clients canadiens auront tous de la bonne manière? Pas si sûr.
OK, ce n'est pas une hypothèse fiable que les utilisateurs comprendront comment un site Web connaît sa langue et leur culture préférées. De nombreux sites Web non américains montrent de petites images de drapeau près du haut de la page, où les utilisateurs peuvent cliquer pour choisir leur langue. Pourrait être une option pour votre site.
Vous avez juste besoin de définir l'attribut code> code> sur ceci réglera automatiquement la Vous pouvez également définir auto code> dans votre fichier web.config:
CourantCulture Code> à la culture du client. p>
uiculture code> sur
auto code> si vous utilisez des ressources localisées. < / p> p>
J'aimerais pouvoir uppoter cela plus d'une fois, merci. M'a pris 3 heures pour que cela fonctionne :)
Dans mon cas, ma machine avait à l'origine anglais - UK installé. J'ai ajouté la langue anglaise et l'a définie comme défaut. J'ai également vérifié que nous avons été correctement définis dans le registre. Malheureusement, Même alors la culture était incorrecte. Le Royaume-Uni apparaîtrait sur toute la machine et après avoir installé le pack de langues américain, le menu Démarrer s'est complètement passé. J'ai abandonné et réinstallé le système d'exploitation en utilisant une version anglaise américaine. p> system.threading.thread.currentThread.CurrentCulture code> toujours affiché la mauvaise culture, le Royaume-Uni. J'ai découvert que vous devez définir les options de langue. Téléchargez le pack de langue, l'écriture manuscrite et la parole. p>