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

 

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

Περίεργο πρόβλημα localization (ASP.NET 2.0 + Local Resource Files)

  •  11-02-2007, 00:12

    Περίεργο πρόβλημα localization (ASP.NET 2.0 + Local Resource Files)

    Για να μην το λέω στο τέλος, είναι ένα DNN module. Αν υποψιάζεστε οτι αυτό έχει να κάνει κάτι με το πρόβλημα που θα διαβάσετε, πείτε τό μου.

    ΣΕΝΑΡΙΟ: Εχουμε λοιπόν ένα user control, έστω myControl.ascx. Μεσα σε αυτό έχουμε π.χ. ένα label, έστω:

    <asp:Label ID="sss" runat="server" meta:resourcekey="sss" Text="tipota"></asp:Label>

    Το meta προέκυψε από την αυτόματη εισαγωγή όταν χρησιμοποιησα τη λειτουργία Tools->Generate Local Resource του VS 2005. Το αρχικό ήταν sssResource1 (οπως το βγάζει το VS) αλλά με ένα γενναίο search and replace στο .resx και στο .ascx αρχείο έγινε πάλι sss. Δεν πιστεύω ΟΥΤΕ αυτό να έχει να κάνει με το πρόβλημα, γιατί όπως θα δείτε παρακάτω λειτουργεί με εναλλακτική.

    ΠΡΟΒΛΗΜΑ: Το πρόβλημα είναι οτι:

    - Ενώ το όνομα και η θέση του resource file (myControl.ascx.resx) είναι σωστά
    - Ενώ υπάρχει μέσα στο resx αρχείο το sss.Text με τιμή π.χ. "katitis"
    - Ενώ έχει οριστεί το "meta:" στα attributes του control

    Το localization συνεχίζει να βγάζει την τιμή "tipota" (που εχει δηλωθεί) και όχι την τιμή "katitis". Σαν να μην έχει διαβάσει ποτέ την τιμή από το resource file.

    Για να τα κάνω πιό ωραία τα πραγματα, το property grid του control ΞΕΡΕΙ οτι η τιμή αυτή θα αντικατασταθεί και εμφανίζει στο text property του control το αντίστοιχο εικονιδιάκι.

    ΕΝΑΛΛΑΚΤΙΚΑ: ΑΝ ΟΜΩΣ ΠΑΩ στο Page_Load και επιχειρήσω να κάνω κάτι σαν:
    Me.sss.Text = Localization.GetString("sss.Text", Me.LocalResourceFile)

    ΤΟΤΕ όλα είναι ωραία! Το label παίρνει την τιμή "katitis"! Εδώ ήταν που άρχισα να αφρίζω.

    Η ερώτησή μου είναι: ΓΙΑΤΙ δεν δουλεύει το αναθεματισμένο localization του ASP.NET 2.0 σε αυτή την περίπτωση; Μήπως φταίει ο τρόπος που φωνάζει τα modules του το dnn; Μήπως είναι βλαμμένο το δικό μου το σύστημα; Μήπως δεν έχω προσέξει κάτι; Δεν βρήκα πουθενά ακόμα απάντηση, δεν φαίνεται να αντιμετωπίζει κανείς άλλος το πρόβλημα ή εναλλακτικά κανένας δεν έχει επιχειρήσει να φτιάξει DNN module με ASP.NET 2.0 localization και τη χρήση του meta: attribute.

    Το starter kit που χρησιμοποιώ για το module είναι για την έκδοση 4.3.4. Η έκδοση αυτή έχει ένα γνωστό πρόβλημα με το localization (οταν δεν υπάρχει χρήστης logged in, η τιμή του Me.LocalResourceFile δεν έρχεται σωστά. Διορθώνεται απενεργοποιώντας το caching στο module - μη με ρωτήσετε γιατί! - Απλά για να προλάβω κανέναν π.χ. Αγγελο, το συγκεκριμένο πρόβλημα δεν έχει κατά πάσα πιθανότητα σύνδεση με το δικό μου, μια και όντως διορθώθηκε - αλλα το δικό μου πρόβλημα παρέμεινε).


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
    Δημοσίευση στην κατηγορία: , , , ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems