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

 

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

φόρτωμα resx αρχειων σε runtime

Îåêßíçóå áðü ôï ìÝëïò angarato_surion. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 09-08-2008, 12:52. Υπάρχουν 9 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-08-2008, 21:59 43991

    φόρτωμα resx αρχειων σε runtime

    Παιδια θα ήθελα να κάνω μια βιβλιοθήκη που να δίνει την δυνατοτητά να διαβάζει resx αρχεία και να αλλάζει το locale κάποιας φόρμας
    σε runtime. μιλαω για desktop εφαρμογη και την c# σε .net2 

    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  07-08-2008, 23:19 43992 σε απάντηση της 43991

    Απ: φόρτωμα resx αρχειων σε runtime

    Γιατί?

    Το .NET ήδη τα κάνει αυτά και μάλιστα αυτόματα. Αν προσέξεις στα properties της φόρμας θα δεις ότι έχει ένα property Localizable και ακριβώς από πάνω την επιλογή της γλώσσας. Μπορείς άνετα να ορίσεις όποιο χαρακτηριστικό της φόρμας και των control θέλεις ανά γλώσσα, απλά επιλέγοντας τη γλώσσα που θέλεις στο Language και κάνοντας τις αλλαγές που θέλεις. Το Visual Studio αυτόματα θα φτιάξει ένα νέο resx για τη γλώσσα με όλα τα properties που θα δώσεις. Αν θέλεις να ανοίξεις ένα οποιοδήποτε resx αρχείο κοίτα το System.Resources.

    Τέλος, το .NET φορτώνει αυτόματα τα κατάλληλα resources με βάση τη γλώσσα του UI του λειτουργικού. Στα Ελληνικά Windows θα φορτώσει τα ελληνικά resources και στα αγγλικά τα αγγλικά resources. Μπορείς όμως να "καρφώσεις" όποια γλώσσα θέλεις πειράζοντας το System.Threading.Thread.CurrentThread.CurrentUICulture αν και αυτό δεν είναι και τόσο καλή ιδέα. Εκεί που έχει νόημα είναι όταν ο χρήστης έχει ορίσει π.χ. ελληνικό Locale σε αγγλικά windows. Σε αυτή την περίπτωση το locale φαίνεται στο System.Threading.Thread.CurrentThread.CurrentCulture. Κάνοντας ένα System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture στον constructor της φόρμας μπορείς να κάνεις τη φόρμα να φορτωθεί με το locale του χρήστη.

    Αυτά όλα θα τα βρεις στο documentation, στο Globalizing and Localizing Applications


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-08-2008, 23:38 43993 σε απάντηση της 43992

    Απ: φόρτωμα resx αρχειων σε runtime

    με αυτον τον τροπο δουλευει η εφαμοργη , απλως διαβαζωντας ενα αρχειο κι μετα  αλλαζε το local με και κατι παρομοια System.Threading.Thread.CurrentThread.CurrentCulture
    απλως κ να υποθεσω γιανα προσθεσεις νεο locale θελει να ξανα κανεις compile ; 
    το ηθελα γιανα μην ανεβασω στο net  τα resx αρχεια ...

    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  08-08-2008, 10:07 43997 σε απάντηση της 43993

    Απ: φόρτωμα resx αρχειων σε runtime

    Ρίξε μια ματιά στο Resource Application Block του Enterprise Library, νομίζω ότι κάνει αυτό που θέλεις.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  08-08-2008, 13:52 44004 σε απάντηση της 43997

    Απ: φόρτωμα resx αρχειων σε runtime

    Το Resource Application Block είναι κάπως overkill σε αυτή την περίπτωση, καθώς αυτό που ζητάει ο angarato είναι πως να χρησιμοποιήσει το default functionality. Το Resource Application Block χτίζει πάνω σε αυτό για να φορτώσει τα resources από διαφορετικές πηγές. Από εκεί και πέρα η χρήση του είναι η ίδια με το built-in functionality. Θα πρέπει πρώτα κανείς να καταλάβει το built-in localization και μετά να προχωρήσει παραπέρα.

    Η αλήθεια είναι ότι δεν καταλαβαίνω ακριβώς τί θέλει. Αν κατάλαβα καλά, δεν θέλει να κάνει embed τα resources. Ο τρόπος περιγράφεται ήδη στο documentation. Επίσης θέλει να ορίζει τη γλώσσα σε κάποιο αρχείο? Aυτό υποστηρίζεται ήδη για web applications μέσω του <globalization> element. Οι WinForms εφαρμογές δεν έχουν κάτι αντίστοιχο, αλλά είναι πανεύκολο να προσθέσει κανείς ένα application setting με το όνομα του culture, π.χ. "el-GR" και στον κώδικα να δημιουργεί και να θέτει το επιθυμητό culture. Αν μάλιστα φροντίσει το setting να είναι User setting θα μπορεί να αποθηκεύσει την προτίμηση του κάθε χρήστη ξεχωριστά. Από την άλλη, συνήθως ο χρήστης έχει ήδη δηλώση την προτίμηση του όταν έθεσε το locale του υπολογιστή του.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  08-08-2008, 14:22 44005 σε απάντηση της 44004

    Απ: φόρτωμα resx αρχειων σε runtime

    Θελω να μεταφραζεται η εφαρμογη χωρις να θελει συννεχεια compile .
     δηλαδη να μπρει ο καποιος user να βρει τα resx αρχεια  καπου στο pc του και να τα τροποποιησει βαζωντας μια εξτρα γλωσσα
    και μετα να τα φορωνι απο καπια επιλογη στην εφαρμογη . η εφαρμογη ετσι οπως την εκανα απως δεν παιρνει την γλωσσα των windows
    αλλα ην γλωσσα που ειναι ριθμισμενη να παιρνει .

     π.χ. αν  εχεις αγλικα win και σε ενα αρχειο xml ή txt(δεν θυμαμαι πως ακριβως ειναι)  λεει σε καποιο μερος el-GR   θ φορτωσει την ελληνικη γλωσσα.



    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  08-08-2008, 14:40 44006 σε απάντηση της 44005

    Απ: φόρτωμα resx αρχειων σε runtime

    Παναγιώτη, είναι λίγο overkill όντως, απλώς δε θυμόμαι αν υπάρχει η δυνατότητα να φορτώσεις RESX αρχεία από κάποια εφαρμογή χωρίς custom parser. Τελικά βλέπω ότι μάλλον δεν χρειάζεται κάτι τέτοιο.

    angarato_surion, το πρόβλημα είναι ότι δεν εξηγείς επακριβώς (και με αρκετή συνοχή στα γραπτά σου) το τι θέλεις να κάνεις. Για παράδειγμα, λες ότι έκανες την εφαρμογή να επιλέγει σε ποια γλώσσα θα εκκινήσει. Πώς το πέτυχες αυτό; Χρησιμοποιείς τις built in localization δυνατότητες ή με κάποιον δικό σου τρόπο (πχ custom xml αρχεία);

    Δεν χρειάζεσαι τα .resx αρχεία κατά την εκτέλεση της εφαρμογής για να κάνεις αυτό που θέλεις (και κακώς σου πρότεινα το R.A.B), αν δεις πώς δουλεύουν από default τα resources στο .net και με την χρήση satellite assemblies, μπορείς να επιτύχεις αυτό που ζητάς.

    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  08-08-2008, 17:49 44011 σε απάντηση της 44006

    Απ: φόρτωμα resx αρχειων σε runtime

    καθε φορα που τρεχει εφαρμοζει αυτςν τον κωδικα

    1
    2
    3
    4
    5
    6
    7
    8
    SelectedCulture = new CultureInfo(langcode );

    if (SelectedCulture != null)
    {

    Thread.CurrentThread.CurrentUICulture = SelectedCulture;

    }
    οπου την τιμη του lnagcode ειναι μια τιμη sring που την διαβαζει απ οκαποιο αρχειο, κοινως δεν ελενχω  τι γλωσσα ειναι το λειτουεγικο , δεν με νοιαζει σε τι γλωωσα ειναι (απο προεπιλεγμενα τρεχει στην ελληνικη , σε αυτην την γλωωσα ηταν τα παντα στην αρχη):P
    στο release φακελο φτοιαχνε κατι υποφακελους με αρχεα  της μορφης εφαρμογησ.locale.dll  ταυτα τα αρχεια πως θα τα τροποποιησει ο χρηστης γιανα μεταφρασει την εφαρμογη  χωρις να εχει τον κωδικα ; αυτο ζηταω ..

    το satelite assembly τι ειναι ακριβως;

    μακαρι να μπορουσα να κανω custom xml αρχειο αλαλ διστιχως εκει μαλακιστικε ολη η εφαρμογη πολλα αντικειμενα δεν τα μετεφραζε ...


    κοινως θελω ο χρηστης να μπορει να μεταφραζει την εφαρμογη χωρις να χρειαζεται compile , απλω να την εχει εγκατεστημενη στο pc του.
     

    Υδροβάση(Hydrobase)
    profiles :
    codeplex
    sourceforge
    google code

    Υλοποιώ εφαρμογές υπό πληρωμή απλώς επικοινωνήστε μαζί μου
  •  08-08-2008, 18:00 44013 σε απάντηση της 44011

    Απ: φόρτωμα resx αρχειων σε runtime

    Δηλαδή η ερώτηση σου δεν είναι πως θα εμφανιστούν τα ελληνικά strings αλλά πως ο ίδιος ο χρήστης θα γράψει τις μεταφράσεις των strings? Γιατί δεν το λες από την αρχή?

    Καταρχήν, αν δεις στο documentation περιγράφει το WinRes.exe για να γράψεις τα μεταφρασμένα strings. Το winres όμως είναι κυρίως εργαλείο για προγραμματιστές και δεν θα βολέψει καθόλου τους απλούς χρήστες. Μπορείς όμως να φτιάξεις δικούς σου ResourceReaders οι οποίοι θα διαβάζουν είτε από τη βάση είτε από XML file. Στην περίπτωση σου μάλιστα το RAB μπορεί να βοηθήσει καθώς κάνει ακριβώς αυτό. Το UI για την παρουσίαση και τη μετάφραση θα πρέπει να το γράψεις μόνος σου όμως.

    Το έχουμε ξαναπεί πάντως ότι για να πάρεις γρήγορη και σωστή απάντηση θα πρέπει οι ερωτήσεις σου να είναι σαφείς. Χρειάστηκαν 7 posts για να καταλάβουμε τελικά τί ήθελες να πεις.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-08-2008, 12:52 44021 σε απάντηση της 44013

    Απ: φόρτωμα resx αρχειων σε runtime

    Νομίζω ότι ο Δημήτρης (papadi) έχει φτιάξει ένα τέτοιο εργαλείο, ρίξε μια ματιά στο site του (www.papadi.gr).


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems