Panagiotis Posted February 13, 2006 Report Share Posted February 13, 2006 Από το Pamal's weblog: Message Encoding στο Outlook Web Access 2003 Η Θεωρία…<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Το Outlook Web Access, σε αντίθεση με το παραδοσιακό Outlook δεν έχει φαινομενικά κάποιο σημείο στο οποίο να μπορούμε να ορίσουμε το encoding των μηνυμάτων που στέλνουμε. Άρα η ερώτηση είναι πως μπορούμε να το ελέγξουμε. Η απάντηση είναι: Με τη λίστα Language Preference του Internet Explorer. Όταν συνδεόμαστε στο Outlook Web Access, o web server (IIS) ζητάει από τον client (Internet Explorer) να μάθει ποια γλώσσα θεωρεί σαν πρωτεύουσα (χρησιμοποιώντας τον ειδικό header HTTP_ACCEPT_LANGUAGE). Αυτό που θα κάνει ο client είναι να κοιτάξει ποια γλώσσα είναι πρώτη στη λίστα του Language Preference (Tools – Internet Options – Languages) και να στείλει την απάντηση στον web server. Σαν αποτέλεσμα ο web server θα βάζει το αντίστοιχο encoding στα εξερχόμενα μηνύματα. Αν για παράδειγμα η πρώτη στη λίστα γλώσσα είναι τα Ελληνικά (el) τότε τα εξερχόμενα μηνύματα θα έχουν ISO-8859-7 encoding. Αν η πρώτη στη λίστα γλώσσα είναι τα Αγγλικά (en) τότε τα εξερχόμενα μηνύματα θα έχουν ISO-8859-1 encoding. Τόσα απλά. Κενή Λίστα; Τι συμβαίνει όμως όταν δεν υπάρχει καμία γλώσσα στη λίστα; O Internet Explorer δεν βγάζει κάποιο μήνυμα λάθους άμα βγάλετε όλες τις γλώσσες από τη λίστα άρα αυτό είναι κάτι που μπορεί να συμβεί. Σε αυτή την περίπτωση ο Internet Explorer θα ορίσει σαν preferred language τη γλώσσα που θα δει σαν default User Locale των Windows (στα XP αυτό το βλέπετε από το Control Panel – Regional and Language Options – Standards and Formats). Αν για παράδειγμα έχετε σαν default User Locale τα Ελληνικά (Greek) τότε ο Internet Explorer θα θεωρήσει πως σαν preferred language έχει το el. Αν αντίστοιχα έχετε English (United States), ο Internet Explorer θα αναγνωρίσει την γλώσσα en-us. Το registry key AcceptLanguage… Όταν αλλάζουμε τη λίστα στο Language Preference ενημερώνετε ένα κλειδί στη registry το συστήματος. Το κλειδί είναι το AcceptLanguage (τύπου “Reg_Sz”) και βρίσκετε στο HKEY_Current_User\Software\Microsoft\Internet Explorer\International. Ο παρακάτω πίνακας δείχνει τη τιμή του AcceptLanguage ανάλογα με τη λίστα του Language Preference. Language Preference AcceptLanguage Greek el English en Πρώτα Greek και μετά English el,en;q=0.5 Πρώτα English και μετά Greek en,el;q=0.5 Άδεια λίστα Το κλειδί είναι κενό Στην περίπτωση που υπάρχουν περισσότερες από μία γλώσσες στη λίστα, κάθε γλώσσα θα πρέπει να βαθμολογηθεί. Γι’ αυτό όπως βλέπετε στον παραπάνω πίνακα υπάρχει η παράμετρος q (Quality). Το q είναι ένα κλάσμα και μπορεί να πάρει τιμές από το 0 μέχρι το 1. Όσο μεγαλύτερο το q τόσο μεγαλύτερο και το preference. Αν κάποια γλώσσα δεν έχει q τότε θεωρούμε ότι έχει q = 1. Ας δούμε ένα παράδειγμα: en-us,ja;q=0.8,fr;q=0.5,de;q=0.3 Η παραπάνω λίστα μεταφράζετε ως εξής… Πρώτη γλώσσα είναι το en-us με q=1.0 (μιας και δεν έχει καθόλου q) Δεύτερη γλώσσα είναι το ja με q=0.8 Τρίτη γλώσσα είναι το fr με q=0.5 Τέταρτη γλώσσα είναι το de με q=0.3 Παρατηρήστε την τελευταία περίπτωση όπου η λίστα Preferred Language είναι κενή. Το registry key υπάρχει αλλά δεν έχει περιεχόμενα. Σε αυτή την περίπτωση θεωρούμε πως πάλι η γλώσσα που θα στείλει ο Internet Explorer στον server είναι η γλώσσα που έχουμε σαν default user locale. Αυτό μπορούμε να το επιβεβαιώσουμε αν απλά σβήσουμε το κλειδί και δούμε τι θα κάνει ο Internet Explorer: Σβήστε το registry key Στον Internet Explorer κάντε click στο Tools – Internet options – Languages Θα δείτε πως η γλώσσα που αντιστοιχεί στο default user locate έχει προστεθεί στη λίστα αυτόματα ενώ ταυτόχρονα ενημερώθηκε και το AcceptLanguage registry key. Πηγές: “Ask Dr. International” blog (Column #12) How To Hard Code the Language of OWA Interface Exchange Web Forms - Registry Language Fallback Link to comment Share on other sites More sharing options...
Recommended Posts