Comment puis-je (un Américain) tester si mon application ASP.NET/SQL serveur gère correctement décimaux pour l'Allemagne

StackOverflow https://stackoverflow.com/questions/717447

Question

Aux États-Unis, vous utilisez un « » comme séparateur, mais en Allemagne vous utilisez un « ». Je suis en train de vérifier si ma logique est assez intelligent pour gérer un ou l'autre, mais il me semble être ne pas avoir mis ma machine Windows 2000 en mode allemand.

Je suis allé au Panneau de configuration, Options régionales et changé « Votre locale » à « Allemagne ». Je puis redémarré IIS et SQL Server. Mais mes changements ne semblent pas avoir pris effet.

Ces lignes montrent toujours « » comme le séparateur.

System.Globalization.CultureInfo ci = new     System.Globalization.CultureInfo (     System.Threading.Thread.CurrentThread.CurrentCulture.Name);

Response.Write (ci.NumberFormat.NumberDecimalSeparator);

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

La meilleure façon de tester est d'ajouter un élément de mondialisation à votre web.config, par exemple:.

<system.web>
   <globalization culture="de-DE" uiCulture="en-US" />
</system.web>

Changer la culture à de-DE aura une incidence sur la date et les formats numériques: vous pouvez également changer uiCulture si vous voulez, en laissant uiCulture en-US signifie que vous obtiendrez des messages d'exception en anglais américain

.

Autres conseils

Lorsque vous définissez vos paramètres régionaux, avez-vous à vous « Appliquer tous les paramètres du compte d'utilisateur actuel et au profil utilisateur par défaut » (onglet Avancé)?

Cela devrait le faire dans la plupart des cas. Je suppose aussi que votre culture est préréglée pas « en-us » dans l'élément globalization de Web.config.

Il semble que vous ne voulez pas le faire en définissant vos paramètres de culture manuellement dans le code, plutôt que vous voulez les paramètres hérités par système. Que, OMI, est un bon moyen de vérifier depuis vos modifications doivent être propagées au serveur SQL ainsi.

Il est généralement la mauvaise chose à faire de la gestion d'un site Web des problèmes de mise en forme comme le séparateur décimal dépendant de l'environnement local du serveur Web. Cela ajoute un problème de configuration du serveur qui peut rendre plus difficile à déployer votre application, tout en fait pas nécessairement donner à l'utilisateur final ce qu'ils veulent. Par exemple, vous voudrez peut-être installer un Français et un déploiement anglais de la même application à un seul serveur (canadien!).

Il est aussi courant pour les paramètres régionaux du système à régler à quelque chose d'inapproprié en raison de problèmes hérités du passé (par exemple. Les applications qui ne fonctionnent en japonais, ou des serveurs de production partout dans le monde en cours d'exécution en États-Unis comme la « version canonique de Windows » ).

Il est normalement préférable de gérer cela dans la couche d'application, ayant soit l'option d'une locale par le déploiement de votre code de site, ou (le cas échéant) une option locale par utilisateur du site. Ensuite, tout le monde peut se connecter à l'application et obtenir la mise en forme numérique appropriée.

Enfin, si l'interface de votre application est exclusivement anglais, il peut être plus approprié de coller avec le numéro anglais formatage de toute façon. Allemands sont habitués à cela; il pourrait en fait être plus source de confusion pour avoir un mélange de conventions de l'interface utilisateur anglaise et allemande ensemble. OMI:. Localize bien, ou pas du tout

Je pense que ce que vous êtes après est l'onglet Formats (la première personne là).

Vous pouvez définir votre culture actuelle d'être allemand.

Je pense que ce serait plus facile que de changer vos paramètres régionaux

Si vous voulez vraiment frapper celui-ci ... Les machines virtuelles sont votre ami. Mais vous avez vraiment besoin d'un abonnement msdn pour obtenir la version allemande d'un os.

Charger un os (ou Vista Windows XP) dans une machine virtuelle, puis accédez au site Web.

Je ne pense pas que IIS utilise le paramètre de région. Vous devez définir le CultureInfo explicily dans votre code.

Si vous testez juste une fois, vous pouvez changer la ligne de lire ceci:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");

et changer de nouveau par la suite. Vous pouvez utiliser des chaînes comme ça si vous voulez faire un tas de tests unitaires.

Puis-je préciser quelque chose, vous voulez mettre votre machine en mode allemand pour tester votre application web, qui se trouve être en cours d'exécution sur la même machine que le navigateur?

Lorsque cela est en cours d'exécution pour de vrai peut-on supposer que le sever pourrait être hébergé en dehors de l'Allemagne (ou peut-être en Allemagne, mais sur une machine mis en place avec une locale des États-Unis - il arrive beaucoup). Si la mise en culture de sorte que la sur le serveur n'est pas vraiment ce que vous voulez, et vous ne serez probablement pas en mesure de le faire lors du déploiement de toute façon.

Vous avez également un autre problème, il n'y a aucun moyen infaillible vous pouvez détecter que la culture de votre utilisateur souhaite utiliser. Vous pouvez détecter toutes sortes d'informations des en-têtes HTTP, faire une recherche de domaine sur l'adresse IP, mais si un Allemand voulait utiliser votre site à partir des États-Unis, ou un Américain était en Allemagne et je voulais voir « » et non « » pour le séparateur décimal?

Pour mettre une autre façon, je le dis n'a pas d'importance ce que la culture utilise le PC de votre client - ce ne sont pas pertinentes, car une fois que vous allez sur le web tous les paris sont ouverts - même si votre application ne détecte votre culture correctement il pourrait ne pas être ce que votre utilisateur veut!

Alors, la façon dont je le faire est de demander à l'utilisateur la langue qu'ils veulent et puis définir explicitement les paramètres régionaux dans votre application au moment de l'exécution. Cela ne signifie pas demander à l'utilisateur de choisir un langague mais il est le seul moyen d'être sûr d'utiliser les paramètres régionaux bon pour l'utilisateur. Si tous vos utilisateurs sont alors allemand, vous n'avez pas à demander, vous pouvez simplement coder en dur il. Si son approche semble que cela pourrait fonctionner alors il y a un code bon exemple ici: http: //msdn.microsoft.com/en-us/library/bz9tc508.aspx .

Bonne chance, ou plutôt Viel Glück!

Voici un article

Testez facilement votre code pour les cultures multiples

http: / /haacked.com/archive/2007/06/14/easily-test-your-code-for-multiple-cultures.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top