Αρχεία που αφορούν γλώσσες

Τα τμήματα είναι ένας εύκολος τρόπος για τη συσκευασία μεταφράσεων εθνικών γλωσσών.   Ας δούμε λεπτομερέστερα τη δομή καταλόγου που χρησιμοποιείται για την εγκατάσταση αρχείων μετάφρασης που αφορούν κάποια γλώσσα.  Αυτή η δομή καταλόγου χρησιμοποιείται ανεξάρτητα από το εάν τα μεταφρασμένα αρχεία συσκευάζονται σε κάποιο τμήμα ή διανέμονται στην αρχική πρόσθετη λειτουργία.

Υπάρχουν τρεις μηχανισμοί για τον εντοπισμό αρχείων που αφορούν κάποια γλώσσα σε μια πρόσθετη λειτουργία.  

Είναι σημαντικό να γίνει κατανοητός ο μηχανισμός που χρησιμοποιείται για την πρόσβαση σε οποιοδήποτε αρχείο το οποίο πρέπει να μεταφραστεί έτσι ώστε να γνωρίζετε πώς θα ονομάσετε το αρχείο και σε ποιά θέση θα το τοποθετήσετε στο σχετικό σύστημα αρχείων της πρόσθετης λειτουργίας.

Κύριος μηχανισμός πλατφόρμας

Ο πυρήνας καθορίζει μια δομή καταλόγου η οποία χρησιμοποιεί υποκαταλόγους γλωσσών για αρχεία που διαφέρουν.  Τα μεταφρασμένα αρχεία τοποθετούνται σε έναν κατάλογο με όνομα nl στην πρόσθετη λειτουργία.  Γ ια παράδειγμα, η ακόλουθη διακλάδωση εγκατάστασης δείχνει μια συνηθισμένη (χωρίς κώδικα) πρόσθετη λειτουργία με μεταφράση του σχετικού αρχείου γλώσσαςabout.properties.  Οι διάφορες μεταφράσεις εμφανίζονται σαν να προέρχονται από κάποιο τμήμα της πρόσθετης λειτουργίας παρά από την ίδια την πρόσθετη λειτουργία.  Είναι κάτι συνηθισμένο κατά την αποστολή μεταφράσεων ξεχωριστά από τη βάση, αλλά μπορείτε επίσης να τοποθετήσετε τον υποκατάλογο nl κάτω από την ίδια την πρόσθετη λειτουργία.

acmeweb/
  eclipse/
    plugins/
      com.example.acme.acmewebsupport_1.0.0/
        plugin.xml
        about.properties    (default locale)
      com.example.acme.fragmentofacmewebsupport_1.0.0/
        fragment.xml   (a fragment of com.example.acme.acmewebsupport 1.0.0)
        nl/
          fr/
            about.properties  (French locale)
            CA/
              about.properties  (French Canadian locale)
            FR/
              EURO/
                about.properties (French France Euros)
          en/
            about.properties  (English locale)
            CA/
              about.properties  (English Canadian locale)
            US/
              about.properties (English US locale)
         de/
            about.properties (German locale) 

Τα αρχεία που πρόκειται να μεταφραστούν δεν περιέχονται στα αρχεία JAR.  Κάθε αρχείο θα πρέπει να έχει ακριβώς το ίδιο όνομα αρχείου, αλλά να βρίσκεται σε υποκαταλόγους κάτω από τον υποκατάλογο nl στη ρίζα του τμήματος (ή της πρόσθετης λειτουργίας).

Η πρόσβαση στο περιβάλλον εκτέλεσης επιτυγχάνεται μόνο για το πιο συγκεκριμένο αρχείο.   Στις διαδρομές αρχείου γίνεται αναζήτηση ως τμήμα των μηχανισμών Platform.find, IPluginDescriptor.find και Plugin.find.  Για παράδειγμα, ας υποθέσουμε ότι η προεπιλεγμένη γλώσσα είναι en_CA, και η πρόσθετη λειτουργία κάνει αναζήτηση για το αρχείο about.properties ως εξής:

somePlugin.find("$nl$/about.properties");

Η μέθοδος θα επιστρέψει ένα URL που θα αντιστοιχεί στο πρώτο αποτέλεσμα about.properties που εντοπίζεται σύμφωνα με την ακόλουθη σειρά:

com.example.acme.acmewebsupport_1.0.0/nl/en/CA/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/CA/about.properties
 ...  		<any other fragments>
com.example.acme.acmewebsupport_1.0.0/nl/en/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/nl/en/about.properties
 ...
com.example.acme.acmewebsupport_1.0.0/about.properties
com.example.acme.fragmentofacmewebsupport_1.0.0/about.properties

Ο μηχανισμός αυτός χρησιμοποιείται από τις πρόσθετες λειτουργίες για αναζήτηση γνωστών ονομάτων αρχείων μέσα σε άλλες πρόσθετες λειτουργίες.  Περιλαμβάνει τα ακόλουθα γνωστά ονόματα:

(Σημείωση:  Τα ονόματα plugin.properties και fragment.properties απουσιάζουν από τον κατάλογο. Η επεξεργασία τους γίνεται με διαφορετικό εν μέρει τρόπο και περιγργάφεται παρακάτω.)

Δέσμες πόρων Java

Ο τυπικός χειρισμός Java των δεσμών πόρων ιδιότητας χρησιμοποιείται για άλλα αρχεία.  Τα μεταφρασμένα αρχεία περιέχονται στο αρχείο JAR, με το κάθε αρχείο ιδιοτήτων να έχει ένα συγκεκριμένο τοπικό όνομα, όπως "message_en_CA.properties".  Τα αρχεία αυτά βρίσκονται σε υποκαταλόγους που αφορούν τη συσκευασία και μπορεί να εμφανίζονται στην ίδια την πρόσθετη λειτουργία ή σε ένα από τα τμήματά της.  Κάθε μεταφρασμένο αρχείο ιδιοτήτων μπορεί να εμφανίζεται τμηματικά δεδομένου ότι η αναζήτηση κλειδιών αποκτά πρόσβαση σε μια καλά προσδιορισμένη αλυσίδα αρχείων ιδιοτήτων.

Μηχανισμός ιδιοτήτων πρόσθετης λειτουργίας

Ο μηχανισμός που χρησιμοποιείται για τη μετάφραση των αρχείων ιδιοτήτων πρόσθετης λειτουργίας χρησιμοποιεί τη σύμβαση ονοματοδοσίας των δεσμών των πόρων Java. Ωστόσο, τα αρχεία πρέπει να βρίσκονται στη ρίζα της πρόσθετης λειτουργίας ή στη ρίζα τμήματος αυτής της πρόσθετης λειτουργίας. Οι ίδιοι κανόνες εφαρμόζονται για τη μετάφραση του MANIFEST.MF.

Καθορισμός τμημάτων NL

Το σχήμα των τμημάτων NL έχει εξελιχθεί ελαφρώς από την έκδοση 2.1. Προηγουμένως όλα τα αρχεία μετάφρασης NL (συμπεριλαμβανομένων των ιδιοτήτων πρόσθετης λειτουργίας) παρέχονταν σε ένα jar. Επρόκειτο για μια διαδικασία χωρίς συνέπεια αφού το αρχείο ιδιοτήτων πρόσθετης λειτουργίας παρεχόταν στη ρίζα της πρόσθετης λειτουργίας.
Για να προσαρμόσετε το τμήμα NL σας στο νέο μοντέλο, αφαιρέστε τα αρχεία μετάφρασης ιδιοτήτων πρόσθετης λειτουργίας από το jar και τοποθετήστε τα στη ρίζα του τμήματος ως αδελφικά στοιχεία του τμήματος .xml. Για παράδειγμα, το νέο σχήμα του τμήματος NL για το org.eclipse.ui.workbench είναι το εξής:

  org.eclipse.ui.workbench.nl/
     fragment.xml
     plugin_fr.properties
     plugin_pt_BR.properties
     ...
     nl1.jar