2008-11-19 7 views
1

Bonjour,ASP.NET Mondialisation - dates Affichage

Toutes mes excuses pour la question de débutant. Je commence juste avec les paramètres d'internationalisation ASP.NET.

Informations générales:

J'ai un site Web qui affiche un objet <table> HTML. Dans cet objet HTML <table>, j'ai une colonne qui affiche les dates. Mon serveur étant aux États-Unis, ces dates apparaissent sous la forme MM/DD/YYYY. Beaucoup de mes utilisateurs se connectent à cette page Web via Excel, via l'interface Données -> Importer des données externes -> Importer une requête Web. Mes utilisateurs, pour la plupart, sont aux États-Unis, de sorte que ces dates s'affichent correctement dans leurs écrans Excel.

Maintenant, j'ai besoin de faire fonctionner la page web pour les utilisateurs britanniques. En effet, ils téléchargent les dates sous la forme MM/DD/YYYY, ce qui rend leurs feuilles de calcul inutilisables puisque leurs paramètres régionaux sont définis sur DD/MM/YYYY.

Ma question est:

Comment puis-je faire pour que le serveur Web se rend compte que la requête entrante a un paramètre de culture en-GB? Je pourrais concevoir ma propre petite solution de contournement personnalisée, mais je suis sûr que je ne suis pas le premier programmeur à le découvrir. Comment les pros s'en sortent-ils? Je suis à la recherche d'une solution qui serait relativement simple et rapide à mettre en place, mais je ne veux pas juste mettre une partie de ma propre logique buggy que je vais redouter dans 6 mois à partir de maintenant. Merci beaucoup à l'avance, -Alan.

+0

Il est i18n pas i13n. Quelqu'un peut-il changer cette étiquette? –

Répondre

2

Quelques points:

  • L'élément <mondialisation> a besoin aussi la culture d'attribut = "auto". L'attribut uiCulture affecte le langage utilisé pour récupérer les ressources. L'attribut de culture affecte la culture utilisée pour le formatage des nombres et des dates. Comme indiqué dans this MSDN article, il n'est pas recommandé de s'appuyer exclusivement sur les paramètres du navigateur pour déterminer la culture de l'interface utilisateur d'une page. Les utilisateurs utilisent fréquemment des navigateurs qui ne sont pas configurés selon leurs préférences (par exemple, dans un cybercafé). Vous devez fournir une méthode permettant aux utilisateurs de choisir explicitement une langue ou une langue et une culture (nom CultureInfo) pour la page.

+0

C'est tout! Merci. Je n'ai pas réussi à faire fonctionner web.config, mais avec votre premier commentaire tout a fonctionné. De cette façon, je n'ai pas besoin d'écrire de code. Merci beaucoup. – AlanR

2

Vous pouvez autoriser le navigateur pour définir votre culture d'interface utilisateur automatiquement si vous le souhaitez, en ouvrant le web.config, comme ceci:

<configuration> 
    <system.web>  
     <globalization uiCulture="auto" /> 
     ... 

Et puis la culture définie par le navigateur sera automatiquement en votre application Cela signifie que lorsque vous avez les valeurs de date/heure d'affichage du framework, elles seront formatées en fonction de la culture d'interface utilisateur du thread en cours. Cela vous sera également utile si vous utilisez des devises et/ou du texte localisé (cependant, vous devez fournir les ressources localisées pour chaque culture que vous supportez).

1

Vous pouvez également accepter un paramètre de chaîne de requête pour remplacer les paramètres de culture.

L'initialisation de la culture devrait aller dans la méthode Page.InitializeCulture.

protected override void InitializeCulture () 
{ 
    Thread.CurrentThread.CurrentCulture 
    = Thread.CurrentThread.CurrentUICulture 
    = Request.QueryString [ "culture" ] != null ? new CultureInfo (Request.QueryString [ "culture" ]) : CultureInfo.InvariantCulture; 
    //base.InitializeCulture (); 
} 

Utilisation: http://tempuri.org/page.aspx?culture=en-GB

+0

En fait, cette page Web est appelée à partir d'un complément Excel. Je ne voudrais pas trop autour de détecter les paramètres régionaux de la machine sur VBA :). – AlanR

+0

Toujours, très bon point sur où je devrais être l'initialisation de la culture. – AlanR

Questions connexes