pbp Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Γεια σας, έστω ότι έχω φτιάξει την κλάση > import java.util.ListResourceBundle; /** * * @author pbp */ public class Localization_en extends ListResourceBundle{ private Object[][] contents = { {"charset", "Cp1252"}, {"sayhello", "Hello my friends!"}, {"how", "How are you today?"}, }; @Override protected Object[][] getContents() { return contents; } } και την χρησιμοποιώ κατάλληλα σε ένα πρόγραμμα για να τυπώνω μηνύματα στην οθόνη ανάλογα με τη γλώσσα που επιλέγει ο χρήστης στην αρχή του προγράμματος (στην προκειμένη περίπτωση Αγγλική). Θα μπορούσατε να μου πείτε πως μπορώ να φτιάξω μια υπερκλάση αυτής της κλάσης ώστε οποιοσδήποτε να μπορεί να κληρονομήσει αυτή την υπερκλάση με σκοπό να φτιάξει μία παραλλαγή του προγράμματος που έχω κάνει στη δική του γλώσσα? Ευχαριστώ.
nexuss Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Γιατί δεν δοκιμάζεις να φτιάξεις ένα interface με τις μεθόδους που θέλεις; Θα μπορείς να το χρησιμοποιείς σε όποια κλάση θέλεις, ακόμα και σε αυτές που έχουν ήδη κληρονομήσει από κάποια άλλη κλάση (γιατί στη java μια κλάση μπορεί να κληρονομήσει μόνο από μια άλλη).
pbp Δημοσ. 5 Ιανουαρίου 2012 Μέλος Δημοσ. 5 Ιανουαρίου 2012 Γιατί δεν δοκιμάζεις να φτιάξεις ένα interface με τις μεθόδους που θέλεις; Θα μπορείς να το χρησιμοποιείς σε όποια κλάση θέλεις, ακόμα και σε αυτές που έχουν ήδη κληρονομήσει από κάποια άλλη κλάση (γιατί στη java μια κλάση μπορεί να κληρονομήσει μόνο από μια άλλη). Το σκέφτηκα αλλά έχω κολλήσει σε 2 πράγματα: 1) η συγκεκριμένη κλάση είναι λίγο περίεργη γιατί άμα πρόσεξες δίνω τιμές στον πίνακα Object έξω από κάποια μέθοδο. Συνεπώς πως μπορώ να το κάνω αυτό με interface? 2) Αν κάποιος αποφασίσει να κληρονομήσει από το interface που θα κάνω πώς θα ξέρει τι πρέπει να βάλει σε αυτές τις θέσεις του πίνακα οι οποίες πρέπει να είναι ίδιες για κάθε κλάση Localization (charset,sayhello,how στη συγκεκριμένη περίπτωση) ώστε να δουλέψει σωστά το πρόγραμμα?
moukoublen Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Γιατί χρειάζεται αυτό που λες; Αφού η ListResourceBundle υπαγορεύει ότι θα επιστρέφεται ένας Object[][]
pbp Δημοσ. 5 Ιανουαρίου 2012 Μέλος Δημοσ. 5 Ιανουαρίου 2012 Γιατί χρειάζεται αυτό που λες; Αφού η ListResourceBundle υπαγορεύει ότι θα επιστρέφεται ένας Object[][] Έχω πει παραπάνω γιατί το χρειάζομαι :/ Εσύ τι εννοείς μ αυτό?
moukoublen Δημοσ. 5 Ιανουαρίου 2012 Δημοσ. 5 Ιανουαρίου 2012 Εσύ θες με κάποιο τρόπο να καθορίσεις ότι ο άλλος θα φτιάξει ενα > private Object[][] contents = { {"charset", "xxx"}, {"sayhello", "xxx"}, {"how", "xxx"}, }; οπου θα έχει οπωσδήποτε τις τιμές "charset","sayhello","how" στην πρώτη στήλη; Η απλά οτι θα επιστρέψει κάποιο Object[][]; Το δεύτερο γίνεται έτσι κι αλλιώς απο την κλάση που κάνεις extend. Τωρα, αν θες το πρώτο, δεν ξέρω πόσο εύκολα γίνεται. Ενδεχομένως να θέλει μπόλικη δουλειά. Ψάξε όμως έτοιμες λύσεις σε σχέση με το resourcing για γλώσσες. Σίγουρα θα υπάρχουν πολλοί έτοιμοι τρόποι.
pbp Δημοσ. 5 Ιανουαρίου 2012 Μέλος Δημοσ. 5 Ιανουαρίου 2012 Εσύ θες με κάποιο τρόπο να καθορίσεις ότι ο άλλος θα φτιάξει ενα > private Object[][] contents = { {"charset", "xxx"}, {"sayhello", "xxx"}, {"how", "xxx"}, }; οπου θα έχει οπωσδήποτε τις τιμές "charset","sayhello","how" στην πρώτη στήλη; Η απλά οτι θα επιστρέψει κάποιο Object[][]; Το δεύτερο γίνεται έτσι κι αλλιώς απο την κλάση που κάνεις extend. Τωρα, αν θες το πρώτο, δεν ξέρω πόσο εύκολα γίνεται. Ενδεχομένως να θέλει μπόλικη δουλειά. Ψάξε όμως έτοιμες λύσεις σε σχέση με το resourcing για γλώσσες. Σίγουρα θα υπάρχουν πολλοί έτοιμοι τρόποι. Το πρώτο θέλω έψαξα αλλά δυστυχώς δεν βρήκα κάτι. Όποιος βρει κάτι ας το αναφέρει εδώ παρακαλώ
nplatis Δημοσ. 6 Ιανουαρίου 2012 Δημοσ. 6 Ιανουαρίου 2012 Νομίζω ότι δυσκολεύεις πολύ τη ζωή σου (και τη ζωή αυτών που θα ήθελαν να μεταφράσουν την εφαρμογή σου -- καθώς τους αναγκάζεις να γράψουν μία ολόκληρη κλάση για να μεταφράσουν την εφαρμογή, και μετά θα πρέπει να την μεταγλωττίσουν πάλι). Μία χειροποίητη λύση είναι η εξής: 1. Για κάθε γλώσσα δημιουργείς ένα αρχείο που έχει την εξής μορφή: > key: translation key: translation όπου key είναι τα κλειδιά σου (charser, sayhello, how) και translation οι αντίστοιχες «μεταφράσεις» στη γλώσσα που σε ενδιαφέρει (από τις πρώτες «:» μέχρι το τέλος της γραμμής). 2. Στο πρόγραμμά σου δημιουργείς ένα HashMap<String, String> στο οποίο αποθηκεύεις τα ζεύγη διαβάζοντάς τα από το αρχείο, και από το οποίο τα διαβάζεις όταν τα χρειάζεσαι. Μάλιστα αν εσύ έχεις ως προκαθορισμένη γλώσσα π.χ. τα Αγγλικά, στα οποία έχεις όλα τα strings του προγράμματος, διαβάζοντας ένα νέο αρχείο γλώσσας αντικαθιστάς μόνο αυτά που έχουν μεταφραστεί και για τα υπόλοιπα σου μένουν τα αγγλικά. Με αυτό τον τρόπο χρειάζεται απλώς να ξέρεις το όνομα του αρχείου που περιέχει τις μεταφράσεις για κάποια γλώσσα.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα