Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Greek globalization settings in ASP.NET 2.0

Îåêßíçóå áðü ôï ìÝëïò Nikolis. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 26-08-2010, 13:06. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-10-2006, 18:21 18523

    Greek globalization settings in ASP.NET 2.0

    Χαιρετώ την κοινότητα,

    Έχω δημιουργήσει ένα website σε ASP.NET 2.0 με C#. Έχω ορίσει το globalization section στο web.config ως εξης:

    <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="el-GR" uiCulture="el-GR"/>

    Σε αρκετές σελίδες υπάρχουν σημεία όπου χρησιμοποιώ την ToString("C2") για να εμφανίσω την τιμή ενός πεδίου που διαβάζω από τη βάση με μορφή currency. Όλα δουλεύουν χωρίς πρόβλημα στο μηχάνημα development (WinXP SP2, IIS v5.1) καθώς και σε έναν άλλο web server (Win2003 Server Standard Edition, IIS v6.0). Δηλαδή τα πεδία αυτά φαίνονται με τελεία στις χιλιάδες, κόμμα στα δεκαδικά, δύο δεκαδικά ψηφία και το σύμβολο του Ευρώ.

    Στον web server (Win2003 Server Standard Edition, IIS v6.0) του πελάτη (χρησιμοποιώ τη διαδικασία Publish του VS2005 και μετά copy των αρχείων για να ανεβάσω το site) το αποτέλεσμα δεν είναι το ίδιο. Ναι μεν φαίνεται το Ευρώ και δύο δεκαδικά ψηφία, αλλά με κόμμα στις χιλιάδες και τελεία στα δεκαδικά. Τα regional options είναι σωστά σεταρισμένα στα Ελληνικά, αλλά το ASP.NET δείχνει να τα αγνοεί (ακόμα και όταν έβαλα Αμερικάνικα ή Ηνωμένου Βασιλείου είχα το ίδιο αποτέλεσμα). Προφανώς στηρίζεται στο globalization section του web.config... Γιατί όμως δε δείχνει τα σωστά settings; Υπάρχει κάπου αλλού η πληροφορία για το ποιό θα είναι το decimal symbol και ποιο το digit grouping symbol για το "el-GR" culture στην ASP.NET ;;;

    Ευχαριστώ για το χρόνο σας,

     


    Νίκος Καπράλος
  •  13-10-2006, 12:51 18555 σε απάντηση της 18523

    Απ: Greek globalization settings in ASP.NET 2.0

    δεν έχω αντιμετωπίσει παρόμοιο πρόβλημα αλλά για δοκίμασε αυτές τις δύο:

    NumberFormatInfo.CurrencyGroupSeparator

    NumberFormatInfo.CurrencyDecimalSeparator
  •  13-10-2006, 14:45 18562 σε απάντηση της 18555

    Απ: Greek globalization settings in ASP.NET 2.0

    Το locale που χρησιμοποιεί το ASP.NET εξαρτάται τόσο από τα regional settings του Server όσο και του client. Αν δεν προσπαθήσεις να βάλεις "καρφωτό" κάποιο locale, το ASP.NET κατά κανόνα δεν θα έχει πρόβλημα. Αν το enableClientBasedCulture attribute του είναι true, το ASP.NET θα χρησιμοποιήσει τη γλώσσα που έχει επιλέξει ο χρήστης στα options του Internet Explorer (General Tab, Languages).

    Υ.Γ. Τώρα βρήκα κι ένα περίεργο. Σε ένα σημείο του MSDN λέει ότι το default αυτού του tag είναι false, άρα πρέπει να το βάλεις true. Στο documentation του λέει ότι δεν χρησιμοποιείται. Και η συμπεριφορά που περιγράφεις σημαίνει ότι μάλλον το default είναι true. Άντε βγάλε άκρη.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-10-2006, 15:02 18563 σε απάντηση της 18562

    Απ: Greek globalization settings in ASP.NET 2.0

    αφού το δηλώνει στο web.config δεν θα πρεπε να επιρεάζεται από τα regional settings

  •  13-10-2006, 15:41 18568 σε απάντηση της 18563

    Απ: Greek globalization settings in ASP.NET 2.0

    Το θέμα είναι ότι δεν πρέπει να καρφώνει κανείς regional settings είτε στo web config είτε στις σελίδες μέσα. Το ASP.NET καταλαβαίνει από μόνο του πως να κάνει τις μετατροπές. Παρόμοιες συζητήσεις έχουν γίνει πολλές φορές στο DNZ και η πηγή του προβλήματος είναι ότι κάποιος, κάπου, προσπάθησε να "καρφώσει" τα settings.

    Νομίζω΄πάντως ότι το globalization ορίζει τα default locales, δεν επιβάλλει τη χρήση τους. Αν το enableClientBasedCulture είναι true και ο χρήστης έχει βάλει στο language English, η ρύθμιση του χρήστη θα έχει προτεραιότητα
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-10-2006, 16:57 18573 σε απάντηση της 18568

    Απ: Greek globalization settings in ASP.NET 2.0

    Το θέμα είναι ότι πρόκειται για σελίδες με τιμοκαταλόγους προϊόντων και δε θέλω να εμφανίζονται πχ. αγγλικές λίρες ή δολλάρια στις τιμές. Θέλω ο χρήστης (ανεξάρτητα από τις ρυθμίσεις του browser) να βλέπει τις τιμές σε Ευρω και με κόμμα στα δεκαδικά.

    Εκτός των άλλων, δημιουργείται πρόβλημα στον υπολογισμό αθροισμάτων με JavaScript στον browser. Αν δεν είναι συγκεκριμένο το σύμβολο για τα δεκαδικά, η JavaScript τα μπλέκει και αθροίζει χωρίς να λαμβάνει υπόψη την υποδιαστολή.
    Νίκος Καπράλος
  •  13-10-2006, 19:24 18576 σε απάντηση της 18573

    Απ: Greek globalization settings in ASP.NET 2.0

    Στην περίπτωση αυτή, μια απλή ToString("C2") δεν αρκεί. Πρέπει να παρέχεις ρητά τo CultureInfo:

    System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("el-GR");
    string displayText = price.ToString("C2", ci.NumberFormat);


    Νατάσα Μανουσοπούλου
  •  16-10-2006, 09:51 18621 σε απάντηση της 18576

    Απ: Greek globalization settings in ASP.NET 2.0

    Αυτό το δοκίμασα ήδη και σε καναδυό web servers που έκανα δοκιμές δουλεύει σωστά. Το πρόβλημα δεν είναι ότι αγνοεί το CultureInfo που του παρέχω, αλλά ότι ο WebServer του πελάτη νομίζει ότι τα settings για το "el-GR" culture είναι η τελεία για τα δεκαδικά και το κόμμα για τις χιλιάδες. Αυτό πως μπορεί κανείς να το καθορίσει για το ASP.net ???
    Νίκος Καπράλος
  •  26-08-2010, 12:31 59757 σε απάντηση της 18523

    Απ: Greek globalization settings in ASP.NET 2.0

    Εστω και με καθυστέρηση....  μερικών ετών, θεωρώ ότι πρέπει να καταθεσω την εμπειρία μου σε παρόμοιο πρόβλημα που αντιμετώπισα.

    Το πρόβλημα προκύπτει από την εγκατάσταση του Server. Σε ενα server της DELL, Power Edge 840, οταν έκανα την εγκατασταση με το installation cd της DELL η αρχική εγκατάσταση επαιρνε τις ρυθμισεις στο regional settings για US. Παρόλο που έκανα τις αλλαγές στο regional settings, οι ημερομηνίες, τα δεκαδικά, οι χιλιάδες, το νόμισμα στις σελιδες οπου ειχα ημερομηνιες, δεκαδικά κ.α.  όλα τα εμφάνιζε σαν να ειχα επιλέξει US.

    Το πρόβλημα είναι σε Account που δημιουργηθηκε κατα την εγκατασταση και κληρονόμησε τις ρυθμίσεις εκεινη την στιγμή. Η λύση είναι με επέμβαση στο registry  HKEY_USERS\{userid}\Control Panel\International.  Σε καποιο user id υπαρχουν οι Ελληνικές ρυθμισεις και σε άλλ(α)ο οι Αμερικανικες. Με την αλλαγή των ρυθμισεων σε Ελληνικά δούλεψε κανονικά.

    Αν η εγκατάσταση ειχε γίνει χωρίς το installation cd, δεν θα υπήρχε κανένα πρόβλημα.

    "The problem is often that the user running either IIS or the application pool your app belongs to is a system account which was created when the server was installed. They therefore inherited whatever the default locale was at the time.

    If you can't fix it in regional and language options you can always try editing in the registry directly (with the usual proviso that messing around with the registry can seriously muck up Windows). The regional settings are all under HKEY_USERS\{userid}\Control Panel\International - if you compare what's there for each user with what you have under HKEY_CURRENT_USER\Control Panel\International it should be fairly obvious what to change. I've done this a few times on Windows 2000 servers and it's worked OK.

    The other option is just to create a new user on the machine with the correct locale and then set both IIS and the application pool to run with that identity."

    http://stackoverflow.com/questions/417497/change-default-locale-in-iis-6-0

     

  •  26-08-2010, 13:06 59759 σε απάντηση της 59757

    Απ: Greek globalization settings in ASP.NET 2.0

    Το θέμα σίγουρα δεν έχει να κάνει με το installation του server αλλά με τις ρυθμίσεις του web site, του browser και πως είναι γραμμένη η εφαρμογή. Είναι κάτι που το έχουμε συζητήσει πολλές φορές τα τελευταία χρόνια. Το χειρότερο που μπορεί να κάνει κάποιος είναι να αρχίσει να πειράζει το registry, άσε που ΔΕΝ θα έχει αποτέλεσμα. Εξάλλου, και η απάντηση στο post του stackoverflow είναι να χρησιμοποιήσεις το globalization section, όχι να αρχίσεις να πειράζεις το registry.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems