Avatar billede _basil Nybegynder
30. august 2007 - 17:40 Der er 3 kommentarer

Globalization opfører underligt

Hej eksperter

Jeg oplever et underligt fænomen. Vi har et miljø med flere webservere med forskellige setup. På alle servere ligger samme applikation. Vi har kogt problemet ned til følgende: (eksemplificeret ved en meget simpel side)

    protected void Page_Load(object sender, EventArgs e)
    {
    Response.Write(Thread.CurrentThread.CurrentCulture.Name + "<br />");
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("da-DK");
    Response.Write(2.ToString("c", Thread.CurrentThread.CurrentCulture) + "<br />");
    Response.Write(DateTime.Now.ToString() + "<br />");   
     
    }


Ovenstående giver følgende output:

da-DK
$2.00
8/30/2007 5:35:27 PM

Hvad er det der gør at den satte culture ikke formaterer værdierne rigtigt??
Avatar billede _basil Nybegynder
30. august 2007 - 18:16 #1
Har undersøgt det lidt nærmere. Ved at indføre følgende kode:

Response.Write("Language " + cultureInfo.Name + "<br />");
Response.Write("---------------------------------<br />");
Response.Write("CurrencySymbol " + cultureInfo.NumberFormat.CurrencySymbol.ToString() + "<br />");
Response.Write("DateSeparator " + cultureInfo.DateTimeFormat.DateSeparator + "<br />");
Response.Write("LongDatePattern " + cultureInfo.DateTimeFormat.LongDatePattern.ToString() + "<br />");
Response.Write("ShortDatePattern " + cultureInfo.DateTimeFormat.ShortDatePattern.ToString() + "<br />");
string[] days = cultureInfo.DateTimeFormat.DayNames;
for( int i = 0; i < days.Length; i++)
{
Response.Write(days[i] + "<br />");
}
Response.Write("---------------------------------<br />");

Får jeg følgende output:
Language da-DK
---------------------------------
CurrencySymbol $
DateSeparator /
LongDatePattern dddd, MMMM dd, yyyy
ShortDatePattern M/d/yyyy
søndag
mandag
tirsdag
onsdag
torsdag
fredag
lørdag

Med andre ord er nogen af værdierne danske(dage), mens andre stadig er amerikanske
(dato)

Nogen der har et godt bud på hvad der kan være galt?
Avatar billede neoman Novice
30. august 2007 - 18:47 #2
http://msdn2.microsoft.com/en-us/library/bz9tc508(vs.80).aspx viser at det er for sent at  ændre cultureinfo ved pageload, og man skal i stedet for override InitializeCulture metode.

Hvorfor den så siger, at den nuværende culture er da-DK og stadig drysser  US-formater ind, er lidt mystisk, medmindre da-DK er blevet partielt omdefineret et eller andet sted, hvor den så tager fat i de manglende ting fra dens defaults.
Avatar billede _basil Nybegynder
30. august 2007 - 20:01 #3
Netop det at den drysser US-formater ind undrer mig gevaldigt. Jeg ved vi ikke har ændret dem andre steder i applikationen (lige nu er applikationen kun en Default.aspx)
Ved nogen hvor disse filer ellers ligger? Er de at finde et sted i .net frameworket filsystem?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester