Mi proyecto incluye varios complementos y cada complemento incluye el archivo plugin.properties con cerca de 20 traducciones. El archivo MANIFEST.MF define el nombre de los archivos de propiedades donde se almacenan las cadenas de complementos externos.mecanismo de plugin.properties en eclipse RCP
Bundle-Localization: plugin
El nombre del plugin defino como
%plugin.name
Eclipse buscará el "% plugin.name" en el archivo plugin.properties en tiempo de ejecución.
¿Qué clase leyó la entrada MANIFEST.MF Bundle-Localization y en qué punto se busca la cadena con el sufijo inicial '%' en el archivo "plugin.properties"?
Quiero encontrar y aplicar un parche a estas clases de esa manera, que primero puedo buscar en otros directorios/archivos el identificador "% plugin.name". Con este nuevo mecanismo puedo agregar fragmentos a mi producto y sobrescribir líneas individuales en un archivo "plugin.properties" sin cambiar el plugin original. Con estos mecanismos podría crear un proceso de compilación para múltiples clientes simplemente agregando diferentes fragmentos. Los fragmentos incluyen los nombres de los clientes y las cadenas especiales que desean cambiar.
Quiero hacerlo de esa manera, porque el mecanismo de fragmento solo agrega archivos al plugin original. Cuando el archivo "plugin.properties" está en el complemento, los archivos "plugin.properties" del fragmento se ignoran.
ACTUALIZACIÓN 1:
El método
class ManifestLocalization{
...
protected ResourceBundle getResourceBundle(String localeString) {
}
...
}
devuelve el ResourceBundle del archivo de propiedades para la cadena de localización dada. Cuando alguien dice que ahora puedo examinar primero el fragmento para obtener la ruta del recurso, publíquelo.
ACTUALIZACIÓN 2:
El método en la clase ManifestLocalization
private URL findInResolved(String filePath, AbstractBundle bundleHost) {
URL result = findInBundle(filePath, bundleHost);
if (result != null)
return result;
return findInFragments(filePath, bundleHost);
}
busque por el archivo de propiedades y la memoria caché ella. Las traducciones pueden obtenerse del archivo en caché. El problema es que el archivo completo está en caché y no solo las traducciones.
Una solución sería leer primero el archivo de fragmento, que leer el archivo de paquete. Cuando ambos archivos están existentes, combínelos en un archivo y escriba el nuevo archivo de propiedades en el disco. La URL del nuevo archivo de propiedades regresa, de modo que el nuevo archivo de propetries pueda almacenarse en caché.
¿Dónde puedo encontrar el método populate? ¿O tengo que escribirlo? –
¿Puede poner más información en su respuesta? ¡Gracias! –