01. maj 2002 - 16:08Der er
18 kommentarer og 2 løsninger
Hvordan læser man Regional Settings via Java?
Jeg vil gerne vise tal, med brugerens lokale settings. Fx 10.000,50 i Danmark, men 10,000.50 i USA. Hvordan får jeg fat i Regional Settings fra JavaScript (eller Java)?
Til Chewie: Spørgsmålene er ens, ja, men jeg vil gerne have både Java-folk og JavaScript-folk til at kigge på det. Derfor har jeg oprettet spørgsmålet begge steder. Jeg kunne ikke se, hvordan jeg ellers skulle få spørgsmålet til at figurere begge steder, men det ved du måske...
Java løsning: --------------------------------------------------------------- double value = 10000.50; // Tal værdi NumberFormat nf = NumberFormat.getInstance(); // Objekt til tal konvertering String localValue = nf.format(value); // Konvertér til brugerens lokale settings
elster: det er en korrekt løsning, desværre vil de fleste brugere ikke få det rigtige resultat idet man som regel bare downloader fra java.sun.com og derved arver Locale.US som default.
carstnen knudsen >> Nej! Når du kalder NumberFormat.getInstance(), bliver tallet formateret, efter de regler der er sat op i operativsystemet (kontrolpanelet i tilfælde af windows). Dette kald har samme virkning som hvis du kaldte NumberFormat.getInstance(Locale.getDefault()). Hvis du i kontrolpanelet f.eks. ændre så du vil bruge punktum som decimaltegn, så vil det formaterede tal, stemme præcis overens med dette. Denne løsning virker perfekt!
Selvfølgelig downloader man altid en engelsk/amerikansk version af java VM. Jeg har f.eks. aldrig downloaded en dansk version:-) Men en engelsk/amerikansk version dog alligevel godt arbejde sammen med operativsystemet, så vi ikke kommer ud i de problemer du beskriver.
Nå ok, jeg opdagede lige at det ikke er nok bare at ændre decimaltegnet i kontrolpanelet, hvis man vil have et andet talformat ud.
Men hvis du vælger et andet sprog under "Kontrol Panel" -> "International", så vil det formaterede tal stemme overens med dette. Hvis du vælger "Dansk" vil det formaterede tal være "10.000,50", og hvis du vælger "Engelsk (USA)" vil det være "10,000.50". Det må jo være det han er ude efter.
elster & disky: Naturligvis står jeg bag det jeg siger. Jeg har her kørt på tre forskellige systemer der alle giver amerikansk format. Det var alt jeg sagde og det har jeg ret i! Der er rigtig mange der ikke vil køre med danske betegnelser (Mappe etc) og de får naturligvis den amerikanske version fordi deres oprativsystem ikke er sat op til dansk. Det gælder ikke mindst store firmaer og uddannelsesinstitutioner.
carsten >> Det har ikke noget som helst at gøre med det sprog dit operativsystem har. Det er fuldstændig lige meget om der står "mappe" eller "directory". Vi har både engelske og danske versioner af Windows. Men inde i kontrolpanelet står der at vi befinder os i Danmark og at programmer skal benytte Danske (Danish) indstillinger til formatering af datoer, tal, klokkeslæt osv. Hvis du i har valgt at dine programmer skal benytte Amerikanske indstillinger ved sådanne formateringer, så er det jo klart at du får et amerikansk format tilbage. Og det gælder alle programmer - ikke kun Java VM. Hvordan skulle noget som helst program vide at du vil vise tal efter danske regler, når der er valgt at det skal gøres efter amerikanske regler? Det er jo ikke noget der lige giver sig selv.
Præcis! de fleste (her ihvertfald) vil ikke se det fordi de ikke benytter muligheden for at køre danske indstillinger. PS Jeg skrev "korrekt løsning" og kommenterede blot at mange inklusive mig selv ikke vil se det virke, jeg er udemærket klar over at du selv kan sætte det op som du har lyst, det er der dog mange der ikke gør. Jeg indrømmer naturligvis blankt at jeg kunne have skrevet en ordentlig forklaring!
carsten >> Han skal have en løsning der kan formatere tal efter "brugerens lokale settings". Og det er præcis hvad denne løsning gør. Og så er den ikke længere. Og det virker også hos dig - det sker efter dine lokale settings.
elster: her er det jeg skrev først: "elster: det er en korrekt løsning" det betyder at den løsning du foreslog er korrekt! Vi er også enige om at det virker også hos mig! Jeg tror vi skal lade det være punktum og så få lavet nogle gode svar til nogle af de andre spørgsmål. Forhåbentlig bliver spørgsmålet også lukket snart.
Jo da. Du fik det bare til at lyde som om at det ikke virker hvis man downloader fra java.sun.com, eller har en engelsk version af sit operativsystem. Undskylder misforståelsen.
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.