Il mio progetto include più plugin e ogni plugin include il file plugin.properties con quasi 20 traduzioni. Il file MANIFEST.MF definisce il nome dei file delle proprietà in cui sono archiviate le stringhe del plugin esterno.meccanismo plugin.properties in eclipse RCP
Bundle-Localization: plugin
Il nome del plugin definisco come
%plugin.name
Eclipse cercherà la "% plugin.name" nel file plugin.properties in fase di esecuzione.
Quale classe legge la voce di localizzazione del pacchetto MANIFEST.MF ea quale punto viene cercata la stringa con il suffisso iniziale '%' nel file "plugin.properties"?
Voglio trovare e applicare patch a queste classi in questo modo, che posso prima cercare in qualche altro file/directory per l'identificatore "% plugin.name". Con questo nuovo meccanismo posso aggiungere frammenti al mio prodotto e sovrascrivere singole righe in un file "plugin.properties" senza modificare il plug-in originale. Con questo meccanismo posso creare un processo di compilazione per più clienti semplicemente aggiungendo diversi frammenti. I frammenti includono i nomi dei clienti e la stringa speciale che vogliono cambiare.
Voglio farlo in questo modo, perché il meccanismo dei frammenti aggiunge solo i file al plug-in originale. Quando il file "plugin.properties" è presente nel plug-in, i frammenti "plugin.properties" vengono ignorati.
UPDATE 1:
Il metodo
class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
restituisce il ResourceBundle delle proprietà del file per il data stringa locale. Quando qualcuno mostra come posso ora cercare prima nel frammento per ottenere il percorso della risorsa, per favore pubblicatelo.
UPDATE 2:
Il metodo nella classe ManifestLocalization
private URL findInResolved(String filePath, AbstractBundle bundleHost) {
URL result = findInBundle(filePath, bundleHost);
if (result != null)
return result;
return findInFragments(filePath, bundleHost);
}
ricerche per le proprietà del file e la cache di esso. Le traduzioni possono essere ottenute dal file memorizzato nella cache. Il problema è che il file completo è memorizzato nella cache e non singole traduzioni.
Una soluzione sarebbe quella di leggere prima il file del frammento, piuttosto che leggere il file del pacchetto. Quando entrambi i file sono esistenti, unirli in un unico file e scrivere il nuovo file delle proprietà sul disco. Ritorna l'URL del nuovo file delle proprietà, in modo che il nuovo file di proprietà possa essere memorizzato nella cache.
Dove posso trovare il metodo di popolamento? O devo scriverlo? –
Puoi inserire più informazioni nella tua risposta. Grazie! –